resque_unit 0.4.1 → 0.4.2
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/resque_unit/resque.rb +2 -2
- data/lib/resque_unit/scheduler.rb +7 -1
- data/test/resque_unit_scheduler_test.rb +83 -14
- metadata +11 -11
data/lib/resque_unit/resque.rb
CHANGED
@@ -208,7 +208,7 @@ module Resque
|
|
208
208
|
|
209
209
|
# If an exception occurs during the job execution, look for an
|
210
210
|
# on_failure hook then re-raise.
|
211
|
-
rescue => e
|
211
|
+
rescue Object => e
|
212
212
|
failure_hooks.each { |hook| job_class.send(hook, e, *job_payload["args"]) }
|
213
213
|
raise e
|
214
214
|
end
|
@@ -217,7 +217,7 @@ module Resque
|
|
217
217
|
class Job
|
218
218
|
extend Helpers
|
219
219
|
def self.create(queue, klass_name, *args)
|
220
|
-
Resque.enqueue_unit(queue, {"class" => constantize(klass_name), "args" => args})
|
220
|
+
Resque.enqueue_unit(queue, {"class" => constantize(klass_name).to_s, "args" => args})
|
221
221
|
end
|
222
222
|
end
|
223
223
|
|
@@ -19,7 +19,7 @@ module ResqueUnit
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def enqueue_with_timestamp(timestamp, klass, *args)
|
22
|
-
enqueue_unit(queue_for(klass), {"class" => klass, "args" => args, "timestamp" => timestamp})
|
22
|
+
enqueue_unit(queue_for(klass), {"class" => klass.name, "args" => args, "timestamp" => timestamp})
|
23
23
|
end
|
24
24
|
|
25
25
|
def remove_delayed(klass, *args)
|
@@ -28,6 +28,12 @@ module ResqueUnit
|
|
28
28
|
args ||= []
|
29
29
|
encoded_job_payloads.delete_if { |e| e = Resque.decode(e); e["class"] == klass.to_s && e["args"] == args }
|
30
30
|
end
|
31
|
+
|
32
|
+
def remove_delayed_job_from_timestamp(timestamp, klass, *args)
|
33
|
+
encoded_job_payloads = Resque.queue(queue_for(klass))
|
34
|
+
args ||= []
|
35
|
+
encoded_job_payloads.delete_if { |e| e = Resque.decode(e); e["class"] == klass.to_s && e["timestamp"] == timestamp.to_s && e["args"] == args }
|
36
|
+
end
|
31
37
|
end
|
32
38
|
|
33
39
|
Resque.send(:extend, Scheduler)
|
@@ -18,12 +18,12 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
should "fail the assert_queued_in(300, job) assertion" do
|
21
|
-
assert_raise Test::Unit::AssertionFailedError do
|
21
|
+
assert_raise Test::Unit::AssertionFailedError do
|
22
22
|
assert_queued_in(300, MediumPriorityJob)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
should "pass the assert_not_queued_in(300, job) assertion" do
|
26
|
+
should "pass the assert_not_queued_in(300, job) assertion" do
|
27
27
|
assert_not_queued_in(300, MediumPriorityJob)
|
28
28
|
end
|
29
29
|
|
@@ -31,7 +31,7 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
31
31
|
setup do
|
32
32
|
Resque.remove_delayed(MediumPriorityJob)
|
33
33
|
end
|
34
|
-
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
34
|
+
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
35
35
|
assert_not_queued_at(300, MediumPriorityJob)
|
36
36
|
end
|
37
37
|
|
@@ -42,7 +42,7 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
context "A task that schedules a resque job in 5 minutes with arguments" do
|
47
47
|
setup { Resque.enqueue_in(600, JobWithArguments, 1, "test") }
|
48
48
|
should "pass the assert_queued_in(600, JobWithArguments) assertion" do
|
@@ -53,8 +53,8 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
53
53
|
assert_queued_in(600, JobWithArguments, [1, 'test'])
|
54
54
|
end
|
55
55
|
|
56
|
-
should "fail the assert_queued_in(600, JobWithArguments, [2, 'test']) assertion" do
|
57
|
-
assert_raise Test::Unit::AssertionFailedError do
|
56
|
+
should "fail the assert_queued_in(600, JobWithArguments, [2, 'test']) assertion" do
|
57
|
+
assert_raise Test::Unit::AssertionFailedError do
|
58
58
|
assert_queued_in(600, JobWithArguments, [2, 'test'])
|
59
59
|
end
|
60
60
|
end
|
@@ -63,7 +63,7 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
63
63
|
setup do
|
64
64
|
Resque.remove_delayed(JobWithArguments, 1, 'test')
|
65
65
|
end
|
66
|
-
should "pass the assert_not_queued_at(@time, JobWithArguments, 1, 'test') assertion" do
|
66
|
+
should "pass the assert_not_queued_at(@time, JobWithArguments, 1, 'test') assertion" do
|
67
67
|
assert_not_queued_at(600, JobWithArguments, 1, 'test')
|
68
68
|
end
|
69
69
|
|
@@ -86,26 +86,26 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
86
86
|
assert_queued_in(600, JobWithArguments, [1, 'test'])
|
87
87
|
end
|
88
88
|
|
89
|
-
should "still fail the assert_queued_in(600, JobWithArguments, [2, 'test']) assertion" do
|
90
|
-
assert_raise Test::Unit::AssertionFailedError do
|
89
|
+
should "still fail the assert_queued_in(600, JobWithArguments, [2, 'test']) assertion" do
|
90
|
+
assert_raise Test::Unit::AssertionFailedError do
|
91
91
|
assert_queued_in(600, JobWithArguments, [2, 'test'])
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
context "A task that schedules a resque job on Sept. 6, 2016 at 6am" do
|
98
98
|
setup do
|
99
99
|
@time = Time.mktime(2016, 9, 6, 6)
|
100
100
|
Resque.enqueue_at(@time, MediumPriorityJob)
|
101
101
|
end
|
102
102
|
|
103
|
-
should "pass the assert_queued_at(@time, MediumPriorityJob) assertion" do
|
103
|
+
should "pass the assert_queued_at(@time, MediumPriorityJob) assertion" do
|
104
104
|
assert_queued_at(@time, MediumPriorityJob)
|
105
105
|
end
|
106
106
|
|
107
|
-
should "fail the assert_queued_at(@time - 100, MediumPriorityJob) assertion" do
|
108
|
-
assert_raise Test::Unit::AssertionFailedError do
|
107
|
+
should "fail the assert_queued_at(@time - 100, MediumPriorityJob) assertion" do
|
108
|
+
assert_raise Test::Unit::AssertionFailedError do
|
109
109
|
assert_queued_at(@time - 100, MediumPriorityJob)
|
110
110
|
end
|
111
111
|
end
|
@@ -118,7 +118,7 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
118
118
|
setup do
|
119
119
|
Resque.remove_delayed(MediumPriorityJob)
|
120
120
|
end
|
121
|
-
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
121
|
+
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
122
122
|
assert_not_queued_at(@time, MediumPriorityJob)
|
123
123
|
end
|
124
124
|
|
@@ -128,5 +128,74 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
131
|
+
|
132
|
+
context "and then the job is removed with #remove_delayed_job_with_timestamp" do
|
133
|
+
setup do
|
134
|
+
Resque.remove_delayed_job_from_timestamp(@time, MediumPriorityJob)
|
135
|
+
end
|
136
|
+
|
137
|
+
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
138
|
+
assert_not_queued_at(@time, MediumPriorityJob)
|
139
|
+
end
|
140
|
+
|
141
|
+
should "fail the assert_queued_at(@time, MediumPriorityJob) assertion" do
|
142
|
+
assert_raise Test::Unit::AssertionFailedError do
|
143
|
+
assert_queued_at(@time, MediumPriorityJob)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "A task that schedules a resque job with arguments on on Sept. 6, 2016 at 6am" do
|
150
|
+
setup do
|
151
|
+
@time = Time.mktime(2016, 9, 6, 6)
|
152
|
+
Resque.enqueue_at(@time, JobWithArguments, 1, "test")
|
153
|
+
end
|
154
|
+
|
155
|
+
should "pass the assert_queued_at(@time, JobWithArguments, *args) assertion" do
|
156
|
+
assert_queued_at(@time, JobWithArguments, [1, "test"])
|
157
|
+
end
|
158
|
+
|
159
|
+
should "fail the assert_queued_at(@time - 100, JobWithArguments, *args) assertion" do
|
160
|
+
assert_raise Test::Unit::AssertionFailedError do
|
161
|
+
assert_queued_at(@time - 100, JobWithArguments, [1, "test"])
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
should "pass the assert_not_queued_at(@time - 100, JobWithArguments, *args) assertion" do
|
166
|
+
assert_not_queued_at(@time - 100, JobWithArguments, [1, "test"])
|
167
|
+
end
|
168
|
+
|
169
|
+
context "and then the job is removed with #remove_delayed" do
|
170
|
+
setup do
|
171
|
+
Resque.remove_delayed(JobWithArguments, 1, "test")
|
172
|
+
end
|
173
|
+
|
174
|
+
should "pass the assert_not_queued_at(@time, JobWithArguments, *args) assertion" do
|
175
|
+
assert_not_queued_at(@time, JobWithArguments, [1, "test"])
|
176
|
+
end
|
177
|
+
|
178
|
+
should "fail the assert_queued_at(@time, JobWithArguments, *args) assertion" do
|
179
|
+
assert_raise Test::Unit::AssertionFailedError do
|
180
|
+
assert_queued_at(@time, JobWithArguments, [1, "test"])
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context "and then the job is removed with #remove_delayed_job_from_timestamp" do
|
186
|
+
setup do
|
187
|
+
Resque.remove_delayed_job_from_timestamp(@time, JobWithArguments, 1, "test")
|
188
|
+
end
|
189
|
+
|
190
|
+
should "pass the assert_not_queued_at(@time, JobWithArguments, *args) assertion" do
|
191
|
+
assert_not_queued_at(@time, JobWithArguments, [1, "test"])
|
192
|
+
end
|
193
|
+
|
194
|
+
should "fail the assert_queued_at(@time, MediumPriorityJob, *args) assertion" do
|
195
|
+
assert_raise Test::Unit::AssertionFailedError do
|
196
|
+
assert_queued_at(@time, JobWithArguments, [1, "test"])
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
131
200
|
end
|
132
201
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque_unit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70334013235640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.4.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70334013235640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70334013235240 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70334013235240
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: shoulda
|
38
|
-
requirement: &
|
38
|
+
requirement: &70334013234780 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70334013234780
|
47
47
|
description:
|
48
48
|
email: justin@uberweiss.org
|
49
49
|
executables: []
|
@@ -80,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
80
|
version: '0'
|
81
81
|
segments:
|
82
82
|
- 0
|
83
|
-
hash:
|
83
|
+
hash: 504436930256171136
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
@@ -89,10 +89,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
segments:
|
91
91
|
- 0
|
92
|
-
hash:
|
92
|
+
hash: 504436930256171136
|
93
93
|
requirements: []
|
94
94
|
rubyforge_project:
|
95
|
-
rubygems_version: 1.8.
|
95
|
+
rubygems_version: 1.8.10
|
96
96
|
signing_key:
|
97
97
|
specification_version: 3
|
98
98
|
summary: Test::Unit support for resque job queueing
|