rocketjob 2.0.0.rc3 → 2.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.
@@ -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