iron_worker 2.4.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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