rufus-scheduler 3.0.8 → 3.2.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.
@@ -1,356 +0,0 @@
1
-
2
- #
3
- # Specifying rufus-scheduler
4
- #
5
- # Wed Apr 17 06:00:59 JST 2013
6
- #
7
-
8
- require 'spec_helper'
9
-
10
-
11
- describe Rufus::Scheduler::RepeatJob do
12
-
13
- before :each do
14
- @scheduler = Rufus::Scheduler.new
15
- end
16
- after :each do
17
- @scheduler.shutdown
18
- end
19
-
20
- describe '#pause' do
21
-
22
- it 'pauses the job' do
23
-
24
- counter = 0
25
-
26
- job =
27
- @scheduler.schedule_every('0.5s') do
28
- counter += 1
29
- end
30
-
31
- expect(counter).to eq(0)
32
-
33
- while counter < 1; sleep(0.1); end
34
-
35
- job.pause
36
-
37
- sleep(1)
38
-
39
- expect(counter).to eq(1)
40
- end
41
- end
42
-
43
- describe '#paused?' do
44
-
45
- it 'returns true if the job is paused' do
46
-
47
- job = @scheduler.schedule_every('10s') do; end
48
-
49
- job.pause
50
-
51
- expect(job.paused?).to eq(true)
52
- end
53
-
54
- it 'returns false if the job is not paused' do
55
-
56
- job = @scheduler.schedule_every('10s') do; end
57
-
58
- expect(job.paused?).to eq(false)
59
- end
60
- end
61
-
62
- describe '#resume' do
63
-
64
- it 'resumes a paused job' do
65
-
66
- counter = 0
67
-
68
- job =
69
- @scheduler.schedule_every('0.5s') do
70
- counter += 1
71
- end
72
-
73
- job.pause
74
- job.resume
75
-
76
- sleep(1.5)
77
-
78
- expect(counter).to be > 1
79
- end
80
-
81
- it 'has no effect on a not paused job' do
82
-
83
- job = @scheduler.schedule_every('10s') do; end
84
-
85
- job.resume
86
-
87
- expect(job.paused?).to eq(false)
88
- end
89
- end
90
-
91
- describe ':times => i' do
92
-
93
- it 'lets a job unschedule itself after i times' do
94
-
95
- counter = 0
96
-
97
- job =
98
- @scheduler.schedule_every '0.5s', :times => 3 do
99
- counter = counter + 1
100
- end
101
-
102
- sleep(2.6)
103
-
104
- expect(counter).to eq(3)
105
- end
106
-
107
- it 'is OK when passed a nil instead of an integer' do
108
-
109
- counter = 0
110
-
111
- job =
112
- @scheduler.schedule_every '0.5s', :times => nil do
113
- counter = counter + 1
114
- end
115
-
116
- sleep(2.5)
117
-
118
- expect(counter).to be > 3
119
- end
120
-
121
- it 'raises when passed something else than nil or an integer' do
122
-
123
- expect {
124
- @scheduler.schedule_every '0.5s', :times => 'nada' do; end
125
- }.to raise_error(ArgumentError)
126
- end
127
- end
128
-
129
- describe ':first/:first_in/:first_at => point in time' do
130
-
131
- it 'accepts a Time instance' do
132
-
133
- t = Time.now + 10
134
-
135
- job = @scheduler.schedule_every '0.5s', :first => t do; end
136
-
137
- expect(job.first_at).to eq(t)
138
- end
139
-
140
- it 'accepts a time string' do
141
-
142
- t = Time.now + 10
143
-
144
- job = @scheduler.schedule_every '0.5s', :first => t.to_s do; end
145
-
146
- expect(job.first_at.to_s).to eq(t.to_s)
147
- expect(job.first_at.zone).to eq(t.zone)
148
- end
149
-
150
- it 'only lets the job trigger after the :first' do
151
-
152
- t = Time.now + 1.4
153
- counter = 0
154
-
155
- job =
156
- @scheduler.schedule_every '0.5s', :first => t do
157
- counter = counter + 1
158
- end
159
-
160
- sleep(1)
161
-
162
- expect(counter).to eq(0)
163
-
164
- sleep(1)
165
-
166
- expect(counter).to be > 0
167
- end
168
-
169
- it 'raises on points in the past' do
170
-
171
- expect {
172
-
173
- @scheduler.schedule_every '0.5s', :first => Time.now - 60 do; end
174
-
175
- }.to raise_error(ArgumentError)
176
- end
177
-
178
- context ':first_time => :now/:immediately' do
179
-
180
- it 'schedules the first execution immediately' do
181
-
182
- n = Time.now
183
- ft = nil
184
-
185
- job =
186
- @scheduler.schedule_every '7s', :first => :now do
187
- ft ||= Time.now
188
- end
189
-
190
- sleep 0.7
191
-
192
- #p n.to_f
193
- #p job.first_at.to_f
194
- #p ft.to_f
195
-
196
- expect(job.first_at).to be < n + 0.7
197
- expect(ft).to be < job.first_at + @scheduler.frequency + 0.1
198
- end
199
- end
200
- end
201
-
202
- describe ':first/:first_in/:first_at => duration' do
203
-
204
- it 'accepts a duration string' do
205
-
206
- t = Time.now
207
-
208
- job = @scheduler.schedule_every '0.5s', :first => '1h' do; end
209
-
210
- expect(job.first_at).to be >= t + 3600
211
- expect(job.first_at).to be < t + 3601
212
- end
213
-
214
- it 'accepts a duration in seconds (integer)' do
215
-
216
- t = Time.now
217
-
218
- job = @scheduler.schedule_every '0.5s', :first => 3600 do; end
219
-
220
- expect(job.first_at).to be >= t + 3600
221
- expect(job.first_at).to be < t + 3601
222
- end
223
-
224
- it 'raises if the argument cannot be used' do
225
-
226
- expect {
227
- @scheduler.every '0.5s', :first => :nada do; end
228
- }.to raise_error(ArgumentError)
229
- end
230
- end
231
-
232
- describe '#first_at=' do
233
-
234
- it 'can be used to set first_at directly' do
235
-
236
- job = @scheduler.schedule_every '0.5s', :first => 3600 do; end
237
- job.first_at = '2030-12-12 12:00:30'
238
-
239
- expect(job.first_at.strftime('%c')).to eq('Thu Dec 12 12:00:30 2030')
240
- end
241
- end
242
-
243
- describe ':last/:last_in/:last_at => point in time' do
244
-
245
- it 'accepts a Time instance' do
246
-
247
- t = Time.now + 10
248
-
249
- job = @scheduler.schedule_every '0.5s', :last => t do; end
250
-
251
- expect(job.last_at).to eq(t)
252
- end
253
-
254
- it 'unschedules the job after the last_at time' do
255
-
256
- t = Time.now + 2
257
-
258
- counter = 0
259
- tt = nil
260
-
261
- job =
262
- @scheduler.schedule_every '0.5s', :last => t do
263
- counter = counter + 1
264
- tt = Time.now
265
- end
266
-
267
- sleep 3
268
-
269
- #counter.should == 3
270
- expect([ 3, 4 ]).to include(counter)
271
- expect(tt).to be < t
272
- expect(@scheduler.jobs).not_to include(job)
273
- end
274
-
275
- it 'accepts a time string' do
276
-
277
- t = Time.now + 10
278
-
279
- job = @scheduler.schedule_every '0.5s', :last => t.to_s do; end
280
-
281
- expect(job.last_at.to_s).to eq(t.to_s)
282
- expect(job.last_at.zone).to eq(t.zone)
283
- end
284
-
285
- it 'raises on a point in the past' do
286
-
287
- expect {
288
-
289
- @scheduler.every '0.5s', :last => Time.now - 60 do; end
290
-
291
- }.to raise_error(ArgumentError)
292
- end
293
- end
294
-
295
- describe ':last/:last_in/:last_at => duration' do
296
-
297
- it 'accepts a duration string' do
298
-
299
- t = Time.now
300
-
301
- job = @scheduler.schedule_every '0.5s', :last_in => '2s' do; end
302
-
303
- expect(job.last_at).to be >= t + 2
304
- expect(job.last_at).to be < t + 2.5
305
- end
306
-
307
- it 'accepts a duration in seconds (integer)' do
308
-
309
- t = Time.now
310
-
311
- job = @scheduler.schedule_every '0.5s', :last_in => 2.0 do; end
312
-
313
- expect(job.last_at).to be >= t + 2
314
- expect(job.last_at).to be < t + 2.5
315
- end
316
-
317
- it 'raises if the argument is worthless' do
318
-
319
- expect {
320
- @scheduler.every '0.5s', :last => :nada do; end
321
- }.to raise_error(ArgumentError)
322
- end
323
- end
324
-
325
- describe '#last_at=' do
326
-
327
- it 'can be used to set last_at directly' do
328
-
329
- job = @scheduler.schedule_every '0.5s', :last_in => 10.0 do; end
330
- job.last_at = '2030-12-12 12:00:30'
331
-
332
- expect(job.last_at.strftime('%c')).to eq('Thu Dec 12 12:00:30 2030')
333
- end
334
- end
335
-
336
- describe '#count' do
337
-
338
- it 'starts at 0' do
339
-
340
- job = @scheduler.schedule_every '5m' do; end
341
-
342
- expect(job.count).to eq(0)
343
- end
344
-
345
- it 'keeps track of how many times the job fired' do
346
-
347
- job = @scheduler.schedule_every '0.5s' do; end
348
-
349
- sleep(2.0)
350
-
351
- expect(job.count).to be >= 3
352
- expect(job.count).to be <= 4
353
- end
354
- end
355
- end
356
-