iron_worker 2.3.16 → 2.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/Rakefile +31 -0
  4. data/iron_worker.gemspec +27 -0
  5. data/lib/generators/iron_worker/templates/template_worker.erb +7 -0
  6. data/lib/iron_worker/service.rb +1 -1
  7. data/lib/iron_worker/version.rb +4 -0
  8. data/test/Gemfile +36 -0
  9. data/test/Gemfile.lock +169 -0
  10. data/test/README.md +5 -0
  11. data/test/batch_run.rb +121 -0
  12. data/test/config_sample.yml +13 -0
  13. data/test/models/cool_model.rb +7 -0
  14. data/test/models/db_model.rb +6 -0
  15. data/test/models/model_1.rb +16 -0
  16. data/test/models/model_2.rb +16 -0
  17. data/test/quick_run.rb +36 -0
  18. data/test/quick_schedule.rb +18 -0
  19. data/test/resources/something.yml +4 -0
  20. data/test/simple_script.rb +11 -0
  21. data/test/test_base.rb +79 -0
  22. data/test/test_database.rb +31 -0
  23. data/test/test_gems.rb +31 -0
  24. data/test/test_inheritance.rb +25 -0
  25. data/test/test_iron_worker.rb +194 -0
  26. data/test/test_merging.rb +51 -0
  27. data/test/test_non_worker_script.rb +14 -0
  28. data/test/test_rails.rb +35 -0
  29. data/test/test_scheduling.rb +74 -0
  30. data/test/test_scheduling_no_active_support.rb +37 -0
  31. data/test/test_service.rb +28 -0
  32. data/test/test_uploads.rb +30 -0
  33. data/test/test_webhooks.rb +45 -0
  34. data/test/v2quick.rb +29 -0
  35. data/test/workers/awesome_job.rb +26 -0
  36. data/test/workers/aws_s3_worker.rb +10 -0
  37. data/test/workers/big_data_worker.rb +15 -0
  38. data/test/workers/big_gems_worker.rb +35 -0
  39. data/test/workers/cool_worker.rb +14 -0
  40. data/test/workers/db_worker.rb +27 -0
  41. data/test/workers/fail_worker.rb +10 -0
  42. data/test/workers/gem_dependency_worker.rb +20 -0
  43. data/test/workers/hacker_worker.rb +65 -0
  44. data/test/workers/iw_test_worker.rb +22 -0
  45. data/test/workers/iw_test_worker_2.rb +53 -0
  46. data/test/workers/iw_test_worker_3.rb +17 -0
  47. data/test/workers/local_vs_remote_worker.rb +9 -0
  48. data/test/workers/merging_worker.rb +40 -0
  49. data/test/workers/mq_worker.rb +21 -0
  50. data/test/workers/one_line_worker.rb +10 -0
  51. data/test/workers/prawn_worker.rb +32 -0
  52. data/test/workers/progress_worker.rb +26 -0
  53. data/test/workers/qb_worker.rb +17 -0
  54. data/test/workers/rails_worker.rb +24 -0
  55. data/test/workers/rails_worker2.rb +12 -0
  56. data/test/workers/requiring_worker.rb +4 -0
  57. data/test/workers/running_back_worker.rb +7 -0
  58. data/test/workers/scheduled_worker.rb +15 -0
  59. data/test/workers/second_worker.rb +16 -0
  60. data/test/workers/third_worker.rb +6 -0
  61. data/test/workers/webhook_worker.rb +7 -0
  62. data/test/zip_vs_gzip.rb +26 -0
  63. metadata +146 -91
  64. data/VERSION.yml +0 -5
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fe522253fc444a2aee1f6f474ec587d671c25e30
4
+ data.tar.gz: 7e71a9926f99b579e03a776a6337aa9ec46b7335
5
+ SHA512:
6
+ metadata.gz: 75c288511be5d4ff6dc27a4f554435775004142da36980e01bc0c48d8a3a0000212a424b6a0726e20319e5e5d0fe02c06572348382fc5bb38e3bfd8682de27ef
7
+ data.tar.gz: a522f0b44e0e050aed2a697c5498f9de884fd77a72831d00262f78a8d9d4ebd9ccc8d0c773ca5c083aee952223a8a4e96be4c1a77e2d5a2744f82c0cde22018c
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ .idea
2
+ pkg
3
+ test/config.yml
4
+ *.sublime-*
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ #require "rubygems"
2
+ #require "bundler/setup"
3
+
4
+ require 'rake/dsl_definition' # temporary I think?
5
+ require 'rake/testtask'
6
+ require 'jeweler2'
7
+
8
+ Jeweler::Tasks.new do |gemspec|
9
+ gemspec.name = "iron_worker"
10
+ gemspec.summary = "The official IronWorker gem for IronWorker by Iron.io. http://www.iron.io"
11
+ gemspec.description = "The official IronWorker gem for IronWorker by Iron.io. http://www.iron.io"
12
+ gemspec.email = "travis@iron.io"
13
+ gemspec.homepage = "http://www.iron.io"
14
+ gemspec.authors = ["Travis Reeder"]
15
+ gemspec.files = FileList['VERSION.yml','init.rb', 'lib/**/*.rb', 'rails/**/*.rb']
16
+ gemspec.add_dependency 'zip'
17
+ gemspec.add_dependency 'rest-client'
18
+ gemspec.add_dependency 'rest'
19
+ gemspec.add_dependency 'bundler'
20
+ #gemspec.add_dependency 'typhoeus'
21
+ gemspec.required_ruby_version = '>= 1.9'
22
+ end
23
+ Jeweler::GemcutterTasks.new
24
+
25
+ Rake::TestTask.new do |t|
26
+ t.libs << "test"
27
+ t.test_files = FileList['test/test*.rb']
28
+ t.verbose = true
29
+ end
30
+
31
+
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../lib/iron_worker/version', __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.authors = ["Travis Reeder"]
5
+ gem.email = ["travis@iron.io"]
6
+ gem.description = "DEPRECATED!! Use iron_worker_ng now. The official IronWorker gem for IronWorker by Iron.io. http://www.iron.io"
7
+ gem.summary = "DEPRECATED!! Use iron_worker_ng now. The official IronWorker gem for IronWorker by Iron.io. http://www.iron.io"
8
+ gem.homepage = "https://github.com/iron-io/iron_worker_ruby"
9
+
10
+ gem.files = `git ls-files`.split($\)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
+ gem.name = "iron_worker"
14
+ gem.require_paths = ["lib"]
15
+ gem.version = IronWorker::VERSION
16
+
17
+ gem.required_rubygems_version = ">= 1.3.6"
18
+ gem.required_ruby_version = Gem::Requirement.new(">= 1.9")
19
+ gem.add_runtime_dependency "iron_core", ">= 0.5.1"
20
+
21
+ gem.add_runtime_dependency 'zip'
22
+ gem.add_runtime_dependency 'rest-client'
23
+ gem.add_runtime_dependency 'rest'
24
+ gem.add_runtime_dependency 'bundler'
25
+
26
+ end
27
+
@@ -0,0 +1,7 @@
1
+ class <%= @camel %> < IronWorker::Base
2
+
3
+ def run
4
+ log "Your code goes in this bit"
5
+ end
6
+
7
+ end
@@ -93,7 +93,7 @@ module IronWorker
93
93
 
94
94
 
95
95
  def self.heroku?
96
- !Gem::GemPathSearcher.private_instance_methods.include?(:_deprecated_initialize)
96
+ !Gem::GemPathSearcher.private_instance_methods.include?(:_deprecated_initialize) rescue false
97
97
  end
98
98
 
99
99
  def webhook
@@ -0,0 +1,4 @@
1
+ module IronWorker
2
+ VERSION = "2.3.17"
3
+ end
4
+
data/test/Gemfile ADDED
@@ -0,0 +1,36 @@
1
+ # These are required for the tests
2
+
3
+ source 'http://rubygems.org'
4
+
5
+ gem 'iron_worker'
6
+
7
+ group :test do
8
+ gem 'rack'
9
+ gem 'test-unit'
10
+ gem 'minitest'
11
+ gem 'jeweler2'
12
+ gem 'zip'
13
+ gem 'rest'
14
+ gem 'typhoeus'
15
+ gem 'uber_config'
16
+
17
+ gem 'simple_record'
18
+ gem 'activesupport'
19
+ gem 'simple_record'
20
+ gem 'dropbox', '1.2.3'
21
+ gem 'pusher'
22
+ gem 'carrierwave'
23
+ gem 'aws-s3'
24
+ gem 'mechanize'
25
+ gem 'mail'
26
+ gem 'timecop'
27
+ gem 'fog'
28
+ gem 'logglier'
29
+ #gem 'mysql2'
30
+ gem 'mini_fb'
31
+ gem 'iron_mq'
32
+ gem 'prawn'
33
+ gem 'pdf-reader'
34
+ gem 'concur'
35
+ gem 'mechanize'
36
+ end
data/test/Gemfile.lock ADDED
@@ -0,0 +1,169 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ Ascii85 (1.0.2)
5
+ activesupport (3.2.8)
6
+ i18n (~> 0.6)
7
+ multi_json (~> 1.0)
8
+ aws (2.5.8)
9
+ http_connection
10
+ http_connection
11
+ uuidtools
12
+ uuidtools
13
+ xml-simple
14
+ xml-simple
15
+ aws-s3 (0.6.3)
16
+ builder
17
+ mime-types
18
+ xml-simple
19
+ builder (3.1.4)
20
+ carrierwave (0.5.8)
21
+ activesupport (~> 3.0)
22
+ concur (1.0.0)
23
+ faraday
24
+ faraday
25
+ domain_name (0.5.4)
26
+ unf (~> 0.0.3)
27
+ dropbox (1.2.3)
28
+ json (>= 1.2.0)
29
+ mechanize (>= 1.0.0)
30
+ multipart-post (>= 1.0)
31
+ oauth (>= 0.3.6)
32
+ ethon (0.5.3)
33
+ ffi (~> 1.0.11)
34
+ mime-types (~> 1.18)
35
+ excon (0.16.7)
36
+ faraday (0.8.4)
37
+ multipart-post (~> 1.1)
38
+ ffi (1.0.11)
39
+ fog (1.7.0)
40
+ builder
41
+ excon (~> 0.14)
42
+ formatador (~> 0.2.0)
43
+ mime-types
44
+ multi_json (~> 1.0)
45
+ net-scp (~> 1.0.4)
46
+ net-ssh (>= 2.1.3)
47
+ nokogiri (~> 1.5.0)
48
+ ruby-hmac
49
+ formatador (0.2.4)
50
+ git (1.2.5)
51
+ hashery (2.0.1)
52
+ hashie (1.2.0)
53
+ http_connection (1.4.2)
54
+ i18n (0.6.1)
55
+ iron_core (0.4.3)
56
+ rest (>= 2.0.2)
57
+ iron_mq (2.1.3)
58
+ iron_core (>= 0.4.2)
59
+ iron_worker (2.3.15)
60
+ bundler
61
+ bundler
62
+ rest
63
+ rest
64
+ rest-client
65
+ rest-client
66
+ zip
67
+ zip
68
+ jeweler2 (2.0.9)
69
+ git (>= 1.2.5)
70
+ json (1.7.5)
71
+ logglier (0.2.8)
72
+ mail (2.4.4)
73
+ i18n (>= 0.4.0)
74
+ mime-types (~> 1.16)
75
+ treetop (~> 1.4.8)
76
+ mechanize (2.5.1)
77
+ domain_name (~> 0.5, >= 0.5.1)
78
+ mime-types (~> 1.17, >= 1.17.2)
79
+ net-http-digest_auth (~> 1.1, >= 1.1.1)
80
+ net-http-persistent (~> 2.5, >= 2.5.2)
81
+ nokogiri (~> 1.4)
82
+ ntlm-http (~> 0.1, >= 0.1.1)
83
+ webrobots (~> 0.0, >= 0.0.9)
84
+ mime-types (1.19)
85
+ mini_fb (1.2.0)
86
+ hashie
87
+ hashie
88
+ rest-client
89
+ rest-client
90
+ minitest (4.2.0)
91
+ multi_json (1.3.7)
92
+ multipart-post (1.1.5)
93
+ net-http-digest_auth (1.2.1)
94
+ net-http-persistent (2.8)
95
+ net-scp (1.0.4)
96
+ net-ssh (>= 1.99.1)
97
+ net-ssh (2.6.1)
98
+ nokogiri (1.5.5)
99
+ ntlm-http (0.1.1)
100
+ oauth (0.4.7)
101
+ pdf-reader (1.2.0)
102
+ Ascii85 (~> 1.0.0)
103
+ hashery (~> 2.0)
104
+ ruby-rc4
105
+ polyglot (0.3.3)
106
+ prawn (0.12.0)
107
+ pdf-reader (>= 0.9.0)
108
+ ttfunk (~> 1.0.2)
109
+ pusher (0.10.0)
110
+ multi_json (~> 1.0)
111
+ signature (~> 0.1.4)
112
+ rack (1.4.1)
113
+ rest (2.1.0)
114
+ net-http-persistent
115
+ rest-client (>= 0.3.0)
116
+ rest-client (1.6.7)
117
+ mime-types (>= 1.16)
118
+ ruby-hmac (0.4.0)
119
+ ruby-rc4 (0.1.5)
120
+ signature (0.1.4)
121
+ simple_record (2.2.0)
122
+ aws
123
+ concur
124
+ test-unit (2.5.2)
125
+ timecop (0.5.3)
126
+ treetop (1.4.12)
127
+ polyglot
128
+ polyglot (>= 0.3.1)
129
+ ttfunk (1.0.3)
130
+ typhoeus (0.5.1)
131
+ ethon (= 0.5.3)
132
+ uber_config (1.0.5)
133
+ unf (0.0.5)
134
+ unf_ext
135
+ unf_ext (0.0.5)
136
+ uuidtools (2.1.3)
137
+ webrobots (0.0.13)
138
+ xml-simple (1.1.2)
139
+ zip (2.0.2)
140
+
141
+ PLATFORMS
142
+ ruby
143
+
144
+ DEPENDENCIES
145
+ activesupport
146
+ aws-s3
147
+ carrierwave
148
+ concur
149
+ dropbox (= 1.2.3)
150
+ fog
151
+ iron_mq
152
+ iron_worker
153
+ jeweler2
154
+ logglier
155
+ mail
156
+ mechanize
157
+ mini_fb
158
+ minitest
159
+ pdf-reader
160
+ prawn
161
+ pusher
162
+ rack
163
+ rest
164
+ simple_record
165
+ test-unit
166
+ timecop
167
+ typhoeus
168
+ uber_config
169
+ zip
data/test/README.md ADDED
@@ -0,0 +1,5 @@
1
+ When testing workers, be sure to run:
2
+
3
+ sudo rake install
4
+
5
+ Because the uploaded gem will be the one that is installed on the system.
data/test/batch_run.rb ADDED
@@ -0,0 +1,121 @@
1
+ require_relative 'test_base'
2
+ require_relative 'workers/one_line_worker'
3
+ require_relative 'workers/merging_worker'
4
+ require_relative 'workers/progress_worker'
5
+ require_relative 'workers/mq_worker'
6
+ require 'concur'
7
+ #require_relative 'prawn_worker'
8
+
9
+ class BatchRun < TestBase
10
+
11
+ def test_concur_batch
12
+
13
+ old_log_level = IronWorker.logger.level
14
+ IronWorker.logger.level = Logger::INFO
15
+
16
+ clz = OneLineWorker
17
+ num_tasks = 100
18
+
19
+ worker = clz.new
20
+ worker.upload
21
+
22
+ jobs = []
23
+ executor = Concur::Executor.new_thread_pool_executor(20)
24
+ num_tasks.times do |i|
25
+ jobs << executor.execute do
26
+ begin
27
+ worker2 = clz.new
28
+ puts "queueing #{i}"
29
+ if clz == MqWorker
30
+ worker2.config = {:token=>IronWorker.config.token, :project_id=>IronWorker.config.project_id}
31
+ else
32
+ worker2.x = "hello payload #{i}"
33
+ end
34
+ response_hash = worker2.queue(:priority=>(@config[:priority] || 0))
35
+ puts "response_hash #{i} = " + response_hash.inspect
36
+ assert response_hash["msg"]
37
+ assert response_hash["status_code"]
38
+ assert response_hash["tasks"]
39
+ assert response_hash["status_code"] == 200
40
+ assert response_hash["tasks"][0]["id"].length == 24, "length is #{response_hash["tasks"][0]["id"].length}"
41
+ assert response_hash["tasks"][0]["id"] == worker2.task_id, "id in hash: #{response_hash["tasks"][0]["id"]}, task_id: #{worker2.task_id}. response was #{worker2.response.inspect}"
42
+ worker2
43
+ rescue => ex
44
+ puts "ERROR! #{ex.class.name}: #{ex.message} -- #{ex.backtrace.inspect}"
45
+ raise ex
46
+ end
47
+
48
+ end
49
+ end
50
+
51
+ sleep 10
52
+
53
+ completed_count = 0
54
+ errored_queuing_count = 0
55
+ error_count = 0
56
+ while jobs.size > 0
57
+ jobs.each_with_index do |f, i|
58
+ # p f
59
+ begin
60
+ t = f.get
61
+ # p t
62
+ puts i.to_s + ' task_id=' + t.task_id.to_s
63
+ status_response = t.status # worker.status(t["task_id"])
64
+ puts 'status ' + status_response["status"] + ' for ' + status_response.inspect
65
+ puts 'msg=' + status_response["msg"].to_s
66
+ if status_response["status"] == "complete" || status_response["status"] == "error"
67
+ if true || status_response["status"] == "error"
68
+ puts t.get_log
69
+ end
70
+
71
+ jobs.delete(f)
72
+ completed_count += 1
73
+ puts "#{completed_count} completed so far. #{jobs.size} left..."
74
+ if status_response["status"] == "error"
75
+ error_count += 1
76
+ end
77
+ end
78
+ rescue => ex
79
+ puts 'error! ' + ex.class.name + ' -> ' + ex.message.to_s
80
+ puts ex.backtrace
81
+ errored_queuing_count += 1
82
+ jobs.delete(f)
83
+ end
84
+ end
85
+ puts 'sleep'
86
+ sleep 2
87
+ puts 'done sleeping'
88
+ end
89
+
90
+ puts 'Total completed=' + completed_count.to_s
91
+ puts 'Total errored while queuing=' + errored_queuing_count.to_s
92
+ puts 'Total errored while running=' + error_count.to_s
93
+
94
+ executor.shutdown
95
+
96
+ #tasks = []
97
+ #1000.times do |i|
98
+ # puts "#{i}"
99
+ # worker = ProgressWorker.new
100
+ # #worker = OneLineWorker.new
101
+ # # worker = MergingWorker.new
102
+ # #worker = PrawnWorker.new
103
+ # worker.queue
104
+ # tasks << worker
105
+ #end
106
+ #
107
+ #tasks.each_with_index do |task, i|
108
+ # puts "#{i}"
109
+ # status = task.wait_until_complete
110
+ # p status
111
+ # puts "\n\n\nLOG START:"
112
+ # puts task.get_log
113
+ # puts "LOG END\n\n\n"
114
+ # assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
115
+ #end
116
+ IronWorker.logger.level = old_log_level
117
+
118
+ end
119
+
120
+ end
121
+
@@ -0,0 +1,13 @@
1
+ iron:
2
+ token: MY_TOKEN
3
+ project_id: MY_PROJECT_ID
4
+
5
+ database:
6
+ adapter: mysql2
7
+ host: ec2-ABC.compute-1.amazonaws.com
8
+ port: 3062
9
+ database: MY_DB
10
+ username: MY_USER
11
+ password: MY_PASS
12
+
13
+
@@ -0,0 +1,7 @@
1
+ require 'simple_record'
2
+
3
+ class CoolModel < SimpleRecord::Base
4
+
5
+ has_strings :name
6
+
7
+ end
@@ -0,0 +1,6 @@
1
+ #require 'active_record'
2
+
3
+ class DbModel #< ActiveRecord::Base
4
+
5
+
6
+ end
@@ -0,0 +1,16 @@
1
+
2
+
3
+ class Model1
4
+ attr_accessor :heidi, :ho
5
+
6
+ include IronWorker::UsedInWorker
7
+
8
+ def say_hello
9
+ log "Hi there sir"
10
+ end
11
+
12
+ # testk laksdfj klasj df
13
+ def test
14
+ log 'test'
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+
2
+
3
+ class Model2
4
+ attr_accessor :heidi, :ho
5
+
6
+ include IronWorker::UsedInWorker
7
+
8
+ def say_hello
9
+ log "Hi there sir"
10
+ end
11
+
12
+ # testk laksdfj klasj df
13
+ def test
14
+ log 'test'
15
+ end
16
+ end
data/test/quick_run.rb ADDED
@@ -0,0 +1,36 @@
1
+ require_relative 'test_base'
2
+ require_relative 'workers/one_line_worker'
3
+ require_relative 'workers/progress_worker'
4
+ require_relative 'workers/fail_worker'
5
+
6
+ class QuickRun < TestBase
7
+
8
+ def test_worker
9
+ tasks = []
10
+ 1.times do |i|
11
+ puts "Queuing #{i}"
12
+ worker = OneLineWorker.new
13
+ worker.x = i
14
+ worker.queue
15
+ tasks << worker
16
+ end
17
+
18
+ tasks.each_with_index do |worker, i|
19
+ puts "Waiting for #{i}"
20
+ status = worker.wait_until_complete
21
+ puts "#{i} is complete."
22
+ p status
23
+ puts "error_class: #{status["error_class"]}"
24
+ puts "msg: #{status["msg"]}"
25
+ puts "percent: #{status["percent"]}"
26
+ puts "\n\n\nLOG START:"
27
+ log = worker.get_log
28
+ puts log
29
+ puts "LOG END\n\n\n"
30
+ assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
31
+ assert log.include?("hello")
32
+ end
33
+ end
34
+
35
+ end
36
+
@@ -0,0 +1,18 @@
1
+ require_relative 'test_base'
2
+ require_relative 'one_line_worker'
3
+ require_relative 'merging_worker'
4
+ require_relative 'progress_worker'
5
+ #require_relative 'prawn_worker'
6
+
7
+ class QuickRun < TestBase
8
+
9
+ def test_scheduler_quick
10
+ worker = TestWorker.new
11
+ worker.schedule(:start_at=>10.seconds.from_now)
12
+ status = worker.wait_until_complete
13
+ assert status["status"] == "complete"
14
+ assert status["msg"].present?
15
+ end
16
+
17
+ end
18
+
@@ -0,0 +1,4 @@
1
+ hello:
2
+ world: "how are you?"
3
+
4
+
@@ -0,0 +1,11 @@
1
+ require 'json'
2
+ IronWorker.merge_gem 'rest-client'
3
+
4
+ # load data
5
+ job_data = JSON.load(File.open(File.join(ENV['user_dir'], 'job_data.json')))
6
+
7
+ puts 'x=' + job_data['x']
8
+
9
+ page = RestClient.get "http://www.github.com"
10
+ puts page
11
+ puts 'All good'
data/test/test_base.rb ADDED
@@ -0,0 +1,79 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+
4
+ gem 'test-unit'
5
+ require 'test/unit'
6
+ require 'yaml'
7
+ require 'uber_config'
8
+ begin
9
+ require File.join(File.dirname(__FILE__), '../lib/iron_worker')
10
+ rescue Exception => ex
11
+ puts "Could NOT load current iron_worker: " + ex.message
12
+ raise ex
13
+ end
14
+
15
+ #IronWorker.logger.level = Logger::DEBUG
16
+ IronWorker.service=nil
17
+ IronWorker.config.merged_gems={}
18
+
19
+
20
+ require_relative "workers/iw_test_worker"
21
+ require_relative "workers/iw_test_worker_2"
22
+ require_relative "workers/iw_test_worker_3"
23
+
24
+ class TestBase < Test::Unit::TestCase
25
+
26
+ def setup
27
+ @config = UberConfig.load
28
+ puts "config: " + @config.inspect
29
+ raise "Config is nil! Ensure you have a config file in the proper place." if @config.nil?
30
+
31
+ @token = @config['iron']['token']
32
+ @project_id = @config['iron']['project_id']
33
+ puts "@token: #{@token}"
34
+ # new style
35
+ IronWorker.configure do |config|
36
+ config.token = @token
37
+ config.project_id = @project_id
38
+ config.host = @config['iron']['host'] if @config['iron']['host']
39
+ config.port = @config['iron']['port'] if @config['iron']['port']
40
+ config.scheme = @config['iron']['scheme'] if @config['iron']['scheme']
41
+ config.global_attributes["db_user"] = "sa"
42
+ config.global_attributes["db_pass"] = "pass"
43
+ #config.database = @config["database"]
44
+ config.force_upload = true
45
+ # config.skip_auto_dependencies = true
46
+ end
47
+ end
48
+
49
+ def puts_log(worker)
50
+ puts "LOG START:"
51
+ puts worker.get_log
52
+ puts ":LOG END"
53
+ end
54
+
55
+ def wait_for_task(params={})
56
+ tries = 0
57
+ status = nil
58
+ sleep 1
59
+ while tries < 60
60
+ status = status_for(params)
61
+ puts "status: #{status['status']} -- " + status.inspect
62
+ if status["status"] == "complete" || status["status"] == "error"
63
+ break
64
+ end
65
+ sleep 2
66
+ end
67
+ status
68
+ end
69
+
70
+ def status_for(ob)
71
+ if ob.is_a?(Hash)
72
+ ob[:schedule_id] ? WORKER.schedule_status(ob[:schedule_id]) : WORKER.status(ob[:task_id])
73
+ else
74
+ ob.status
75
+ end
76
+ end
77
+
78
+
79
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'test_base'
2
+ require_relative 'workers/db_worker'
3
+ require_relative 'models/db_model'
4
+ class IronWorkerTests < TestBase
5
+
6
+ def setup
7
+ super
8
+ IronWorker.config.database = @config['database']
9
+ end
10
+
11
+ #def test_active_record
12
+ # dbw = DbWorker.new
13
+ # dbw.run_local
14
+ # assert !dbw.ob.nil?
15
+ # assert !dbw.ob.id.nil?
16
+ #
17
+ # dbw.queue
18
+ # # would be interesting if the object could update itself on complete. Like it would retrieve new values from
19
+ # # finished job when calling status or something.
20
+ #
21
+ # status = wait_for_task(dbw)
22
+ # puts 'status: ' + status.inspect
23
+ # puts "\n\n\nLOG START:"
24
+ # puts dbw.get_log
25
+ # puts "LOG END\n\n\n"
26
+ # assert status["status"] == "complete"
27
+ #
28
+ #
29
+ #end
30
+
31
+ end