rocketjob 1.1.2 → 1.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75e6c5434b4b1968db94743e4b81fcc0a68cabc3
4
- data.tar.gz: 735b0996986532d05ee46c546df4033a2b0d3c95
3
+ metadata.gz: 0791ec0844d63115ea5d7b5a1205fe21e72a635c
4
+ data.tar.gz: 1898e2c267dce737cfa546796d700c72a06bcad7
5
5
  SHA512:
6
- metadata.gz: 0556e6e99fa676eaa9eea871b5c32ffa372794ad5358a16f1daa11f28e0739bfc7954760d00a1d1d358ad135dfcf88e08823cdd22957fc41a5fbeb47b71fd0bd
7
- data.tar.gz: f780fa752304a93234e9dee155ab47a1949011c20d4a7cd2a949b068e0c65e195296a6edf7469d95af695d9c83d2f8041bcc3d53964fe2e71814d2a28dafeb5c
6
+ metadata.gz: 14da955ecac4f0b1316c343de006c53d1df296c24c9982c72c48e4ca12631d1283e89e64b999d488a26907503e7b46801c5ace72096dd4b0d3f02c6631f4e001
7
+ data.tar.gz: f97236b79cfab5ade58b30afebbd8ef05e462ef3f264c70860ab9cc8c2061257f6789bbc3b8d339f80a7d9ca1b17c7e6834678ca1b44958296683543e8adb32f
@@ -51,13 +51,13 @@ module RocketJob
51
51
  # Regular Expression
52
52
  #
53
53
  # Note: Date is not supported, convert it to a UTC time
54
- key :arguments, Array, default: []
54
+ key :arguments, Array
55
55
 
56
56
  # Any job properties to set
57
57
  #
58
58
  # Example, override the default job priority:
59
59
  # { priority: 45 }
60
- key :properties, Hash, default: {}
60
+ key :properties, Hash
61
61
 
62
62
  # Archive directory to move files to when processed to prevent processing the
63
63
  # file again.
@@ -65,7 +65,7 @@ module RocketJob
65
65
  # Regular Expression
66
66
  #
67
67
  # Note: Date is not supported, convert it to a UTC time
68
- key :arguments, Array, default: []
68
+ key :arguments, Array
69
69
 
70
70
  # Whether to store the results from this job
71
71
  key :collect_output, Boolean, default: false
@@ -382,6 +382,7 @@ module RocketJob
382
382
 
383
383
  def before_retry
384
384
  self.completed_at = nil
385
+ self.exception = nil
385
386
  end
386
387
 
387
388
  def before_pause
@@ -14,7 +14,7 @@ module RocketJob
14
14
  key :message, String
15
15
 
16
16
  # Exception Backtrace [Array<String>]
17
- key :backtrace, Array, default: []
17
+ key :backtrace, Array
18
18
 
19
19
  # Name of the worker on which this exception occurred
20
20
  key :worker_name, String
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module RocketJob #:nodoc
3
- VERSION = '1.1.2'
3
+ VERSION = '1.1.3'
4
4
  end
@@ -3,54 +3,56 @@ require_relative 'jobs/test_job'
3
3
 
4
4
  # Unit Test for RocketJob::Job
5
5
  class DirmonEntryTest < Minitest::Test
6
- context RocketJob::DirmonEntry do
7
- context '.config' do
8
- should 'support multiple databases' do
6
+ describe RocketJob::DirmonEntry do
7
+ describe '.config' do
8
+ it 'support multiple databases' do
9
9
  assert_equal 'test_rocketjob', RocketJob::DirmonEntry.collection.db.name
10
10
  end
11
11
  end
12
12
 
13
- context '#job_class' do
14
- context 'with a nil job_class_name' do
15
- should 'return nil' do
13
+ describe '#job_class' do
14
+ describe 'with a nil job_class_name' do
15
+ it 'return nil' do
16
16
  entry = RocketJob::DirmonEntry.new
17
17
  assert_equal(nil, entry.job_class)
18
18
  end
19
19
  end
20
20
 
21
- context 'with an unknown job_class_name' do
22
- should 'return nil' do
21
+ describe 'with an unknown job_class_name' do
22
+ it 'return nil' do
23
23
  entry = RocketJob::DirmonEntry.new(job_class_name: 'FakeJobThatDoesNotExistAnyWhereIPromise')
24
24
  assert_equal(nil, entry.job_class)
25
25
  end
26
26
  end
27
27
 
28
- context 'with a valid job_class_name' do
29
- should 'return job class' do
28
+ describe 'with a valid job_class_name' do
29
+ it 'return job class' do
30
30
  entry = RocketJob::DirmonEntry.new(job_class_name: 'RocketJob::Job')
31
31
  assert_equal(RocketJob::Job, entry.job_class)
32
+ assert_equal 0, entry.arguments.size
33
+ assert_equal 0, entry.properties.size
32
34
  end
33
35
  end
34
36
  end
35
37
 
36
- context '.whitelist_paths' do
37
- should 'default to []' do
38
+ describe '.whitelist_paths' do
39
+ it 'default to []' do
38
40
  assert_equal [], RocketJob::DirmonEntry.whitelist_paths
39
41
  end
40
42
  end
41
43
 
42
- context '.add_whitelist_path' do
43
- teardown do
44
+ describe '.add_whitelist_path' do
45
+ after do
44
46
  RocketJob::DirmonEntry.whitelist_paths.each { |path| RocketJob::DirmonEntry.delete_whitelist_path(path) }
45
47
  end
46
48
 
47
- should 'convert relative path to an absolute one' do
49
+ it 'convert relative path to an absolute one' do
48
50
  path = Pathname('test/jobs').realpath.to_s
49
51
  assert_equal path, RocketJob::DirmonEntry.add_whitelist_path('test/jobs')
50
52
  assert_equal [path], RocketJob::DirmonEntry.whitelist_paths
51
53
  end
52
54
 
53
- should 'prevent duplicates' do
55
+ it 'prevent duplicates' do
54
56
  path = Pathname('test/jobs').realpath.to_s
55
57
  assert_equal path, RocketJob::DirmonEntry.add_whitelist_path('test/jobs')
56
58
  assert_equal path, RocketJob::DirmonEntry.add_whitelist_path('test/jobs')
@@ -59,23 +61,23 @@ class DirmonEntryTest < Minitest::Test
59
61
  end
60
62
  end
61
63
 
62
- context '#fail_with_exception!' do
63
- setup do
64
+ describe '#fail_with_exception!' do
65
+ before do
64
66
  @dirmon_entry = RocketJob::DirmonEntry.new(job_class_name: 'Jobs::TestJob', pattern: '/abc/**', arguments: [1])
65
67
  @dirmon_entry.enable!
66
68
  end
67
- teardown do
69
+ after do
68
70
  @dirmon_entry.destroy if @dirmon_entry && @dirmon_entry.new_record?
69
71
  end
70
72
 
71
- should 'fail with message' do
73
+ it 'fail with message' do
72
74
  @dirmon_entry.fail_with_exception!('myworker:2323', 'oh no')
73
75
  assert_equal true, @dirmon_entry.failed?
74
76
  assert_equal 'RocketJob::DirmonEntryException', @dirmon_entry.exception.class_name
75
77
  assert_equal 'oh no', @dirmon_entry.exception.message
76
78
  end
77
79
 
78
- should 'fail with exception' do
80
+ it 'fail with exception' do
79
81
  exception = nil
80
82
  begin
81
83
  blah
@@ -90,16 +92,16 @@ class DirmonEntryTest < Minitest::Test
90
92
  end
91
93
  end
92
94
 
93
- context '#validate' do
94
- should 'existance' do
95
+ describe '#validate' do
96
+ it 'existance' do
95
97
  assert entry = RocketJob::DirmonEntry.new(job_class_name: 'Jobs::TestJob')
96
98
  assert_equal false, entry.valid?
97
99
  assert_equal ["can't be blank"], entry.errors[:pattern], entry.errors.inspect
98
100
  end
99
101
 
100
- context 'perform_method' do
101
- context 'with an invalid method' do
102
- should 'add errors to the entry' do
102
+ describe 'perform_method' do
103
+ describe 'with an invalid method' do
104
+ it 'add errors to the entry' do
103
105
  entry = RocketJob::DirmonEntry.new(job_class_name: 'Jobs::TestJob', perform_method: :missing_perform_method)
104
106
  assert_equal false, entry.valid?
105
107
  assert_equal ['Method not implemented by Jobs::TestJob'], entry.errors[:perform_method], entry.errors.inspect
@@ -107,16 +109,16 @@ class DirmonEntryTest < Minitest::Test
107
109
  end
108
110
  end
109
111
 
110
- context 'job_class_name' do
111
- should 'ensure presence' do
112
+ describe 'job_class_name' do
113
+ it 'ensure presence' do
112
114
  assert entry = RocketJob::DirmonEntry.new(pattern: '/abc/**')
113
115
  assert_equal false, entry.valid?
114
116
  assert_equal ["can't be blank", 'job_class_name must be defined and must be derived from RocketJob::Job'], entry.errors[:job_class_name], entry.errors.inspect
115
117
  end
116
118
  end
117
119
 
118
- context 'arguments' do
119
- should 'allow no arguments' do
120
+ describe 'arguments' do
121
+ it 'allow no arguments' do
120
122
  assert entry = RocketJob::DirmonEntry.new(
121
123
  job_class_name: 'Jobs::TestJob',
122
124
  pattern: '/abc/**',
@@ -126,7 +128,7 @@ class DirmonEntryTest < Minitest::Test
126
128
  assert_equal [], entry.errors[:arguments], entry.errors.inspect
127
129
  end
128
130
 
129
- should 'ensure correct number of arguments' do
131
+ it 'ensure correct number of arguments' do
130
132
  assert entry = RocketJob::DirmonEntry.new(
131
133
  job_class_name: 'Jobs::TestJob',
132
134
  pattern: '/abc/**'
@@ -135,7 +137,7 @@ class DirmonEntryTest < Minitest::Test
135
137
  assert_equal ['There must be 1 argument(s)'], entry.errors[:arguments], entry.errors.inspect
136
138
  end
137
139
 
138
- should 'return false if the job name is bad' do
140
+ it 'return false if the job name is bad' do
139
141
  assert entry = RocketJob::DirmonEntry.new(
140
142
  job_class_name: 'Jobs::Tests::Names::Things',
141
143
  pattern: '/abc/**'
@@ -145,7 +147,7 @@ class DirmonEntryTest < Minitest::Test
145
147
  end
146
148
  end
147
149
 
148
- should 'arguments with perform_method' do
150
+ it 'arguments with perform_method' do
149
151
  assert entry = RocketJob::DirmonEntry.new(
150
152
  job_class_name: 'Jobs::TestJob',
151
153
  pattern: '/abc/**',
@@ -155,7 +157,7 @@ class DirmonEntryTest < Minitest::Test
155
157
  assert_equal ['There must be 2 argument(s)'], entry.errors[:arguments], entry.errors.inspect
156
158
  end
157
159
 
158
- should 'valid' do
160
+ it 'valid' do
159
161
  assert entry = RocketJob::DirmonEntry.new(
160
162
  job_class_name: 'Jobs::TestJob',
161
163
  pattern: '/abc/**',
@@ -164,7 +166,7 @@ class DirmonEntryTest < Minitest::Test
164
166
  assert entry.valid?, entry.errors.inspect
165
167
  end
166
168
 
167
- should 'valid with perform_method' do
169
+ it 'valid with perform_method' do
168
170
  assert entry = RocketJob::DirmonEntry.new(
169
171
  job_class_name: 'Jobs::TestJob',
170
172
  pattern: '/abc/**',
@@ -175,8 +177,8 @@ class DirmonEntryTest < Minitest::Test
175
177
  end
176
178
  end
177
179
 
178
- context 'with valid entry' do
179
- setup do
180
+ describe 'with valid entry' do
181
+ before do
180
182
  @archive_directory = '/tmp/archive_directory'
181
183
  @entry = RocketJob::DirmonEntry.new(
182
184
  pattern: 'abc/*',
@@ -194,37 +196,37 @@ class DirmonEntryTest < Minitest::Test
194
196
  @archive_file_name = File.join(@archive_directory, "#{@job.id}_#{File.basename(@file_name)}")
195
197
  end
196
198
 
197
- teardown do
199
+ after do
198
200
  @file.delete if @file
199
201
  end
200
202
 
201
- context '#archive_pathname' do
202
- should 'with archive directory' do
203
+ describe '#archive_pathname' do
204
+ it 'with archive directory' do
203
205
  assert_equal @archive_directory.to_s, @entry.archive_pathname.to_s
204
206
  end
205
207
 
206
- should 'without archive directory' do
208
+ it 'without archive directory' do
207
209
  @entry.archive_directory = nil
208
210
  assert_equal '_archive', @entry.archive_pathname.to_s
209
211
  end
210
212
  end
211
213
 
212
- context '#archive_file' do
213
- should 'archive file' do
214
+ describe '#archive_file' do
215
+ it 'archive file' do
214
216
  assert_equal @archive_file_name, @entry.send(:archive_file, @job, Pathname.new(@file_name))
215
217
  assert File.exists?(@archive_file_name), @archive_file_name
216
218
  end
217
219
  end
218
220
 
219
- context '#upload_default' do
220
- should 'upload' do
221
+ describe '#upload_default' do
222
+ it 'upload' do
221
223
  @entry.send(:upload_default, @job, @pathname)
222
224
  assert_equal File.absolute_path(@archive_file_name), @job.arguments.first[:full_file_name], @job.arguments
223
225
  end
224
226
  end
225
227
 
226
- context '#upload_file' do
227
- should 'upload using #file_store_upload' do
228
+ describe '#upload_file' do
229
+ it 'upload using #file_store_upload' do
228
230
  @job.define_singleton_method(:file_store_upload) do |file_name|
229
231
  self.description = "FILE:#{file_name}"
230
232
  end
@@ -232,7 +234,7 @@ class DirmonEntryTest < Minitest::Test
232
234
  assert_equal "FILE:#{@file_name}", @job.description
233
235
  end
234
236
 
235
- should 'upload using #upload' do
237
+ it 'upload using #upload' do
236
238
  @job.define_singleton_method(:upload) do |file_name|
237
239
  self.description = "FILE:#{file_name}"
238
240
  end
@@ -241,8 +243,8 @@ class DirmonEntryTest < Minitest::Test
241
243
  end
242
244
  end
243
245
 
244
- context '#later' do
245
- should 'enqueue job' do
246
+ describe '#later' do
247
+ it 'enqueue job' do
246
248
  @entry.arguments = [{}]
247
249
  @entry.perform_method = :event
248
250
  job = @entry.later(@pathname)
@@ -3,8 +3,8 @@ require_relative 'jobs/test_job'
3
3
 
4
4
  # Unit Test for RocketJob::Job
5
5
  class DirmonJobTest < Minitest::Test
6
- context RocketJob::Jobs::DirmonJob do
7
- setup do
6
+ describe RocketJob::Jobs::DirmonJob do
7
+ before do
8
8
  @dirmon_job = RocketJob::Jobs::DirmonJob.new
9
9
  @directory = '/tmp/directory'
10
10
  @archive_directory = '/tmp/archive_directory'
@@ -19,14 +19,14 @@ class DirmonJobTest < Minitest::Test
19
19
  FileUtils.makedirs(@archive_directory)
20
20
  end
21
21
 
22
- teardown do
22
+ after do
23
23
  @dirmon_job.destroy if @dirmon_job && !@dirmon_job.new_record?
24
24
  FileUtils.remove_dir(@archive_directory, true) if Dir.exist?(@archive_directory)
25
25
  FileUtils.remove_dir(@directory, true) if Dir.exist?(@directory)
26
26
  end
27
27
 
28
- context '#check_file' do
29
- should 'check growing file' do
28
+ describe '#check_file' do
29
+ it 'check growing file' do
30
30
  previous_size = 5
31
31
  new_size = 10
32
32
  file = Tempfile.new('check_file')
@@ -39,7 +39,7 @@ class DirmonJobTest < Minitest::Test
39
39
  assert_equal new_size, result
40
40
  end
41
41
 
42
- should 'check completed file' do
42
+ it 'check completed file' do
43
43
  previous_size = 10
44
44
  new_size = 10
45
45
  file = Tempfile.new('check_file')
@@ -54,7 +54,7 @@ class DirmonJobTest < Minitest::Test
54
54
  assert started
55
55
  end
56
56
 
57
- should 'check deleted file' do
57
+ it 'check deleted file' do
58
58
  previous_size = 5
59
59
  file_name = Pathname.new('blah')
60
60
  result = @dirmon_job.send(:check_file, @entry, file_name, previous_size)
@@ -62,23 +62,23 @@ class DirmonJobTest < Minitest::Test
62
62
  end
63
63
  end
64
64
 
65
- context '#check_directories' do
66
- setup do
65
+ describe '#check_directories' do
66
+ before do
67
67
  RocketJob::DirmonEntry.destroy_all
68
68
  @entry.enable!
69
69
  end
70
70
 
71
- teardown do
71
+ after do
72
72
  @entry.destroy if @entry
73
73
  end
74
74
 
75
- should 'no files' do
75
+ it 'no files' do
76
76
  previous_file_names = {}
77
77
  result = @dirmon_job.send(:check_directories, previous_file_names)
78
78
  assert_equal 0, result.count
79
79
  end
80
80
 
81
- should 'collect new files without enqueuing them' do
81
+ it 'collect new files without enqueuing them' do
82
82
  create_file("#{@directory}/abc/file1", 5)
83
83
  create_file("#{@directory}/abc/file2", 10)
84
84
 
@@ -89,7 +89,7 @@ class DirmonJobTest < Minitest::Test
89
89
  assert_equal 10, result.values.second, result.inspect
90
90
  end
91
91
 
92
- should 'allow files to grow' do
92
+ it 'allow files to grow' do
93
93
  create_file("#{@directory}/abc/file1", 5)
94
94
  create_file("#{@directory}/abc/file2", 10)
95
95
  previous_file_names = {}
@@ -102,7 +102,7 @@ class DirmonJobTest < Minitest::Test
102
102
  assert_equal 15, result.values.second, result.inspect
103
103
  end
104
104
 
105
- should 'start all files' do
105
+ it 'start all files' do
106
106
  create_file("#{@directory}/abc/file1", 5)
107
107
  create_file("#{@directory}/abc/file2", 10)
108
108
  previous_file_names = @dirmon_job.send(:check_directories, {})
@@ -115,7 +115,7 @@ class DirmonJobTest < Minitest::Test
115
115
  assert_equal 0, result.count, result.inspect
116
116
  end
117
117
 
118
- should 'skip files in archive directory' do
118
+ it 'skip files in archive directory' do
119
119
  @entry.archive_directory = nil
120
120
  @entry.pattern = "#{@directory}/abc/**/*"
121
121
 
@@ -132,8 +132,8 @@ class DirmonJobTest < Minitest::Test
132
132
  end
133
133
  end
134
134
 
135
- context '#perform' do
136
- should 'check directories and reschedule' do
135
+ describe '#perform' do
136
+ it 'check directories and reschedule' do
137
137
  dirmon_job = nil
138
138
  previous_file_names = {
139
139
  "#{@directory}/abc/file1" => 5,
@@ -153,7 +153,7 @@ class DirmonJobTest < Minitest::Test
153
153
  end
154
154
  assert dirmon_job.completed?, dirmon_job.status.inspect
155
155
 
156
- # It should have enqueued another instance to run in the future
156
+ # It it have enqueued another instance to run in the future
157
157
  assert_equal 1, RocketJob::Jobs::DirmonJob.count
158
158
  assert new_dirmon_job = RocketJob::Jobs::DirmonJob.last
159
159
  assert_equal false, dirmon_job.id == new_dirmon_job.id
@@ -165,7 +165,7 @@ class DirmonJobTest < Minitest::Test
165
165
  new_dirmon_job.destroy
166
166
  end
167
167
 
168
- should 'check directories and reschedule even on exception' do
168
+ it 'check directories and reschedule even on exception' do
169
169
  dirmon_job = nil
170
170
  RocketJob::Jobs::DirmonJob.destroy_all
171
171
  RocketJob::Jobs::DirmonJob.stub_any_instance(:check_directories, -> previous { raise RuntimeError.new("Oh no") }) do
@@ -177,7 +177,7 @@ class DirmonJobTest < Minitest::Test
177
177
  end
178
178
  assert dirmon_job.failed?, dirmon_job.status.inspect
179
179
 
180
- # It should have enqueued another instance to run in the future
180
+ # It it have enqueued another instance to run in the future
181
181
  assert_equal 2, RocketJob::Jobs::DirmonJob.count
182
182
  assert new_dirmon_job = RocketJob::Jobs::DirmonJob.last
183
183
  assert new_dirmon_job.run_at
@@ -188,9 +188,9 @@ class DirmonJobTest < Minitest::Test
188
188
  new_dirmon_job.destroy
189
189
  end
190
190
  end
191
- end
192
191
 
193
- def create_file(file_name, size)
194
- File.open(file_name, 'w') { |file| file.write('*' * size) }
192
+ def create_file(file_name, size)
193
+ File.open(file_name, 'w') { |file| file.write('*' * size) }
194
+ end
195
195
  end
196
196
  end
data/test/job_test.rb CHANGED
@@ -3,8 +3,8 @@ require_relative 'jobs/test_job'
3
3
 
4
4
  # Unit Test for RocketJob::Job
5
5
  class JobTest < Minitest::Test
6
- context RocketJob::Job do
7
- setup do
6
+ describe RocketJob::Job do
7
+ before do
8
8
  @worker = RocketJob::Worker.new
9
9
  @worker.started
10
10
  @description = 'Hello World'
@@ -21,19 +21,19 @@ class JobTest < Minitest::Test
21
21
  )
22
22
  end
23
23
 
24
- teardown do
24
+ after do
25
25
  @job.destroy if @job && !@job.new_record?
26
26
  @job2.destroy if @job2 && !@job2.new_record?
27
27
  end
28
28
 
29
- context '.config' do
30
- should 'support multiple databases' do
29
+ describe '.config' do
30
+ it 'support multiple databases' do
31
31
  assert_equal 'test_rocketjob', RocketJob::Job.collection.db.name
32
32
  end
33
33
  end
34
34
 
35
- context '#reload' do
36
- should 'handle hash' do
35
+ describe '#reload' do
36
+ it 'handle hash' do
37
37
  @job = Jobs::TestJob.new(
38
38
  description: @description,
39
39
  arguments: [{key: 'value'}],
@@ -53,8 +53,8 @@ class JobTest < Minitest::Test
53
53
  end
54
54
  end
55
55
 
56
- context '#save!' do
57
- should 'save a blank job' do
56
+ describe '#save!' do
57
+ it 'save a blank job' do
58
58
  @job.save!
59
59
  assert_nil @job.worker_name
60
60
  assert_nil @job.completed_at
@@ -72,15 +72,15 @@ class JobTest < Minitest::Test
72
72
  end
73
73
  end
74
74
 
75
- context '#status' do
76
- should 'return status for a queued job' do
75
+ describe '#status' do
76
+ it 'return status for a queued job' do
77
77
  assert_equal true, @job.queued?
78
78
  h = @job.status
79
79
  assert_equal :queued, h['state']
80
80
  assert_equal @description, h['description']
81
81
  end
82
82
 
83
- should 'return status for a failed job' do
83
+ it 'return status for a failed job' do
84
84
  @job.start!
85
85
  @job.fail!('worker:1234', 'oh no')
86
86
  assert_equal true, @job.failed?
@@ -91,7 +91,7 @@ class JobTest < Minitest::Test
91
91
  assert_equal 'oh no', h['exception']['message'], h
92
92
  end
93
93
 
94
- should 'mark user as reason for failure when not supplied' do
94
+ it 'mark user as reason for failure when not supplied' do
95
95
  @job.start!
96
96
  @job.fail!
97
97
  assert_equal true, @job.failed?
@@ -102,8 +102,8 @@ class JobTest < Minitest::Test
102
102
  end
103
103
  end
104
104
 
105
- context '#fail_with_exception!' do
106
- should 'fail with message' do
105
+ describe '#fail_with_exception!' do
106
+ it 'fail with message' do
107
107
  @job.start!
108
108
  @job.fail!('myworker:2323', 'oh no')
109
109
  assert_equal true, @job.failed?
@@ -114,7 +114,7 @@ class JobTest < Minitest::Test
114
114
  assert_equal 'oh no', h['exception']['message'], h
115
115
  end
116
116
 
117
- should 'fail with exception' do
117
+ it 'fail with exception' do
118
118
  @job.start!
119
119
  exception = nil
120
120
  begin
@@ -132,15 +132,15 @@ class JobTest < Minitest::Test
132
132
  end
133
133
  end
134
134
 
135
- context '#work' do
136
- should 'call default perform method' do
135
+ describe '#work' do
136
+ it 'call default perform method' do
137
137
  @job.start!
138
138
  assert_equal false, @job.work(@worker)
139
139
  assert_equal true, @job.completed?, @job.state
140
140
  assert_equal 2, Jobs::TestJob.result
141
141
  end
142
142
 
143
- should 'call specific method' do
143
+ it 'call specific method' do
144
144
  @job.perform_method = :sum
145
145
  @job.arguments = [23, 45]
146
146
  @job.start!
@@ -149,14 +149,14 @@ class JobTest < Minitest::Test
149
149
  assert_equal 68, Jobs::TestJob.result
150
150
  end
151
151
 
152
- should 'destroy on complete' do
152
+ it 'destroy on complete' do
153
153
  @job.destroy_on_complete = true
154
154
  @job.start!
155
155
  assert_equal false, @job.work(@worker)
156
156
  assert_equal nil, RocketJob::Job.find_by_id(@job.id)
157
157
  end
158
158
 
159
- should 'silence logging when log_level is set' do
159
+ it 'silence logging when log_level is set' do
160
160
  @job.destroy_on_complete = true
161
161
  @job.log_level = :warn
162
162
  @job.perform_method = :noisy_logger
@@ -169,7 +169,7 @@ class JobTest < Minitest::Test
169
169
  assert_equal false, logged
170
170
  end
171
171
 
172
- should 'raise logging when log_level is set' do
172
+ it 'raise logging when log_level is set' do
173
173
  @job.destroy_on_complete = true
174
174
  @job.log_level = :trace
175
175
  @job.perform_method = :debug_logging
@@ -185,7 +185,7 @@ class JobTest < Minitest::Test
185
185
  assert_equal false, logged
186
186
  end
187
187
 
188
- should 'call before and after' do
188
+ it 'call before and after' do
189
189
  named_parameters = {'counter' => 23}
190
190
  @job.perform_method = :event
191
191
  @job.arguments = [named_parameters]
@@ -197,35 +197,35 @@ class JobTest < Minitest::Test
197
197
 
198
198
  end
199
199
 
200
- context '.next_job' do
201
- setup do
200
+ describe '.next_job' do
201
+ before do
202
202
  RocketJob::Job.destroy_all
203
203
  end
204
204
 
205
- should 'return nil when no jobs available' do
205
+ it 'return nil when no jobs available' do
206
206
  assert_equal nil, RocketJob::Job.next_job(@worker.name)
207
207
  end
208
208
 
209
- should 'return the first job' do
209
+ it 'return the first job' do
210
210
  @job.save!
211
211
  assert job = RocketJob::Job.next_job(@worker.name), 'Failed to find job'
212
212
  assert_equal @job.id, job.id
213
213
  end
214
214
 
215
- should 'Ignore future dated jobs' do
215
+ it 'Ignore future dated jobs' do
216
216
  @job.run_at = Time.now + 1.hour
217
217
  @job.save!
218
218
  assert_equal nil, RocketJob::Job.next_job(@worker.name)
219
219
  end
220
220
 
221
- should 'Process future dated jobs when time is now' do
221
+ it 'Process future dated jobs when time is now' do
222
222
  @job.run_at = Time.now
223
223
  @job.save!
224
224
  assert job = RocketJob::Job.next_job(@worker.name), 'Failed to find future job'
225
225
  assert_equal @job.id, job.id
226
226
  end
227
227
 
228
- should 'Skip expired jobs' do
228
+ it 'Skip expired jobs' do
229
229
  count = RocketJob::Job.count
230
230
  @job.expires_at = Time.now - 100
231
231
  @job.save!
@@ -234,8 +234,8 @@ class JobTest < Minitest::Test
234
234
  end
235
235
  end
236
236
 
237
- context '#requeue!' do
238
- should 'requeue jobs from dead workers' do
237
+ describe '#requeue!' do
238
+ it 'requeue jobs from dead workers' do
239
239
  worker_name = 'server:12345'
240
240
  @job.worker_name = worker_name
241
241
  @job.start!
@@ -249,8 +249,8 @@ class JobTest < Minitest::Test
249
249
  end
250
250
  end
251
251
 
252
- context '#requeue' do
253
- should 'requeue jobs from dead workers' do
252
+ describe '#requeue' do
253
+ it 'requeue jobs from dead workers' do
254
254
  worker_name = 'server:12345'
255
255
  @job.worker_name = worker_name
256
256
  @job.start!
@@ -266,8 +266,8 @@ class JobTest < Minitest::Test
266
266
  end
267
267
  end
268
268
 
269
- context '.requeue_dead_worker' do
270
- should 'requeue jobs from dead workers' do
269
+ describe '.requeue_dead_worker' do
270
+ it 'requeue jobs from dead workers' do
271
271
  worker_name = 'server:12345'
272
272
  @job.worker_name = worker_name
273
273
  @job.start!
@@ -289,8 +289,8 @@ class JobTest < Minitest::Test
289
289
  end
290
290
  end
291
291
 
292
- context '#retry!' do
293
- should 'retry failed jobs' do
292
+ describe '#retry!' do
293
+ it 'retry failed jobs' do
294
294
  worker_name = 'server:12345'
295
295
  @job.worker_name = worker_name
296
296
  @job.start!
@@ -299,10 +299,12 @@ class JobTest < Minitest::Test
299
299
 
300
300
  @job.fail!(worker_name, 'oh no')
301
301
  assert @job.failed?
302
+ assert_equal 'oh no', @job.exception.message
302
303
 
303
304
  @job.retry!
304
305
  assert @job.queued?
305
306
  assert_equal nil, @job.worker_name
307
+ assert_equal nil, @job.exception
306
308
  end
307
309
  end
308
310
 
@@ -3,22 +3,22 @@ require_relative 'jobs/test_job'
3
3
 
4
4
  # Unit Test for RocketJob::Job
5
5
  class WorkerTest < Minitest::Test
6
- context RocketJob::Job do
6
+ describe RocketJob::Job do
7
7
  [true, false].each do |inline_mode|
8
- setup do
8
+ before do
9
9
  RocketJob::Config.inline_mode = inline_mode
10
10
 
11
11
  @worker = RocketJob::Worker.new
12
12
  @worker.started
13
13
  end
14
14
 
15
- teardown do
15
+ after do
16
16
  @job.destroy if @job && !@job.new_record?
17
17
  RocketJob::Config.inline_mode = false
18
18
  end
19
19
 
20
- context '.perform_later' do
21
- should "process single request (inline_mode=#{inline_mode})" do
20
+ describe '.perform_later' do
21
+ it "process single request (inline_mode=#{inline_mode})" do
22
22
  @job = Jobs::TestJob.perform_later(1) do |job|
23
23
  job.destroy_on_complete = false
24
24
  end
@@ -55,8 +55,8 @@ class WorkerTest < Minitest::Test
55
55
  end
56
56
  end
57
57
 
58
- context '.later' do
59
- should "process non default method (inline_mode=#{inline_mode})" do
58
+ describe '.later' do
59
+ it "process non default method (inline_mode=#{inline_mode})" do
60
60
  @job = Jobs::TestJob.later(:sum, 23, 45)
61
61
  @job.start
62
62
  assert_equal false, @job.work(@worker), @job.exception.inspect
@@ -65,16 +65,16 @@ class WorkerTest < Minitest::Test
65
65
  end
66
66
  end
67
67
 
68
- context '.perform_now' do
69
- should "process perform (inline_mode=#{inline_mode})" do
68
+ describe '.perform_now' do
69
+ it "process perform (inline_mode=#{inline_mode})" do
70
70
  @job = Jobs::TestJob.perform_now(5)
71
71
  assert_equal true, @job.completed?
72
72
  assert_equal 6, Jobs::TestJob.result
73
73
  end
74
74
  end
75
75
 
76
- context '.now' do
77
- should "process non default method (inline_mode=#{inline_mode})" do
76
+ describe '.now' do
77
+ it "process non default method (inline_mode=#{inline_mode})" do
78
78
  @job = Jobs::TestJob.now(:sum, 23, 45)
79
79
  assert_equal true, @job.completed?, @job.inspect
80
80
  assert_equal 68, Jobs::TestJob.result
@@ -83,4 +83,4 @@ class WorkerTest < Minitest::Test
83
83
 
84
84
  end
85
85
  end
86
- end
86
+ end
data/test/test_helper.rb CHANGED
@@ -4,7 +4,6 @@ require 'yaml'
4
4
  require 'minitest/autorun'
5
5
  require 'minitest/reporters'
6
6
  require 'minitest/stub_any_instance'
7
- require 'shoulda/context'
8
7
  require 'rocketjob'
9
8
  require 'awesome_print'
10
9
  require 'symmetric-encryption'
data/test/worker_test.rb CHANGED
@@ -3,8 +3,8 @@ require_relative 'jobs/test_job'
3
3
 
4
4
  # Unit Test for RocketJob::Worker
5
5
  class WorkerTest < Minitest::Test
6
- context RocketJob::Worker do
7
- setup do
6
+ describe RocketJob::Worker do
7
+ before do
8
8
  RocketJob::Config.instance.heartbeat_seconds = 0.1
9
9
  RocketJob::Config.instance.max_poll_seconds = 0.1
10
10
 
@@ -18,19 +18,19 @@ class WorkerTest < Minitest::Test
18
18
  )
19
19
  end
20
20
 
21
- teardown do
21
+ after do
22
22
  @job.destroy if @job && !@job.new_record?
23
23
  @worker.destroy if @worker && !@worker.new_record?
24
24
  end
25
25
 
26
- context '.config' do
27
- should 'support multiple databases' do
26
+ describe '.config' do
27
+ it 'support multiple databases' do
28
28
  assert_equal 'test_rocketjob', RocketJob::Job.collection.db.name
29
29
  end
30
30
  end
31
31
 
32
- context '#run' do
33
- should 'run a worker' do
32
+ describe '#run' do
33
+ it 'run a worker' do
34
34
  Thread.new do
35
35
  sleep 1
36
36
  @worker.stop!
@@ -40,12 +40,12 @@ class WorkerTest < Minitest::Test
40
40
  end
41
41
  end
42
42
 
43
- context '#zombie?' do
44
- setup do
43
+ describe '#zombie?' do
44
+ before do
45
45
  RocketJob::Config.instance.heartbeat_seconds = 1
46
46
  end
47
47
 
48
- should 'when not a zombie' do
48
+ it 'when not a zombie' do
49
49
  @worker.build_heartbeat(
50
50
  updated_at: 2.seconds.ago,
51
51
  current_threads: 3
@@ -56,7 +56,7 @@ class WorkerTest < Minitest::Test
56
56
  assert_equal true, @worker.zombie?(1)
57
57
  end
58
58
 
59
- should 'when a zombie' do
59
+ it 'when a zombie' do
60
60
  @worker.build_heartbeat(
61
61
  updated_at: 1.hour.ago,
62
62
  current_threads: 5
@@ -66,12 +66,12 @@ class WorkerTest < Minitest::Test
66
66
  end
67
67
  end
68
68
 
69
- context '.destroy_zombies' do
70
- setup do
69
+ describe '.destroy_zombies' do
70
+ before do
71
71
  RocketJob::Config.instance.heartbeat_seconds = 1
72
72
  end
73
73
 
74
- should 'when not a zombie' do
74
+ it 'when not a zombie' do
75
75
  @worker.build_heartbeat(
76
76
  updated_at: 2.seconds.ago,
77
77
  current_threads: 3
@@ -81,7 +81,7 @@ class WorkerTest < Minitest::Test
81
81
  assert_equal true, RocketJob::Worker.where(id: @worker.id).exist?
82
82
  end
83
83
 
84
- should 'when a zombie' do
84
+ it 'when a zombie' do
85
85
  @worker.build_heartbeat(
86
86
  updated_at: 10.seconds.ago,
87
87
  current_threads: 3
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2015-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  version: '0'
161
161
  requirements: []
162
162
  rubyforge_project:
163
- rubygems_version: 2.4.8
163
+ rubygems_version: 2.4.5.1
164
164
  signing_key:
165
165
  specification_version: 4
166
166
  summary: Next generation background job processing system for Ruby, JRuby and Rubinius