simple_worker 0.3.24 → 0.4.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.
- data/lib/simple_worker/base.rb +15 -1
- data/test/cool_model.rb +7 -0
- data/test/cool_worker.rb +14 -0
- data/test/db_worker.rb +18 -0
- data/test/test_base.rb +6 -12
- data/test/test_simple_worker.rb +71 -4
- data/test/trace_object.rb +6 -0
- metadata +12 -4
data/lib/simple_worker/base.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# This is an abstract module that developers creating works can mixin/include to use the SimpleWorker special functions.
|
2
2
|
|
3
3
|
require 'digest/md5'
|
4
|
+
require 'base64'
|
4
5
|
|
5
6
|
module SimpleWorker
|
6
7
|
|
@@ -123,6 +124,7 @@ module SimpleWorker
|
|
123
124
|
def run_local
|
124
125
|
# puts 'run_local'
|
125
126
|
set_auto_attributes
|
127
|
+
init_database
|
126
128
|
begin
|
127
129
|
run
|
128
130
|
rescue => ex
|
@@ -134,6 +136,15 @@ module SimpleWorker
|
|
134
136
|
end
|
135
137
|
end
|
136
138
|
|
139
|
+
def init_database
|
140
|
+
if SimpleWorker.config.database
|
141
|
+
require 'active_record'
|
142
|
+
if !ActiveRecord::Base.connected?
|
143
|
+
ActiveRecord::Base.establish_connection(SimpleWorker.config.database)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
137
148
|
def set_auto_attributes
|
138
149
|
set_global_attributes
|
139
150
|
end
|
@@ -267,9 +278,12 @@ module SimpleWorker
|
|
267
278
|
|
268
279
|
def sw_get_data
|
269
280
|
data = {}
|
281
|
+
|
282
|
+
payload = {}
|
270
283
|
self.instance_variables.each do |iv|
|
271
|
-
|
284
|
+
payload[iv] = instance_variable_get(iv)
|
272
285
|
end
|
286
|
+
data[:attr_encoded] = Base64.encode64(payload.to_json)
|
273
287
|
|
274
288
|
config_data = SimpleWorker.config.get_atts_to_send
|
275
289
|
data[:sw_config] = config_data
|
data/test/cool_model.rb
ADDED
data/test/cool_worker.rb
ADDED
data/test/db_worker.rb
ADDED
data/test/test_base.rb
CHANGED
@@ -13,26 +13,20 @@ require_relative "test_worker_3"
|
|
13
13
|
class TestBase < Test::Unit::TestCase
|
14
14
|
|
15
15
|
def setup
|
16
|
-
@config
|
16
|
+
@config = YAML::load(File.open(File.expand_path("~/.test_configs/simple_worker.yml")))
|
17
17
|
#puts @config.inspect
|
18
18
|
@access_key = @config['simple_worker']['access_key']
|
19
19
|
@secret_key = @config['simple_worker']['secret_key']
|
20
20
|
|
21
21
|
# new style
|
22
22
|
SimpleWorker.configure do |config|
|
23
|
-
config.access_key
|
24
|
-
config.secret_key
|
25
|
-
|
23
|
+
config.access_key = @access_key
|
24
|
+
config.secret_key = @secret_key
|
25
|
+
config.host = @config['simple_worker']['host']
|
26
26
|
config.global_attributes["db_user"] = "sa"
|
27
27
|
config.global_attributes["db_pass"] = "pass"
|
28
|
-
config.database =
|
29
|
-
:adapter => "mysql2",
|
30
|
-
:host => "localhost",
|
31
|
-
:database => "appdb",
|
32
|
-
:username => "appuser",
|
33
|
-
:password => "secret"
|
34
|
-
}
|
28
|
+
config.database = @config['database']
|
35
29
|
|
36
30
|
end
|
37
31
|
end
|
38
|
-
end
|
32
|
+
end
|
data/test/test_simple_worker.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
+
require 'active_record'
|
1
2
|
require_relative 'test_base'
|
3
|
+
require_relative 'cool_worker'
|
4
|
+
require_relative 'cool_model'
|
5
|
+
require_relative 'trace_object'
|
6
|
+
require_relative 'db_worker'
|
2
7
|
|
3
8
|
class SimpleWorkerTests < TestBase
|
4
9
|
|
5
10
|
|
6
11
|
def test_new_worker_style
|
7
12
|
# Add something to queue, get task ID back
|
8
|
-
tw
|
13
|
+
tw = TestWorker2.new
|
9
14
|
tw.s3_key = "active style runner"
|
10
|
-
tw.times
|
11
|
-
tw.x
|
15
|
+
tw.times = 3
|
16
|
+
tw.x = true
|
12
17
|
|
13
18
|
# schedule up a task
|
14
19
|
# start_at = 10.seconds.since
|
@@ -27,7 +32,7 @@ class SimpleWorkerTests < TestBase
|
|
27
32
|
begin
|
28
33
|
response_hash_single = tw.queue
|
29
34
|
rescue => ex
|
30
|
-
|
35
|
+
puts ex.message
|
31
36
|
end
|
32
37
|
end
|
33
38
|
|
@@ -55,6 +60,68 @@ class SimpleWorkerTests < TestBase
|
|
55
60
|
|
56
61
|
end
|
57
62
|
|
63
|
+
|
64
|
+
def test_data_passing
|
65
|
+
cool = CoolWorker.new
|
66
|
+
cool.array_of_models = [CoolModel.new(:name=>"name1"), CoolModel.new(:name=>"name2")]
|
67
|
+
cool.queue
|
68
|
+
status = wait_for_task(cool)
|
69
|
+
assert status["status"] == "complete"
|
70
|
+
log = SimpleWorker.service.log(cool.task_id)
|
71
|
+
puts 'log=' + log.inspect
|
72
|
+
assert log.length > 10
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_exceptions
|
77
|
+
worker = TestWorker.new
|
78
|
+
worker.queue
|
79
|
+
status = wait_for_task(worker)
|
80
|
+
assert status["status"] == "error"
|
81
|
+
assert status["msg"].present?
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_active_record
|
85
|
+
dbw = DbWorker.new
|
86
|
+
dbw.run_local
|
87
|
+
assert !dbw.ob.nil?
|
88
|
+
assert !dbw.ob.id.nil?
|
89
|
+
|
90
|
+
dbw.queue
|
91
|
+
# would be interesting if the object could update itself on complete. Like it would retrieve new values from
|
92
|
+
# finished job when calling status or something.
|
93
|
+
|
94
|
+
status = wait_for_task(dbw)
|
95
|
+
assert status["status"] == "complete"
|
96
|
+
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
def wait_for_task(params={})
|
102
|
+
tries = 0
|
103
|
+
status = nil
|
104
|
+
sleep 1
|
105
|
+
while tries < 60
|
106
|
+
status = status_for(params)
|
107
|
+
puts 'status = ' + status.inspect
|
108
|
+
if status["status"] == "complete" || status["status"] == "error"
|
109
|
+
break
|
110
|
+
end
|
111
|
+
sleep 2
|
112
|
+
end
|
113
|
+
status
|
114
|
+
end
|
115
|
+
|
116
|
+
def status_for(ob)
|
117
|
+
if ob.is_a?(Hash)
|
118
|
+
ob[:schedule_id] ? WORKER.schedule_status(ob[:schedule_id]) : WORKER.status(ob[:task_id])
|
119
|
+
else
|
120
|
+
ob.status
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
58
125
|
def test_require_relative_merge
|
59
126
|
|
60
127
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-02-
|
12
|
+
date: 2011-02-24 00:00:00.000000000 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: appoxy_api
|
17
|
-
requirement: &
|
17
|
+
requirement: &27678636 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *27678636
|
26
26
|
description: The official SimpleWorker gem for http://www.simpleworker.com
|
27
27
|
email: travis@appoxy.com
|
28
28
|
executables: []
|
@@ -39,6 +39,9 @@ files:
|
|
39
39
|
- lib/simple_worker/used_in_worker.rb
|
40
40
|
- rails/init.rb
|
41
41
|
- README.markdown
|
42
|
+
- test/cool_model.rb
|
43
|
+
- test/cool_worker.rb
|
44
|
+
- test/db_worker.rb
|
42
45
|
- test/models/model_1.rb
|
43
46
|
- test/models/model_2.rb
|
44
47
|
- test/requiring_worker.rb
|
@@ -51,6 +54,7 @@ files:
|
|
51
54
|
- test/test_worker.rb
|
52
55
|
- test/test_worker_2.rb
|
53
56
|
- test/test_worker_3.rb
|
57
|
+
- test/trace_object.rb
|
54
58
|
has_rdoc: true
|
55
59
|
homepage: http://github.com/appoxy/simple_worker
|
56
60
|
licenses: []
|
@@ -77,6 +81,9 @@ signing_key:
|
|
77
81
|
specification_version: 3
|
78
82
|
summary: The official SimpleWorker gem for http://www.simpleworker.com
|
79
83
|
test_files:
|
84
|
+
- test/cool_model.rb
|
85
|
+
- test/cool_worker.rb
|
86
|
+
- test/db_worker.rb
|
80
87
|
- test/models/model_1.rb
|
81
88
|
- test/models/model_2.rb
|
82
89
|
- test/requiring_worker.rb
|
@@ -89,3 +96,4 @@ test_files:
|
|
89
96
|
- test/test_worker.rb
|
90
97
|
- test/test_worker_2.rb
|
91
98
|
- test/test_worker_3.rb
|
99
|
+
- test/trace_object.rb
|