rocketjob 2.0.0.rc3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,111 @@
1
+ require_relative '../test_helper'
2
+
3
+ # Unit Test for RocketJob::Job
4
+ module Plugins
5
+ class ProcessingWindowTest < Minitest::Test
6
+ class ProcessingWindowJob < RocketJob::Job
7
+ include RocketJob::Plugins::ProcessingWindow
8
+
9
+ def perform
10
+ 'DONE'
11
+ end
12
+ end
13
+
14
+ describe RocketJob::Plugins::ProcessingWindow do
15
+ before do
16
+ # destroy_all could create new instances
17
+ ProcessingWindowJob.delete_all
18
+ assert_equal 0, ProcessingWindowJob.count
19
+ end
20
+
21
+ after do
22
+ @job.destroy if @job && !@job.new_record?
23
+ ProcessingWindowJob.delete_all
24
+ end
25
+
26
+ describe '#create!' do
27
+ it 'queues a new job' do
28
+ @job = ProcessingWindowJob.create!(processing_schedule: '* 1 * * *', processing_duration: 1.hour)
29
+ assert @job.valid?
30
+ refute @job.new_record?
31
+ end
32
+
33
+ describe 'timezones are supported' do
34
+ it 'handles UTC' do
35
+ time = Time.parse('2015-12-09 17:50:05 +0000')
36
+ Time.stub(:now, time) do
37
+ @job = ProcessingWindowJob.create!(processing_schedule: '* 1 * * * UTC', processing_duration: 1.hour)
38
+ end
39
+ assert @job.valid?
40
+ refute @job.new_record?
41
+ assert_equal Time.parse('2015-12-10 01:00:00 UTC'), @job.run_at
42
+ end
43
+
44
+ it 'handles Eastern' do
45
+ time = Time.parse('2015-12-09 17:50:05 +0000')
46
+ Time.stub(:now, time) do
47
+ @job = ProcessingWindowJob.create!(processing_schedule: '* 1 * * * America/New_York', processing_duration: 1.hour)
48
+ end
49
+ assert @job.valid?
50
+ refute @job.new_record?
51
+ assert_equal Time.parse('2015-12-10 06:00:00 UTC'), @job.run_at
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '#rocket_job_processing_window_active?' do
57
+ it 'returns true when in the processing window' do
58
+ time = Time.parse('2015-12-09 17:50:05 +0000')
59
+ @job = ProcessingWindowJob.new(processing_schedule: '* 17 * * * UTC', processing_duration: 1.hour)
60
+ result = Time.stub(:now, time) do
61
+ @job.rocket_job_processing_window_active?
62
+ end
63
+ assert result, @job.attributes.ai
64
+ end
65
+
66
+ it 'returns false when not in the processing window' do
67
+ time = Time.parse('2015-12-09 16:50:05 +0000')
68
+ @job = ProcessingWindowJob.new(processing_schedule: '* 17 * * * UTC', processing_duration: 1.hour)
69
+ result = Time.stub(:now, time) do
70
+ @job.rocket_job_processing_window_active?
71
+ end
72
+ refute result, @job.attributes.ai
73
+ end
74
+ end
75
+
76
+ describe '#valid?' do
77
+ it 'fails on missing processing_schedule' do
78
+ @job = ProcessingWindowJob.new
79
+ refute @job.valid?
80
+ assert_equal "can't be blank", @job.errors.messages[:processing_schedule].first
81
+ assert_equal "not a string: nil", @job.errors.messages[:processing_schedule].second
82
+ assert_equal "can't be blank", @job.errors.messages[:processing_duration].first
83
+ end
84
+
85
+ it 'fails on bad cron schedule' do
86
+ @job = ProcessingWindowJob.new(processing_schedule: 'blah')
87
+ refute @job.valid?
88
+ assert_equal "not a valid cronline : 'blah'", @job.errors.messages[:processing_schedule].first
89
+ end
90
+
91
+ it 'passes on valid cron schedule' do
92
+ @job = ProcessingWindowJob.new(processing_schedule: '* 1 * * *', processing_duration: 1.hour)
93
+ assert @job.valid?
94
+ end
95
+ end
96
+
97
+ describe 're-queue' do
98
+ it 'if outside processing window' do
99
+ time = Time.parse('2015-12-09 16:50:05 +0000')
100
+ Time.stub(:now, time) do
101
+ @job = ProcessingWindowJob.new(processing_schedule: '* 17 * * * UTC', processing_duration: 1.hour)
102
+ @job.perform_now
103
+ end
104
+ assert @job.queued?, @job.attributes.ai
105
+ end
106
+ end
107
+
108
+ end
109
+
110
+ end
111
+ end
@@ -14,7 +14,7 @@ require 'rocketjob'
14
14
 
15
15
  MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
16
16
 
17
- SemanticLogger.add_appender('test.log', &SemanticLogger::Appender::Base.colorized_formatter)
17
+ SemanticLogger.add_appender(file_name: 'test.log', formatter: :color)
18
18
  SemanticLogger.default_level = :debug
19
19
 
20
20
  RocketJob::Config.load!('test', 'test/config/mongo.yml')
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-14 00:00:00.000000000 Z
11
+ date: 2016-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aasm
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4.3'
27
- - !ruby/object:Gem::Dependency
28
- name: semantic_logger
14
+ name: concurrent-ruby
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '3.0'
19
+ version: '1.0'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '3.0'
26
+ version: '1.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: mongo_ha
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,63 +39,63 @@ dependencies:
53
39
  - !ruby/object:Gem::Version
54
40
  version: '1.11'
55
41
  - !ruby/object:Gem::Dependency
56
- name: mongo
42
+ name: mongo_mapper
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '1.11'
47
+ version: '0.13'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '1.11'
54
+ version: '0.13'
69
55
  - !ruby/object:Gem::Dependency
70
- name: mongo_mapper
56
+ name: semantic_logger
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '0.13'
61
+ version: '3.1'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0.13'
68
+ version: '3.1'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: symmetric-encryption
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - "~>"
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '3.0'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - "~>"
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '3.0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: concurrent-ruby
84
+ name: aasm
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - "~>"
87
+ - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '1.0'
89
+ version: '4.3'
104
90
  type: :runtime
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - "~>"
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: '1.0'
111
- description: Enterprise Batch Processing System focused on performance, scalability,
112
- reliability, and visibility of every job in the system.
96
+ version: '4.3'
97
+ description: Batch Processing System focused on performance, scalability, reliability,
98
+ and visibility of every job in the system.
113
99
  email:
114
100
  - reidmo@gmail.com
115
101
  executables:
@@ -133,6 +119,8 @@ files:
133
119
  - lib/rocket_job/job_exception.rb
134
120
  - lib/rocket_job/jobs/dirmon_job.rb
135
121
  - lib/rocket_job/jobs/simple_job.rb
122
+ - lib/rocket_job/performance.rb
123
+ - lib/rocket_job/plugins/cron.rb
136
124
  - lib/rocket_job/plugins/document.rb
137
125
  - lib/rocket_job/plugins/document/static.rb
138
126
  - lib/rocket_job/plugins/job/callbacks.rb
@@ -142,7 +130,10 @@ files:
142
130
  - lib/rocket_job/plugins/job/persistence.rb
143
131
  - lib/rocket_job/plugins/job/state_machine.rb
144
132
  - lib/rocket_job/plugins/job/worker.rb
133
+ - lib/rocket_job/plugins/processing_window.rb
145
134
  - lib/rocket_job/plugins/restart.rb
135
+ - lib/rocket_job/plugins/rufus/cron_line.rb
136
+ - lib/rocket_job/plugins/rufus/zo_time.rb
146
137
  - lib/rocket_job/plugins/singleton.rb
147
138
  - lib/rocket_job/plugins/state_machine.rb
148
139
  - lib/rocket_job/version.rb
@@ -154,6 +145,7 @@ files:
154
145
  - test/dirmon_job_test.rb
155
146
  - test/files/text.txt
156
147
  - test/job_test.rb
148
+ - test/plugins/cron_test.rb
157
149
  - test/plugins/job/callbacks_test.rb
158
150
  - test/plugins/job/defaults_test.rb
159
151
  - test/plugins/job/logger_test.rb
@@ -161,6 +153,7 @@ files:
161
153
  - test/plugins/job/persistence_test.rb
162
154
  - test/plugins/job/state_machine_test.rb
163
155
  - test/plugins/job/worker_test.rb
156
+ - test/plugins/processing_window_test.rb
164
157
  - test/plugins/restart_test.rb
165
158
  - test/plugins/singleton_test.rb
166
159
  - test/plugins/state_machine_event_callbacks_test.rb
@@ -168,7 +161,7 @@ files:
168
161
  - test/test_helper.rb
169
162
  homepage: http://rocketjob.io
170
163
  licenses:
171
- - GPL-3.0
164
+ - Apache-2.0
172
165
  metadata: {}
173
166
  post_install_message:
174
167
  rdoc_options: []
@@ -181,15 +174,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
174
  version: '0'
182
175
  required_rubygems_version: !ruby/object:Gem::Requirement
183
176
  requirements:
184
- - - ">"
177
+ - - ">="
185
178
  - !ruby/object:Gem::Version
186
- version: 1.3.1
179
+ version: '0'
187
180
  requirements: []
188
181
  rubyforge_project:
189
182
  rubygems_version: 2.4.8
190
183
  signing_key:
191
184
  specification_version: 4
192
- summary: Enterprise Batch Processing System for Ruby, JRuby, and Rubinius
185
+ summary: Batch Processing System for Ruby
193
186
  test_files:
194
187
  - test/config/mongo.yml
195
188
  - test/config_test.rb
@@ -197,6 +190,7 @@ test_files:
197
190
  - test/dirmon_job_test.rb
198
191
  - test/files/text.txt
199
192
  - test/job_test.rb
193
+ - test/plugins/cron_test.rb
200
194
  - test/plugins/job/callbacks_test.rb
201
195
  - test/plugins/job/defaults_test.rb
202
196
  - test/plugins/job/logger_test.rb
@@ -204,6 +198,7 @@ test_files:
204
198
  - test/plugins/job/persistence_test.rb
205
199
  - test/plugins/job/state_machine_test.rb
206
200
  - test/plugins/job/worker_test.rb
201
+ - test/plugins/processing_window_test.rb
207
202
  - test/plugins/restart_test.rb
208
203
  - test/plugins/singleton_test.rb
209
204
  - test/plugins/state_machine_event_callbacks_test.rb