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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +352 -0
- data/iron_worker.gemspec +3 -8
- data/lib/iron_worker.rb +13 -51
- data/lib/iron_worker/api_client.rb +152 -0
- data/lib/iron_worker/version.rb +9 -1
- data/lib/iron_worker/worker_helper.rb +72 -0
- metadata +18 -183
- data/README.markdown +0 -73
- data/lib/generators/iron_worker/iron_worker_generator.rb +0 -13
- data/lib/generators/iron_worker/templates/template_worker.erb +0 -7
- data/lib/iron_worker/api.rb +0 -244
- data/lib/iron_worker/base.rb +0 -449
- data/lib/iron_worker/config.rb +0 -287
- data/lib/iron_worker/rails2_init.rb +0 -8
- data/lib/iron_worker/railtie.rb +0 -16
- data/lib/iron_worker/server/overrides.rb +0 -198
- data/lib/iron_worker/server/runner.rb +0 -82
- data/lib/iron_worker/service.rb +0 -644
- data/lib/iron_worker/used_in_worker.rb +0 -11
- data/lib/iron_worker/utils.rb +0 -11
- data/rails/init.rb +0 -0
- data/test/Gemfile +0 -36
- data/test/Gemfile.lock +0 -169
- data/test/README.md +0 -5
- data/test/batch_run.rb +0 -121
- data/test/config_sample.yml +0 -13
- data/test/models/cool_model.rb +0 -7
- data/test/models/db_model.rb +0 -6
- data/test/models/model_1.rb +0 -16
- data/test/models/model_2.rb +0 -16
- data/test/quick_run.rb +0 -36
- data/test/quick_schedule.rb +0 -18
- data/test/resources/something.yml +0 -4
- data/test/simple_script.rb +0 -11
- data/test/test_base.rb +0 -79
- data/test/test_database.rb +0 -31
- data/test/test_gems.rb +0 -31
- data/test/test_inheritance.rb +0 -25
- data/test/test_iron_worker.rb +0 -194
- data/test/test_merging.rb +0 -51
- data/test/test_non_worker_script.rb +0 -14
- data/test/test_rails.rb +0 -35
- data/test/test_scheduling.rb +0 -74
- data/test/test_scheduling_no_active_support.rb +0 -37
- data/test/test_service.rb +0 -28
- data/test/test_uploads.rb +0 -30
- data/test/test_webhooks.rb +0 -45
- data/test/v2quick.rb +0 -29
- data/test/workers/awesome_job.rb +0 -26
- data/test/workers/aws_s3_worker.rb +0 -10
- data/test/workers/big_data_worker.rb +0 -15
- data/test/workers/big_gems_worker.rb +0 -35
- data/test/workers/cool_worker.rb +0 -14
- data/test/workers/db_worker.rb +0 -27
- data/test/workers/fail_worker.rb +0 -10
- data/test/workers/gem_dependency_worker.rb +0 -20
- data/test/workers/hacker_worker.rb +0 -65
- data/test/workers/iw_test_worker.rb +0 -22
- data/test/workers/iw_test_worker_2.rb +0 -53
- data/test/workers/iw_test_worker_3.rb +0 -17
- data/test/workers/local_vs_remote_worker.rb +0 -9
- data/test/workers/merging_worker.rb +0 -40
- data/test/workers/mq_worker.rb +0 -21
- data/test/workers/one_line_worker.rb +0 -10
- data/test/workers/prawn_worker.rb +0 -32
- data/test/workers/progress_worker.rb +0 -26
- data/test/workers/qb_worker.rb +0 -17
- data/test/workers/rails_worker.rb +0 -24
- data/test/workers/rails_worker2.rb +0 -12
- data/test/workers/requiring_worker.rb +0 -4
- data/test/workers/running_back_worker.rb +0 -7
- data/test/workers/scheduled_worker.rb +0 -15
- data/test/workers/second_worker.rb +0 -16
- data/test/workers/third_worker.rb +0 -6
- data/test/workers/webhook_worker.rb +0 -7
- data/test/zip_vs_gzip.rb +0 -26
data/test/quick_schedule.rb
DELETED
@@ -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
|
-
|
data/test/simple_script.rb
DELETED
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
|
data/test/test_database.rb
DELETED
@@ -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
|
data/test/test_inheritance.rb
DELETED
@@ -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
|
data/test/test_iron_worker.rb
DELETED
@@ -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
|