iron_worker 2.4.3 → 3.0.0

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +352 -0
  4. data/iron_worker.gemspec +3 -8
  5. data/lib/iron_worker.rb +13 -51
  6. data/lib/iron_worker/api_client.rb +152 -0
  7. data/lib/iron_worker/version.rb +9 -1
  8. data/lib/iron_worker/worker_helper.rb +72 -0
  9. metadata +18 -183
  10. data/README.markdown +0 -73
  11. data/lib/generators/iron_worker/iron_worker_generator.rb +0 -13
  12. data/lib/generators/iron_worker/templates/template_worker.erb +0 -7
  13. data/lib/iron_worker/api.rb +0 -244
  14. data/lib/iron_worker/base.rb +0 -449
  15. data/lib/iron_worker/config.rb +0 -287
  16. data/lib/iron_worker/rails2_init.rb +0 -8
  17. data/lib/iron_worker/railtie.rb +0 -16
  18. data/lib/iron_worker/server/overrides.rb +0 -198
  19. data/lib/iron_worker/server/runner.rb +0 -82
  20. data/lib/iron_worker/service.rb +0 -644
  21. data/lib/iron_worker/used_in_worker.rb +0 -11
  22. data/lib/iron_worker/utils.rb +0 -11
  23. data/rails/init.rb +0 -0
  24. data/test/Gemfile +0 -36
  25. data/test/Gemfile.lock +0 -169
  26. data/test/README.md +0 -5
  27. data/test/batch_run.rb +0 -121
  28. data/test/config_sample.yml +0 -13
  29. data/test/models/cool_model.rb +0 -7
  30. data/test/models/db_model.rb +0 -6
  31. data/test/models/model_1.rb +0 -16
  32. data/test/models/model_2.rb +0 -16
  33. data/test/quick_run.rb +0 -36
  34. data/test/quick_schedule.rb +0 -18
  35. data/test/resources/something.yml +0 -4
  36. data/test/simple_script.rb +0 -11
  37. data/test/test_base.rb +0 -79
  38. data/test/test_database.rb +0 -31
  39. data/test/test_gems.rb +0 -31
  40. data/test/test_inheritance.rb +0 -25
  41. data/test/test_iron_worker.rb +0 -194
  42. data/test/test_merging.rb +0 -51
  43. data/test/test_non_worker_script.rb +0 -14
  44. data/test/test_rails.rb +0 -35
  45. data/test/test_scheduling.rb +0 -74
  46. data/test/test_scheduling_no_active_support.rb +0 -37
  47. data/test/test_service.rb +0 -28
  48. data/test/test_uploads.rb +0 -30
  49. data/test/test_webhooks.rb +0 -45
  50. data/test/v2quick.rb +0 -29
  51. data/test/workers/awesome_job.rb +0 -26
  52. data/test/workers/aws_s3_worker.rb +0 -10
  53. data/test/workers/big_data_worker.rb +0 -15
  54. data/test/workers/big_gems_worker.rb +0 -35
  55. data/test/workers/cool_worker.rb +0 -14
  56. data/test/workers/db_worker.rb +0 -27
  57. data/test/workers/fail_worker.rb +0 -10
  58. data/test/workers/gem_dependency_worker.rb +0 -20
  59. data/test/workers/hacker_worker.rb +0 -65
  60. data/test/workers/iw_test_worker.rb +0 -22
  61. data/test/workers/iw_test_worker_2.rb +0 -53
  62. data/test/workers/iw_test_worker_3.rb +0 -17
  63. data/test/workers/local_vs_remote_worker.rb +0 -9
  64. data/test/workers/merging_worker.rb +0 -40
  65. data/test/workers/mq_worker.rb +0 -21
  66. data/test/workers/one_line_worker.rb +0 -10
  67. data/test/workers/prawn_worker.rb +0 -32
  68. data/test/workers/progress_worker.rb +0 -26
  69. data/test/workers/qb_worker.rb +0 -17
  70. data/test/workers/rails_worker.rb +0 -24
  71. data/test/workers/rails_worker2.rb +0 -12
  72. data/test/workers/requiring_worker.rb +0 -4
  73. data/test/workers/running_back_worker.rb +0 -7
  74. data/test/workers/scheduled_worker.rb +0 -15
  75. data/test/workers/second_worker.rb +0 -16
  76. data/test/workers/third_worker.rb +0 -6
  77. data/test/workers/webhook_worker.rb +0 -7
  78. data/test/zip_vs_gzip.rb +0 -26
@@ -1,18 +0,0 @@
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
-
@@ -1,4 +0,0 @@
1
- hello:
2
- world: "how are you?"
3
-
4
-
@@ -1,11 +0,0 @@
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 DELETED
@@ -1,79 +0,0 @@
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
@@ -1,31 +0,0 @@
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
data/test/test_gems.rb DELETED
@@ -1,31 +0,0 @@
1
- require_relative 'test_base'
2
- require_relative 'workers/awesome_job'
3
- require_relative 'workers/aws_s3_worker'
4
-
5
- class TestGems < TestBase
6
-
7
- def test_dropbox_gem
8
-
9
- worker = AwesomeJob.new
10
- worker.queue
11
-
12
- worker.wait_until_complete
13
-
14
- puts 'log=' + worker.get_log
15
-
16
- end
17
-
18
- def test_aws_s3_gem
19
-
20
- worker = AwsS3Worker.new
21
- puts 'run_local'
22
- worker.run_local
23
- worker.queue
24
-
25
- worker.wait_until_complete
26
-
27
- puts 'log=' + worker.get_log
28
-
29
- end
30
-
31
- end
@@ -1,25 +0,0 @@
1
- require_relative 'test_base'
2
-
3
- class TestInheritance < TestBase
4
-
5
- def test_who_am_i
6
-
7
- worker = TestWorker2.new
8
- puts "1: " + worker.who_am_i?
9
- puts "2: " + worker.who_am_i2?
10
-
11
-
12
- end
13
-
14
- def test_multi_subs
15
- t3 = TestWorker3.new
16
- t3.queue
17
- t3.wait_until_complete
18
- puts "LOG:"
19
- log = t3.get_log
20
- puts log
21
- assert log.include?("super_class_method")
22
-
23
- end
24
-
25
- end
@@ -1,194 +0,0 @@
1
- require_relative 'test_base'
2
- require_relative 'workers/cool_worker'
3
- require_relative 'models/cool_model'
4
- require_relative 'workers/gem_dependency_worker'
5
- require_relative 'workers/fail_worker'
6
- require_relative 'workers/progress_worker'
7
- require_relative 'workers/one_line_worker'
8
- require_relative 'workers/big_gems_worker'
9
- require_relative 'workers/webhook_worker'
10
- require_relative 'workers/local_vs_remote_worker'
11
-
12
- class IronWorkerTests < TestBase
13
-
14
- # todo: test both gems
15
- #def test_rest_client
16
- # Uber.gem = :rest_client
17
- #
18
- # worker = OneLineWorker.new
19
- # worker.queue
20
- #
21
- # IronWorker.service.host = "http://www.wlajdfljalsjfklsldf.com/"
22
- # IronWorker.service.reset_base_url
23
- #
24
- # status = worker.wait_until_complete
25
- # p status
26
- # p status["error_class"]
27
- # p status["msg"]
28
- # puts "\n\n\nLOG START:"
29
- # log = worker.get_log
30
- # puts log
31
- # puts "LOG END\n\n\n"
32
- # assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
33
- # Uber.gem = :typhoeus
34
- #end
35
-
36
-
37
- def test_old_gem_error_message
38
- assert_raise do
39
- IronWorker.config.access_key = "abc"
40
- end
41
- assert_raise do
42
- assert_raise IronWorker.config.secret_key = "abc"
43
- end
44
- end
45
-
46
- def test_gem_merging
47
- worker = GemDependencyWorker.new
48
- worker.queue
49
- status = worker.wait_until_complete
50
- p status
51
- puts_log(worker)
52
- assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
53
- end
54
-
55
- def test_new_worker_style
56
- # Add something to queue, get task ID back
57
- tw = TestWorker2.new
58
- tw.s3_key = "active style runner"
59
- tw.times = 3
60
- tw.x = true
61
-
62
- # queue up a task
63
- puts 'queuing ' + tw.inspect
64
-
65
- response_hash = nil
66
- 5.times do |i|
67
- response_hash = tw.queue
68
- end
69
-
70
- puts 'response_hash=' + response_hash.inspect
71
- puts 'task_id=' + tw.task_id
72
-
73
- assert response_hash["msg"]
74
- assert response_hash["tasks"]
75
- assert response_hash["tasks"][0]["id"].length == 24, "length is #{response_hash["tasks"][0]["id"].length}"
76
- assert response_hash["tasks"][0]["id"] == tw.task_id
77
-
78
- status = tw.wait_until_complete
79
-
80
- puts 'LOG=' + tw.get_log
81
- assert tw.status["status"] == "complete"
82
-
83
- end
84
-
85
- def test_global_attributes
86
- worker = TestWorker3.new
87
- worker.run_local
88
-
89
- puts 'worker=' + worker.inspect
90
-
91
- assert_equal "sa", worker.db_user
92
- assert_equal "pass", worker.db_pass
93
- assert_equal 123, worker.x
94
-
95
- end
96
-
97
-
98
- def test_data_passing
99
- cool = CoolWorker.new
100
- cool.array_of_models = [CoolModel.new(:name => "name1"), CoolModel.new(:name => "name2")]
101
- cool.queue
102
- status = cool.wait_until_complete
103
- assert status["status"] == "complete"
104
- log = IronWorker.service.log(cool.task_id)
105
- puts 'log=' + log.inspect
106
- assert log.length > 10
107
-
108
- end
109
-
110
- def test_set_progress
111
- worker = TestWorker.new
112
- worker.s3_key = "abc"
113
- worker.times = 10
114
- worker.queue
115
- status = worker.wait_until_complete
116
- p status
117
- log = worker.get_log
118
- puts 'log: ' + log
119
- puts 'STATUS: ' + status.inspect
120
- assert log.include?("running at 5")
121
- assert status["status"] == "complete"
122
- assert status["percent"] > 0
123
-
124
- end
125
-
126
- def test_exceptions
127
- worker = FailWorker.new
128
- worker.queue
129
- status = worker.wait_until_complete
130
- assert status["status"] == "error"
131
- assert status["msg"].present?
132
- end
133
-
134
-
135
- def test_progress
136
- worker = ProgressWorker.new
137
- worker.s3_key = "YOOOOO"
138
- worker.queue
139
-
140
- status = worker.wait_until_complete
141
- p status
142
- p status["error_class"]
143
- p status["msg"]
144
- puts "\n\n\nLOG START:"
145
- log = worker.get_log
146
- puts log
147
- puts "LOG END\n\n\n"
148
- puts "Status:"
149
- puts status
150
- assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
151
- assert log.include?(worker.s3_key)
152
- #assert status["percent"]
153
- #assert status["percent"] > 0
154
- end
155
-
156
- def test_big_gems_worker
157
-
158
- #raise "BigGemWorker DOESN'T WORK, remove this raise when fixed."
159
-
160
- worker = BigGemsWorker.new
161
- worker.queue
162
-
163
- status = worker.wait_until_complete
164
- p status
165
- p status["error_class"]
166
- p status["msg"]
167
- puts "\n\n\nLOG START:"
168
- log = worker.get_log
169
- puts log
170
- puts "LOG END\n\n\n"
171
- assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
172
- assert log.include?("hello")
173
- end
174
-
175
-
176
- def test_local_vs_remote
177
-
178
- worker = LocalVsRemoteWorker.new
179
- worker.run_local
180
- assert worker.is_local?
181
- # now remote
182
- worker.queue
183
-
184
- status = worker.wait_until_complete
185
- p status
186
- log = worker.get_log
187
- puts 'log: ' + log
188
- puts 'STATUS: ' + status.inspect
189
- assert status["status"] == "complete"
190
- assert log.include?("is_remote? true")
191
- end
192
-
193
- end
194
-
data/test/test_merging.rb DELETED
@@ -1,51 +0,0 @@
1
- require_relative 'test_base'
2
- #require 'active_record'
3
- require_relative 'workers/cool_worker'
4
- require_relative 'models/cool_model'
5
- require_relative 'models/db_model'
6
- require_relative 'workers/prawn_worker'
7
-
8
- class TestMerging < TestBase
9
-
10
- def test_merge_worker
11
- tw = TestWorker2.new
12
- tw.s3_key = "active style runner"
13
- tw.times = 3
14
- tw.x = true
15
-
16
- response_hash_single = nil
17
- 5.times do |i|
18
- begin
19
- response_hash_single = tw.queue
20
- rescue => ex
21
- puts ex.message
22
- raise ex
23
- end
24
- end
25
-
26
- puts 'response_hash=' + response_hash_single.inspect
27
- puts 'task_id=' + tw.task_id
28
- status = tw.wait_until_complete
29
- puts 'log=' + tw.get_log
30
- assert tw.status["status"] == "complete"
31
- end
32
-
33
- def test_include_dirs
34
- worker = PrawnWorker.new
35
- worker.queue
36
-
37
- status = worker.wait_until_complete
38
- p status
39
- puts "\n\n\nLOG START:"
40
- l = worker.get_log
41
- puts l
42
- puts "LOG END\n\n\n"
43
- assert status["status"] == "complete", "Status was not complete, it was #{status["status"]}"
44
- assert l.include?("hello.pdf")
45
- end
46
-
47
- def test_merge_mailer
48
-
49
- end
50
-
51
- end