rufus-scheduler 3.0.7 → 3.0.8
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/CHANGELOG.txt +9 -1
- data/CREDITS.txt +2 -0
- data/README.md +7 -3
- data/TODO.txt +4 -0
- data/lib/rufus/scheduler.rb +12 -7
- data/lib/rufus/scheduler/cronline.rb +18 -2
- data/lib/rufus/scheduler/jobs.rb +6 -3
- data/lib/rufus/scheduler/util.rb +6 -5
- data/rufus-scheduler.gemspec +1 -0
- data/spec/basics_spec.rb +49 -0
- data/spec/cronline_spec.rb +231 -126
- data/spec/custom_locks_spec.rb +2 -2
- data/spec/error_spec.rb +12 -12
- data/spec/job_array_spec.rb +2 -2
- data/spec/job_at_spec.rb +4 -4
- data/spec/job_cron_spec.rb +7 -7
- data/spec/job_every_spec.rb +9 -9
- data/spec/job_interval_spec.rb +5 -5
- data/spec/job_repeat_spec.rb +45 -44
- data/spec/job_spec.rb +67 -67
- data/spec/lockfile_spec.rb +5 -5
- data/spec/parse_spec.rb +120 -78
- data/spec/schedule_at_spec.rb +46 -17
- data/spec/schedule_cron_spec.rb +6 -6
- data/spec/schedule_every_spec.rb +12 -12
- data/spec/schedule_in_spec.rb +8 -8
- data/spec/schedule_interval_spec.rb +13 -13
- data/spec/scheduler_spec.rb +134 -118
- data/spec/spec_helper.rb +50 -1
- data/spec/threads_spec.rb +4 -4
- metadata +20 -9
data/spec/schedule_at_spec.rb
CHANGED
@@ -21,9 +21,9 @@ describe Rufus::Scheduler do
|
|
21
21
|
|
22
22
|
it 'raises if the block to schedule is missing' do
|
23
23
|
|
24
|
-
|
24
|
+
expect {
|
25
25
|
@scheduler.at(Time.now + 3600)
|
26
|
-
}.
|
26
|
+
}.to raise_error(ArgumentError)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'returns a job id' do
|
@@ -32,8 +32,8 @@ describe Rufus::Scheduler do
|
|
32
32
|
@scheduler.at(Time.now + 3600) do
|
33
33
|
end
|
34
34
|
|
35
|
-
job_id.class.
|
36
|
-
job_id.
|
35
|
+
expect(job_id.class).to eq(String)
|
36
|
+
expect(job_id).to match(/^at_/)
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'returns a job if :job => true' do
|
@@ -42,7 +42,7 @@ describe Rufus::Scheduler do
|
|
42
42
|
@scheduler.at(Time.now + 3600, :job => true) do
|
43
43
|
end
|
44
44
|
|
45
|
-
job.class.
|
45
|
+
expect(job.class).to eq(Rufus::Scheduler::AtJob)
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'adds a job' do
|
@@ -52,9 +52,9 @@ describe Rufus::Scheduler do
|
|
52
52
|
@scheduler.at(t) do
|
53
53
|
end
|
54
54
|
|
55
|
-
@scheduler.jobs.size.
|
56
|
-
@scheduler.jobs.first.class.
|
57
|
-
@scheduler.jobs.first.time.
|
55
|
+
expect(@scheduler.jobs.size).to eq(1)
|
56
|
+
expect(@scheduler.jobs.first.class).to eq(Rufus::Scheduler::AtJob)
|
57
|
+
expect(@scheduler.jobs.first.time).to eq(t)
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'triggers a job' do
|
@@ -67,7 +67,7 @@ describe Rufus::Scheduler do
|
|
67
67
|
|
68
68
|
sleep 0.4
|
69
69
|
|
70
|
-
a.
|
70
|
+
expect(a).to eq(true)
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'removes the job after execution' do
|
@@ -77,7 +77,7 @@ describe Rufus::Scheduler do
|
|
77
77
|
|
78
78
|
sleep 0.4
|
79
79
|
|
80
|
-
@scheduler.jobs.size.
|
80
|
+
expect(@scheduler.jobs.size).to eq(0)
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'accepts a Time instance' do
|
@@ -86,31 +86,60 @@ describe Rufus::Scheduler do
|
|
86
86
|
|
87
87
|
job = @scheduler.at(t, :job => true) {}
|
88
88
|
|
89
|
-
job.time.
|
89
|
+
expect(job.time).to eq(t)
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'accepts a time string' do
|
93
93
|
|
94
94
|
job = @scheduler.at('2100-12-12 20:30', :job => true) {}
|
95
95
|
|
96
|
-
job.time.
|
96
|
+
expect(job.time).to eq(Time.parse('2100-12-12 20:30'))
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'accepts a time string with a delta timezone' do
|
100
100
|
|
101
101
|
job = @scheduler.at('2100-12-12 20:30 -0200', :job => true) {}
|
102
102
|
|
103
|
-
job.time.
|
103
|
+
expect(job.time).to eq(Time.parse('2100-12-12 20:30 -0200'))
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'accepts a time string with a named timezone' do
|
107
107
|
|
108
108
|
job = @scheduler.at('2050-12-12 20:30 Europe/Berlin', :job => true) {}
|
109
109
|
|
110
|
-
job.time.strftime('%c %z').
|
110
|
+
expect(job.time.strftime('%c %z')).to eq('Mon Dec 12 19:30:00 2050 +0000')
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'accepts a Chronic string (if Chronic is present)' do
|
114
|
+
|
115
|
+
with_chronic do
|
116
|
+
|
117
|
+
job = @scheduler.schedule_at('next tuesday at 12:00') {}
|
118
|
+
|
119
|
+
expect(job.time.wday).to eq(2)
|
120
|
+
expect(job.time.hour).to eq(12)
|
121
|
+
expect(job.time.min).to eq(0)
|
122
|
+
expect(job.time).to be > Time.now
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'accepts a Chronic string and Chronic options (if Chronic present)' do
|
127
|
+
|
128
|
+
with_chronic do
|
129
|
+
|
130
|
+
job =
|
131
|
+
@scheduler.schedule_at(
|
132
|
+
'may 27th at 12:00', :now => Time.local(Time.now.year + 2, 1, 1)
|
133
|
+
) {}
|
134
|
+
|
135
|
+
expect(job.time.year).to eq(Time.now.year + 2)
|
136
|
+
expect(job.time.month).to eq(5)
|
137
|
+
expect(job.time.day).to eq(27)
|
138
|
+
expect(job.time.hour).to eq(12)
|
139
|
+
expect(job.time.min).to eq(0)
|
140
|
+
end
|
111
141
|
end
|
112
142
|
|
113
|
-
it 'accepts a Chronic time string (if Chronic is present)'
|
114
143
|
it 'accepts an ActiveSupport time thinggy'
|
115
144
|
end
|
116
145
|
|
@@ -121,8 +150,8 @@ describe Rufus::Scheduler do
|
|
121
150
|
job = @scheduler.schedule_at(Time.now + 3600) do
|
122
151
|
end
|
123
152
|
|
124
|
-
job.class.
|
125
|
-
job.id.
|
153
|
+
expect(job.class).to eq(Rufus::Scheduler::AtJob)
|
154
|
+
expect(job.id).to match(/^at_/)
|
126
155
|
end
|
127
156
|
end
|
128
157
|
end
|
data/spec/schedule_cron_spec.rb
CHANGED
@@ -38,16 +38,16 @@ describe Rufus::Scheduler do
|
|
38
38
|
sleep_until_next_second
|
39
39
|
sleep 0.3 # be sure to be well into the second
|
40
40
|
|
41
|
-
counter.
|
41
|
+
expect(counter).to eq(2)
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'raises if the job frequency is higher than the scheduler frequency' do
|
45
45
|
|
46
46
|
@scheduler.frequency = 10
|
47
47
|
|
48
|
-
|
48
|
+
expect {
|
49
49
|
@scheduler.cron '* * * * * *' do; end
|
50
|
-
}.
|
50
|
+
}.to raise_error(ArgumentError)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -57,9 +57,9 @@ describe Rufus::Scheduler do
|
|
57
57
|
|
58
58
|
job = @scheduler.schedule_cron '* * * * *' do; end
|
59
59
|
|
60
|
-
job.class.
|
61
|
-
job.original.
|
62
|
-
job.job_id.
|
60
|
+
expect(job.class).to eq(Rufus::Scheduler::CronJob)
|
61
|
+
expect(job.original).to eq('* * * * *')
|
62
|
+
expect(job.job_id).to match(/^cron_/)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
data/spec/schedule_every_spec.rb
CHANGED
@@ -24,8 +24,8 @@ describe Rufus::Scheduler do
|
|
24
24
|
@scheduler.every(10) do
|
25
25
|
end
|
26
26
|
|
27
|
-
@scheduler.jobs.size.
|
28
|
-
@scheduler.jobs.first.class.
|
27
|
+
expect(@scheduler.jobs.size).to eq(1)
|
28
|
+
expect(@scheduler.jobs.first.class).to eq(Rufus::Scheduler::EveryJob)
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'triggers a job (2 times)' do
|
@@ -38,7 +38,7 @@ describe Rufus::Scheduler do
|
|
38
38
|
|
39
39
|
sleep 2.0
|
40
40
|
|
41
|
-
counter.
|
41
|
+
expect(counter).to be > 2
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'does not remove the job after execution' do
|
@@ -48,23 +48,23 @@ describe Rufus::Scheduler do
|
|
48
48
|
|
49
49
|
sleep 0.9
|
50
50
|
|
51
|
-
@scheduler.jobs.size.
|
51
|
+
expect(@scheduler.jobs.size).to eq(1)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'raises on negative frequencies' do
|
55
55
|
|
56
|
-
|
56
|
+
expect {
|
57
57
|
@scheduler.every(-1) do
|
58
58
|
end
|
59
|
-
}.
|
59
|
+
}.to raise_error(ArgumentError)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'raises on zero frequencies' do
|
63
63
|
|
64
|
-
|
64
|
+
expect {
|
65
65
|
@scheduler.every(0) do
|
66
66
|
end
|
67
|
-
}.
|
67
|
+
}.to raise_error(ArgumentError)
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'does not reschedule if the job was unscheduled' do
|
@@ -83,16 +83,16 @@ describe Rufus::Scheduler do
|
|
83
83
|
|
84
84
|
sleep 1.6
|
85
85
|
|
86
|
-
counter.
|
86
|
+
expect(counter).to eq(c)
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'raises if the job frequency is higher than the scheduler frequency' do
|
90
90
|
|
91
91
|
@scheduler.frequency = 10
|
92
92
|
|
93
|
-
|
93
|
+
expect {
|
94
94
|
@scheduler.every '1s' do; end
|
95
|
-
}.
|
95
|
+
}.to raise_error(ArgumentError)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
@@ -102,7 +102,7 @@ describe Rufus::Scheduler do
|
|
102
102
|
|
103
103
|
job = @scheduler.schedule_every('1h') do; end
|
104
104
|
|
105
|
-
job.frequency.
|
105
|
+
expect(job.frequency).to eq(3600.0)
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
data/spec/schedule_in_spec.rb
CHANGED
@@ -24,8 +24,8 @@ describe Rufus::Scheduler do
|
|
24
24
|
@scheduler.in(3600) do
|
25
25
|
end
|
26
26
|
|
27
|
-
@scheduler.jobs.size.
|
28
|
-
@scheduler.jobs.first.class.
|
27
|
+
expect(@scheduler.jobs.size).to eq(1)
|
28
|
+
expect(@scheduler.jobs.first.class).to eq(Rufus::Scheduler::InJob)
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'triggers a job' do
|
@@ -38,7 +38,7 @@ describe Rufus::Scheduler do
|
|
38
38
|
|
39
39
|
sleep 0.9
|
40
40
|
|
41
|
-
a.
|
41
|
+
expect(a).to eq(true)
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'removes the job after execution' do
|
@@ -48,7 +48,7 @@ describe Rufus::Scheduler do
|
|
48
48
|
|
49
49
|
sleep 0.700
|
50
50
|
|
51
|
-
@scheduler.jobs.size.
|
51
|
+
expect(@scheduler.jobs.size).to eq(0)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -58,16 +58,16 @@ describe Rufus::Scheduler do
|
|
58
58
|
|
59
59
|
job = @scheduler.schedule_in(3600) {}
|
60
60
|
|
61
|
-
job.original.
|
61
|
+
expect(job.original).to eq(3600)
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'accepts a duration string' do
|
65
65
|
|
66
66
|
job = @scheduler.schedule_in('1h') {}
|
67
67
|
|
68
|
-
job.original.
|
69
|
-
job.time.
|
70
|
-
job.time.
|
68
|
+
expect(job.original).to eq('1h')
|
69
|
+
expect(job.time).to be >= job.scheduled_at + 3509
|
70
|
+
expect(job.time).to be <= job.scheduled_at + 3601
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'accepts an ActiveSupport .from_now thinggy'
|
@@ -24,8 +24,8 @@ describe Rufus::Scheduler do
|
|
24
24
|
@scheduler.interval(10) do
|
25
25
|
end
|
26
26
|
|
27
|
-
@scheduler.jobs.size.
|
28
|
-
@scheduler.jobs.first.class.
|
27
|
+
expect(@scheduler.jobs.size).to eq(1)
|
28
|
+
expect(@scheduler.jobs.first.class).to eq(Rufus::Scheduler::IntervalJob)
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'triggers a job (2 times)' do
|
@@ -38,7 +38,7 @@ describe Rufus::Scheduler do
|
|
38
38
|
|
39
39
|
sleep 2.0
|
40
40
|
|
41
|
-
counter.
|
41
|
+
expect(counter).to be > 2
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'triggers, but reschedules after the trigger execution' do
|
@@ -55,7 +55,7 @@ describe Rufus::Scheduler do
|
|
55
55
|
t = Time.now
|
56
56
|
sleep 0.1 while chronos.size < 4 && Time.now < t + 5
|
57
57
|
|
58
|
-
chronos.size.
|
58
|
+
expect(chronos.size).to eq(4)
|
59
59
|
|
60
60
|
deltas = chronos.collect(&:last).compact
|
61
61
|
|
@@ -63,7 +63,7 @@ describe Rufus::Scheduler do
|
|
63
63
|
#pp deltas
|
64
64
|
|
65
65
|
deltas.each do |d|
|
66
|
-
d.
|
66
|
+
expect(d).to be >= 0.9
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -78,31 +78,31 @@ describe Rufus::Scheduler do
|
|
78
78
|
|
79
79
|
sleep 1.6
|
80
80
|
|
81
|
-
@scheduler.jobs(:all).size.
|
81
|
+
expect(@scheduler.jobs(:all).size).to eq(1)
|
82
82
|
|
83
83
|
job.unschedule
|
84
84
|
c = counter
|
85
85
|
|
86
86
|
sleep 1.6
|
87
87
|
|
88
|
-
counter.
|
89
|
-
@scheduler.jobs(:all).size.
|
88
|
+
expect(counter).to eq(c)
|
89
|
+
expect(@scheduler.jobs(:all).size).to eq(0)
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'raises on negative intervals' do
|
93
93
|
|
94
|
-
|
94
|
+
expect {
|
95
95
|
@scheduler.interval(-1) do
|
96
96
|
end
|
97
|
-
}.
|
97
|
+
}.to raise_error(ArgumentError)
|
98
98
|
end
|
99
99
|
|
100
100
|
it 'raises on zero intervals' do
|
101
101
|
|
102
|
-
|
102
|
+
expect {
|
103
103
|
@scheduler.interval(0) do
|
104
104
|
end
|
105
|
-
}.
|
105
|
+
}.to raise_error(ArgumentError)
|
106
106
|
end
|
107
107
|
|
108
108
|
#it 'raises if the job frequency is higher than the scheduler frequency' do
|
@@ -121,7 +121,7 @@ describe Rufus::Scheduler do
|
|
121
121
|
|
122
122
|
job = @scheduler.schedule_interval('1h') do; end
|
123
123
|
|
124
|
-
job.interval.
|
124
|
+
expect(job.interval).to eq(3600)
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
data/spec/scheduler_spec.rb
CHANGED
@@ -20,31 +20,33 @@ describe Rufus::Scheduler do
|
|
20
20
|
t[:name] == "rufus_scheduler_#{scheduler.object_id}_scheduler"
|
21
21
|
}
|
22
22
|
|
23
|
-
t[:rufus_scheduler].
|
23
|
+
expect(t[:rufus_scheduler]).to eq(scheduler)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'sets :name and :rufus_scheduler in the scheduler thread local vars' do
|
27
27
|
|
28
28
|
scheduler = Rufus::Scheduler.new
|
29
29
|
|
30
|
-
scheduler.thread[:name].
|
30
|
+
expect(scheduler.thread[:name]).to eq(
|
31
31
|
"rufus_scheduler_#{scheduler.object_id}_scheduler"
|
32
|
-
|
32
|
+
)
|
33
|
+
expect(scheduler.thread[:rufus_scheduler]).to eq(
|
33
34
|
scheduler
|
35
|
+
)
|
34
36
|
end
|
35
37
|
|
36
38
|
it 'accepts a :frequency => integer option' do
|
37
39
|
|
38
40
|
scheduler = Rufus::Scheduler.new(:frequency => 2)
|
39
41
|
|
40
|
-
scheduler.frequency.
|
42
|
+
expect(scheduler.frequency).to eq(2)
|
41
43
|
end
|
42
44
|
|
43
45
|
it 'accepts a :frequency => "2h1m" option' do
|
44
46
|
|
45
47
|
scheduler = Rufus::Scheduler.new(:frequency => '2h1m')
|
46
48
|
|
47
|
-
scheduler.frequency.
|
49
|
+
expect(scheduler.frequency).to eq(3600 * 2 + 60)
|
48
50
|
end
|
49
51
|
|
50
52
|
it 'accepts a :thread_name option' do
|
@@ -53,7 +55,7 @@ describe Rufus::Scheduler do
|
|
53
55
|
|
54
56
|
t = Thread.list.find { |t| t[:name] == 'oliphant' }
|
55
57
|
|
56
|
-
t[:rufus_scheduler].
|
58
|
+
expect(t[:rufus_scheduler]).to eq(scheduler)
|
57
59
|
end
|
58
60
|
|
59
61
|
#it 'accepts a :min_work_threads option' do
|
@@ -65,7 +67,7 @@ describe Rufus::Scheduler do
|
|
65
67
|
|
66
68
|
scheduler = Rufus::Scheduler.new(:max_work_threads => 9)
|
67
69
|
|
68
|
-
scheduler.max_work_threads.
|
70
|
+
expect(scheduler.max_work_threads).to eq(9)
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
@@ -85,7 +87,7 @@ describe Rufus::Scheduler do
|
|
85
87
|
|
86
88
|
sleep 0.4
|
87
89
|
|
88
|
-
j.
|
90
|
+
expect(j).to eq(job)
|
89
91
|
end
|
90
92
|
|
91
93
|
it 'passes the trigger time as second block argument' do
|
@@ -95,7 +97,7 @@ describe Rufus::Scheduler do
|
|
95
97
|
|
96
98
|
sleep 0.4
|
97
99
|
|
98
|
-
t.class.
|
100
|
+
expect(t.class).to eq(Time)
|
99
101
|
end
|
100
102
|
|
101
103
|
class MyHandler
|
@@ -116,7 +118,7 @@ describe Rufus::Scheduler do
|
|
116
118
|
|
117
119
|
sleep 0.4
|
118
120
|
|
119
|
-
mh.counter.
|
121
|
+
expect(mh.counter).to eq(1)
|
120
122
|
end
|
121
123
|
|
122
124
|
class MyOtherHandler
|
@@ -135,7 +137,7 @@ describe Rufus::Scheduler do
|
|
135
137
|
|
136
138
|
sleep 0.4
|
137
139
|
|
138
|
-
job.handler.counter.
|
140
|
+
expect(job.handler.counter).to eq(1)
|
139
141
|
end
|
140
142
|
|
141
143
|
it 'accepts a class as callable' do
|
@@ -150,16 +152,16 @@ describe Rufus::Scheduler do
|
|
150
152
|
|
151
153
|
sleep 0.4
|
152
154
|
|
153
|
-
job.handler.value.
|
155
|
+
expect(job.handler.value).to eq(7)
|
154
156
|
end
|
155
157
|
|
156
158
|
it 'raises if the scheduler is shutting down' do
|
157
159
|
|
158
160
|
@scheduler.shutdown
|
159
161
|
|
160
|
-
|
162
|
+
expect {
|
161
163
|
@scheduler.in('0s') { puts 'hhhhhhhhhhhello!!' }
|
162
|
-
}.
|
164
|
+
}.to raise_error(Rufus::Scheduler::NotRunningError)
|
163
165
|
end
|
164
166
|
end
|
165
167
|
|
@@ -196,23 +198,23 @@ describe Rufus::Scheduler do
|
|
196
198
|
|
197
199
|
j = @scheduler.schedule '1s' do; end
|
198
200
|
|
199
|
-
j.class.
|
200
|
-
j.original.
|
201
|
+
expect(j.class).to eq(Rufus::Scheduler::InJob)
|
202
|
+
expect(j.original).to eq('1s')
|
201
203
|
end
|
202
204
|
|
203
205
|
it 'accepts a point in time and schedules an AtJob' do
|
204
206
|
|
205
207
|
j = @scheduler.schedule '2070/12/24 23:00' do; end
|
206
208
|
|
207
|
-
j.class.
|
208
|
-
j.next_time.strftime('%Y %m %d').
|
209
|
+
expect(j.class).to eq(Rufus::Scheduler::AtJob)
|
210
|
+
expect(j.next_time.strftime('%Y %m %d')).to eq('2070 12 24')
|
209
211
|
end
|
210
212
|
|
211
213
|
it 'accepts a cron string and schedules a CronJob' do
|
212
214
|
|
213
215
|
j = @scheduler.schedule '* * * * *' do; end
|
214
216
|
|
215
|
-
j.class.
|
217
|
+
expect(j.class).to eq(Rufus::Scheduler::CronJob)
|
216
218
|
end
|
217
219
|
end
|
218
220
|
|
@@ -222,14 +224,14 @@ describe Rufus::Scheduler do
|
|
222
224
|
|
223
225
|
j = @scheduler.repeat '1s' do; end
|
224
226
|
|
225
|
-
j.class.
|
227
|
+
expect(j.class).to eq(Rufus::Scheduler::EveryJob)
|
226
228
|
end
|
227
229
|
|
228
230
|
it 'accepts a cron string and schedules a CronJob' do
|
229
231
|
|
230
232
|
j = @scheduler.repeat '* * * * *' do; end
|
231
233
|
|
232
|
-
j.class.
|
234
|
+
expect(j.class).to eq(Rufus::Scheduler::CronJob)
|
233
235
|
end
|
234
236
|
end
|
235
237
|
|
@@ -239,22 +241,22 @@ describe Rufus::Scheduler do
|
|
239
241
|
|
240
242
|
job = @scheduler.schedule_in '10d' do; end
|
241
243
|
|
242
|
-
job.unscheduled_at.
|
244
|
+
expect(job.unscheduled_at).to eq(nil)
|
243
245
|
|
244
246
|
@scheduler.unschedule(job.id)
|
245
247
|
|
246
|
-
job.unscheduled_at.
|
248
|
+
expect(job.unscheduled_at).not_to eq(nil)
|
247
249
|
end
|
248
250
|
|
249
251
|
it 'accepts jobs' do
|
250
252
|
|
251
253
|
job = @scheduler.schedule_in '10d' do; end
|
252
254
|
|
253
|
-
job.unscheduled_at.
|
255
|
+
expect(job.unscheduled_at).to eq(nil)
|
254
256
|
|
255
257
|
@scheduler.unschedule(job)
|
256
258
|
|
257
|
-
job.unscheduled_at.
|
259
|
+
expect(job.unscheduled_at).not_to eq(nil)
|
258
260
|
end
|
259
261
|
|
260
262
|
it 'carefully unschedules repeat jobs' do
|
@@ -272,7 +274,7 @@ describe Rufus::Scheduler do
|
|
272
274
|
@scheduler.unschedule(job)
|
273
275
|
|
274
276
|
sleep 1.5
|
275
|
-
counter.
|
277
|
+
expect(counter).to eq(c)
|
276
278
|
end
|
277
279
|
end
|
278
280
|
|
@@ -280,7 +282,7 @@ describe Rufus::Scheduler do
|
|
280
282
|
|
281
283
|
it 'returns the uptime as a float' do
|
282
284
|
|
283
|
-
@scheduler.uptime.
|
285
|
+
expect(@scheduler.uptime).to be >= 0.0
|
284
286
|
end
|
285
287
|
end
|
286
288
|
|
@@ -290,7 +292,7 @@ describe Rufus::Scheduler do
|
|
290
292
|
|
291
293
|
sleep 1
|
292
294
|
|
293
|
-
@scheduler.uptime_s.
|
295
|
+
expect(@scheduler.uptime_s).to match(/^[12]s\d+$/)
|
294
296
|
end
|
295
297
|
end
|
296
298
|
|
@@ -300,13 +302,13 @@ describe Rufus::Scheduler do
|
|
300
302
|
|
301
303
|
t = Thread.new { @scheduler.join; Thread.current['a'] = 'over' }
|
302
304
|
|
303
|
-
t['a'].
|
305
|
+
expect(t['a']).to eq(nil)
|
304
306
|
|
305
307
|
@scheduler.shutdown
|
306
308
|
|
307
309
|
sleep(1)
|
308
310
|
|
309
|
-
t['a'].
|
311
|
+
expect(t['a']).to eq('over')
|
310
312
|
end
|
311
313
|
end
|
312
314
|
|
@@ -314,7 +316,7 @@ describe Rufus::Scheduler do
|
|
314
316
|
|
315
317
|
it 'returns nil if there is no corresponding Job instance' do
|
316
318
|
|
317
|
-
@scheduler.job('nada').
|
319
|
+
expect(@scheduler.job('nada')).to eq(nil)
|
318
320
|
end
|
319
321
|
|
320
322
|
it 'returns the corresponding Job instance' do
|
@@ -323,7 +325,7 @@ describe Rufus::Scheduler do
|
|
323
325
|
|
324
326
|
sleep(1) # give it some time to get scheduled
|
325
327
|
|
326
|
-
@scheduler.job(job_id).job_id.
|
328
|
+
expect(@scheduler.job(job_id).job_id).to eq(job_id)
|
327
329
|
end
|
328
330
|
end
|
329
331
|
|
@@ -353,7 +355,7 @@ describe Rufus::Scheduler do
|
|
353
355
|
|
354
356
|
it 'just lists the main thread (scheduler thread) when no job is scheduled' do
|
355
357
|
|
356
|
-
@scheduler.threads.
|
358
|
+
expect(@scheduler.threads).to eq([ @scheduler.thread ])
|
357
359
|
end
|
358
360
|
|
359
361
|
it 'lists all the threads a scheduler uses' do
|
@@ -364,7 +366,7 @@ describe Rufus::Scheduler do
|
|
364
366
|
|
365
367
|
sleep 0.4
|
366
368
|
|
367
|
-
@scheduler.threads.size.
|
369
|
+
expect(@scheduler.threads.size).to eq(2)
|
368
370
|
end
|
369
371
|
end
|
370
372
|
|
@@ -372,9 +374,9 @@ describe Rufus::Scheduler do
|
|
372
374
|
|
373
375
|
it 'returns an empty array when the scheduler has not yet done anything' do
|
374
376
|
|
375
|
-
@scheduler.work_threads.
|
376
|
-
@scheduler.work_threads(:all).
|
377
|
-
@scheduler.work_threads(:vacant).
|
377
|
+
expect(@scheduler.work_threads).to eq([])
|
378
|
+
expect(@scheduler.work_threads(:all)).to eq([])
|
379
|
+
expect(@scheduler.work_threads(:vacant)).to eq([])
|
378
380
|
end
|
379
381
|
|
380
382
|
it 'lists the [vacant] work threads in the pool' do
|
@@ -389,13 +391,13 @@ describe Rufus::Scheduler do
|
|
389
391
|
sleep 0.7
|
390
392
|
|
391
393
|
if @scheduler.work_threads.size == 1
|
392
|
-
@scheduler.work_threads.size.
|
393
|
-
@scheduler.work_threads(:all).size.
|
394
|
-
@scheduler.work_threads(:vacant).size.
|
394
|
+
expect(@scheduler.work_threads.size).to eq(1)
|
395
|
+
expect(@scheduler.work_threads(:all).size).to eq(1)
|
396
|
+
expect(@scheduler.work_threads(:vacant).size).to eq(0)
|
395
397
|
else
|
396
|
-
@scheduler.work_threads.size.
|
397
|
-
@scheduler.work_threads(:all).size.
|
398
|
-
@scheduler.work_threads(:vacant).size.
|
398
|
+
expect(@scheduler.work_threads.size).to eq(2)
|
399
|
+
expect(@scheduler.work_threads(:all).size).to eq(2)
|
400
|
+
expect(@scheduler.work_threads(:vacant).size).to eq(1)
|
399
401
|
end
|
400
402
|
end
|
401
403
|
end
|
@@ -404,7 +406,7 @@ describe Rufus::Scheduler do
|
|
404
406
|
|
405
407
|
it 'returns [] when there are no jobs running' do
|
406
408
|
|
407
|
-
@scheduler.work_threads(:active).
|
409
|
+
expect(@scheduler.work_threads(:active)).to eq([])
|
408
410
|
end
|
409
411
|
|
410
412
|
it 'returns the list of threads of the running jobs' do
|
@@ -416,14 +418,14 @@ describe Rufus::Scheduler do
|
|
416
418
|
|
417
419
|
sleep 0.4
|
418
420
|
|
419
|
-
@scheduler.work_threads(:active).size.
|
421
|
+
expect(@scheduler.work_threads(:active).size).to eq(1)
|
420
422
|
|
421
423
|
t = @scheduler.work_threads(:active).first
|
422
424
|
|
423
|
-
t.class.
|
424
|
-
t[@scheduler.thread_key].
|
425
|
-
t[:rufus_scheduler_job].
|
426
|
-
t[:rufus_scheduler_time].
|
425
|
+
expect(t.class).to eq(Thread)
|
426
|
+
expect(t[@scheduler.thread_key]).to eq(true)
|
427
|
+
expect(t[:rufus_scheduler_job]).to eq(job)
|
428
|
+
expect(t[:rufus_scheduler_time]).not_to eq(nil)
|
427
429
|
end
|
428
430
|
|
429
431
|
it 'does not return threads from other schedulers' do
|
@@ -437,7 +439,7 @@ describe Rufus::Scheduler do
|
|
437
439
|
|
438
440
|
sleep 0.4
|
439
441
|
|
440
|
-
scheduler.work_threads(:active).
|
442
|
+
expect(scheduler.work_threads(:active)).to eq([])
|
441
443
|
|
442
444
|
scheduler.shutdown
|
443
445
|
end
|
@@ -459,7 +461,7 @@ describe Rufus::Scheduler do
|
|
459
461
|
|
460
462
|
it 'returns the max job thread count' do
|
461
463
|
|
462
|
-
@scheduler.max_work_threads.
|
464
|
+
expect(@scheduler.max_work_threads).to eq(28)
|
463
465
|
end
|
464
466
|
end
|
465
467
|
|
@@ -469,7 +471,7 @@ describe Rufus::Scheduler do
|
|
469
471
|
|
470
472
|
@scheduler.max_work_threads = 14
|
471
473
|
|
472
|
-
@scheduler.max_work_threads.
|
474
|
+
expect(@scheduler.max_work_threads).to eq(14)
|
473
475
|
end
|
474
476
|
end
|
475
477
|
|
@@ -497,7 +499,7 @@ describe Rufus::Scheduler do
|
|
497
499
|
|
498
500
|
it 'returns [] when there are no running jobs' do
|
499
501
|
|
500
|
-
@scheduler.running_jobs.
|
502
|
+
expect(@scheduler.running_jobs).to eq([])
|
501
503
|
end
|
502
504
|
|
503
505
|
it 'returns a list of running Job instances' do
|
@@ -509,8 +511,8 @@ describe Rufus::Scheduler do
|
|
509
511
|
|
510
512
|
sleep 0.4
|
511
513
|
|
512
|
-
job.running
|
513
|
-
@scheduler.running_jobs.
|
514
|
+
expect(job.running?).to eq(true)
|
515
|
+
expect(@scheduler.running_jobs).to eq([ job ])
|
514
516
|
end
|
515
517
|
|
516
518
|
it 'does not return twice the same job' do
|
@@ -522,8 +524,8 @@ describe Rufus::Scheduler do
|
|
522
524
|
|
523
525
|
sleep 1.5
|
524
526
|
|
525
|
-
job.running
|
526
|
-
@scheduler.running_jobs.
|
527
|
+
expect(job.running?).to eq(true)
|
528
|
+
expect(@scheduler.running_jobs).to eq([ job ])
|
527
529
|
end
|
528
530
|
end
|
529
531
|
|
@@ -540,12 +542,15 @@ describe Rufus::Scheduler do
|
|
540
542
|
|
541
543
|
sleep 0.4
|
542
544
|
|
543
|
-
@scheduler.running_jobs(:tag => 't0').map(&:original).
|
545
|
+
expect(@scheduler.running_jobs(:tag => 't0').map(&:original)).to eq(
|
544
546
|
%w[ 0.1s ]
|
545
|
-
|
547
|
+
)
|
548
|
+
expect(@scheduler.running_jobs(:tag => 't1').map(&:original)).to eq(
|
546
549
|
%w[ 0.2s ]
|
547
|
-
|
550
|
+
)
|
551
|
+
expect(@scheduler.running_jobs(:tags => %w[ t0 t1 ]).map(&:original)).to eq(
|
548
552
|
[]
|
553
|
+
)
|
549
554
|
end
|
550
555
|
end
|
551
556
|
|
@@ -561,12 +566,12 @@ describe Rufus::Scheduler do
|
|
561
566
|
|
562
567
|
h = @scheduler.occurrences(Time.now + 4 * 60, Time.now + 11 * 60)
|
563
568
|
|
564
|
-
h.size.
|
565
|
-
h[j0].
|
566
|
-
h[j1].
|
567
|
-
h[j2].size.
|
568
|
-
h[j3].size.
|
569
|
-
h[j4].size.
|
569
|
+
expect(h.size).to eq(5)
|
570
|
+
expect(h[j0]).to eq([ j0.next_time ])
|
571
|
+
expect(h[j1]).to eq([ j1.next_time ])
|
572
|
+
expect(h[j2].size).to eq(2)
|
573
|
+
expect(h[j3].size).to eq(2)
|
574
|
+
expect(h[j4].size).to eq(7)
|
570
575
|
end
|
571
576
|
|
572
577
|
it 'returns a [ [ time, job ], ... ] of job occurrences when :timeline' do
|
@@ -577,10 +582,10 @@ describe Rufus::Scheduler do
|
|
577
582
|
a =
|
578
583
|
@scheduler.occurrences(Time.now + 4 * 60, Time.now + 11 * 60, :timeline)
|
579
584
|
|
580
|
-
a[0][0].
|
581
|
-
a[0][1].
|
582
|
-
a[1][0].
|
583
|
-
a[1][1].
|
585
|
+
expect(a[0][0]).to be_within_1s_of(Time.now + 5 * 60)
|
586
|
+
expect(a[0][1]).to eq(j0)
|
587
|
+
expect(a[1][0]).to be_within_1s_of(Time.now + 10 * 60)
|
588
|
+
expect(a[1][1]).to eq(j1)
|
584
589
|
end
|
585
590
|
|
586
591
|
it 'respects :first_at for repeat jobs' do
|
@@ -589,8 +594,8 @@ describe Rufus::Scheduler do
|
|
589
594
|
|
590
595
|
h = @scheduler.occurrences(Time.now + 4 * 60, Time.now + 16 * 60)
|
591
596
|
|
592
|
-
h[j0][0].
|
593
|
-
h[j0][1].
|
597
|
+
expect(h[j0][0]).to be_within_1s_of(Time.now + 10 * 60)
|
598
|
+
expect(h[j0][1]).to be_within_1s_of(Time.now + 15 * 60)
|
594
599
|
end
|
595
600
|
|
596
601
|
it 'respects :times for repeat jobs' do
|
@@ -599,7 +604,7 @@ describe Rufus::Scheduler do
|
|
599
604
|
|
600
605
|
h = @scheduler.occurrences(Time.now + 4 * 60, Time.now + 16 * 60)
|
601
606
|
|
602
|
-
h[j0].size.
|
607
|
+
expect(h[j0].size).to eq(6)
|
603
608
|
end
|
604
609
|
end
|
605
610
|
|
@@ -612,10 +617,10 @@ describe Rufus::Scheduler do
|
|
612
617
|
|
613
618
|
a = @scheduler.timeline(Time.now + 4 * 60, Time.now + 11 * 60)
|
614
619
|
|
615
|
-
a[0][0].
|
616
|
-
a[0][1].
|
617
|
-
a[1][0].
|
618
|
-
a[1][1].
|
620
|
+
expect(a[0][0]).to be_within_1s_of(Time.now + 5 * 60)
|
621
|
+
expect(a[0][1]).to eq(j0)
|
622
|
+
expect(a[1][0]).to be_within_1s_of(Time.now + 10 * 60)
|
623
|
+
expect(a[1][1]).to eq(j1)
|
619
624
|
end
|
620
625
|
end
|
621
626
|
|
@@ -629,7 +634,7 @@ describe Rufus::Scheduler do
|
|
629
634
|
|
630
635
|
@scheduler.shutdown
|
631
636
|
|
632
|
-
@scheduler.uptime.
|
637
|
+
expect(@scheduler.uptime).to eq(nil)
|
633
638
|
end
|
634
639
|
|
635
640
|
it 'shuts the scheduler down' do
|
@@ -643,14 +648,14 @@ describe Rufus::Scheduler do
|
|
643
648
|
t[:name] == "rufus_scheduler_#{@scheduler.object_id}"
|
644
649
|
}
|
645
650
|
|
646
|
-
t.
|
651
|
+
expect(t).to eq(nil)
|
647
652
|
end
|
648
653
|
|
649
654
|
it 'has a #stop alias' do
|
650
655
|
|
651
656
|
@scheduler.stop
|
652
657
|
|
653
|
-
@scheduler.uptime.
|
658
|
+
expect(@scheduler.uptime).to eq(nil)
|
654
659
|
end
|
655
660
|
|
656
661
|
#it 'has a #close alias'
|
@@ -671,10 +676,10 @@ describe Rufus::Scheduler do
|
|
671
676
|
|
672
677
|
@scheduler.shutdown(:wait)
|
673
678
|
|
674
|
-
counter.
|
675
|
-
@scheduler.uptime.
|
676
|
-
@scheduler.running_jobs.
|
677
|
-
@scheduler.threads.
|
679
|
+
expect(counter).to eq(1)
|
680
|
+
expect(@scheduler.uptime).to eq(nil)
|
681
|
+
expect(@scheduler.running_jobs).to eq([])
|
682
|
+
expect(@scheduler.threads).to eq([])
|
678
683
|
end
|
679
684
|
end
|
680
685
|
|
@@ -699,10 +704,10 @@ describe Rufus::Scheduler do
|
|
699
704
|
|
700
705
|
sleep 1.4
|
701
706
|
|
702
|
-
counter.
|
703
|
-
@scheduler.uptime.
|
704
|
-
@scheduler.running_jobs.
|
705
|
-
@scheduler.threads.
|
707
|
+
expect(counter).to eq(0)
|
708
|
+
expect(@scheduler.uptime).to eq(nil)
|
709
|
+
expect(@scheduler.running_jobs).to eq([])
|
710
|
+
expect(@scheduler.threads).to eq([])
|
706
711
|
end
|
707
712
|
end
|
708
713
|
|
@@ -716,7 +721,7 @@ describe Rufus::Scheduler do
|
|
716
721
|
|
717
722
|
sleep(3)
|
718
723
|
|
719
|
-
job.last_time.
|
724
|
+
expect(job.last_time).to eq(nil)
|
720
725
|
end
|
721
726
|
end
|
722
727
|
|
@@ -731,7 +736,7 @@ describe Rufus::Scheduler do
|
|
731
736
|
@scheduler.resume
|
732
737
|
sleep(2)
|
733
738
|
|
734
|
-
job.last_time.
|
739
|
+
expect(job.last_time).not_to eq(nil)
|
735
740
|
end
|
736
741
|
end
|
737
742
|
|
@@ -740,17 +745,17 @@ describe Rufus::Scheduler do
|
|
740
745
|
it 'returns true if the scheduler is paused' do
|
741
746
|
|
742
747
|
@scheduler.pause
|
743
|
-
@scheduler.paused
|
748
|
+
expect(@scheduler.paused?).to eq(true)
|
744
749
|
end
|
745
750
|
|
746
751
|
it 'returns false if the scheduler is not paused' do
|
747
752
|
|
748
|
-
@scheduler.paused
|
753
|
+
expect(@scheduler.paused?).to eq(false)
|
749
754
|
|
750
755
|
@scheduler.pause
|
751
756
|
@scheduler.resume
|
752
757
|
|
753
|
-
@scheduler.paused
|
758
|
+
expect(@scheduler.paused?).to eq(false)
|
754
759
|
end
|
755
760
|
end
|
756
761
|
|
@@ -760,12 +765,20 @@ describe Rufus::Scheduler do
|
|
760
765
|
|
761
766
|
@scheduler.shutdown
|
762
767
|
|
763
|
-
@scheduler.down
|
768
|
+
expect(@scheduler.down?).to eq(true)
|
764
769
|
end
|
765
770
|
|
766
771
|
it 'returns false when the scheduler is up' do
|
767
772
|
|
768
|
-
@scheduler.down
|
773
|
+
expect(@scheduler.down?).to eq(false)
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
777
|
+
describe '#up?' do
|
778
|
+
|
779
|
+
it 'returns true when the scheduler is up' do
|
780
|
+
|
781
|
+
expect(@scheduler.up?).to eq(true)
|
769
782
|
end
|
770
783
|
end
|
771
784
|
|
@@ -777,7 +790,7 @@ describe Rufus::Scheduler do
|
|
777
790
|
|
778
791
|
it 'is empty at the beginning' do
|
779
792
|
|
780
|
-
@scheduler.jobs.
|
793
|
+
expect(@scheduler.jobs).to eq([])
|
781
794
|
end
|
782
795
|
|
783
796
|
it 'returns the list of scheduled jobs' do
|
@@ -789,7 +802,7 @@ describe Rufus::Scheduler do
|
|
789
802
|
|
790
803
|
jobs = @scheduler.jobs
|
791
804
|
|
792
|
-
jobs.collect { |j| j.original }.sort.
|
805
|
+
expect(jobs.collect { |j| j.original }.sort).to eq(%w[ 10d 1w ])
|
793
806
|
end
|
794
807
|
|
795
808
|
it 'returns all the jobs (even those pending reschedule)' do
|
@@ -800,7 +813,7 @@ describe Rufus::Scheduler do
|
|
800
813
|
|
801
814
|
sleep 0.4
|
802
815
|
|
803
|
-
@scheduler.jobs.size.
|
816
|
+
expect(@scheduler.jobs.size).to eq(1)
|
804
817
|
end
|
805
818
|
|
806
819
|
it 'does not return unscheduled jobs' do
|
@@ -814,7 +827,7 @@ describe Rufus::Scheduler do
|
|
814
827
|
|
815
828
|
job.unschedule
|
816
829
|
|
817
|
-
@scheduler.jobs.size.
|
830
|
+
expect(@scheduler.jobs.size).to eq(0)
|
818
831
|
end
|
819
832
|
end
|
820
833
|
|
@@ -822,8 +835,8 @@ describe Rufus::Scheduler do
|
|
822
835
|
|
823
836
|
it 'returns [] when there are no jobs with the corresponding tag' do
|
824
837
|
|
825
|
-
@scheduler.jobs(:tag => 'nada').
|
826
|
-
@scheduler.jobs(:tags => %w[ nada hello ]).
|
838
|
+
expect(@scheduler.jobs(:tag => 'nada')).to eq([])
|
839
|
+
expect(@scheduler.jobs(:tags => %w[ nada hello ])).to eq([])
|
827
840
|
end
|
828
841
|
|
829
842
|
it 'returns the jobs with the corresponding tag' do
|
@@ -832,12 +845,15 @@ describe Rufus::Scheduler do
|
|
832
845
|
@scheduler.every '2h', :tag => %w[ t0 t1 ] do; end
|
833
846
|
@scheduler.every '3h' do; end
|
834
847
|
|
835
|
-
@scheduler.jobs(:tags => 't0').map(&:original).sort.
|
848
|
+
expect(@scheduler.jobs(:tags => 't0').map(&:original).sort).to eq(
|
836
849
|
%w[ 10d 2h ]
|
837
|
-
|
850
|
+
)
|
851
|
+
expect(@scheduler.jobs(:tags => 't1').map(&:original).sort).to eq(
|
838
852
|
%w[ 2h ]
|
839
|
-
|
853
|
+
)
|
854
|
+
expect(@scheduler.jobs(:tags => [ 't1', 't0' ]).map(&:original).sort).to eq(
|
840
855
|
%w[ 2h ]
|
856
|
+
)
|
841
857
|
end
|
842
858
|
end
|
843
859
|
|
@@ -851,7 +867,7 @@ describe Rufus::Scheduler do
|
|
851
867
|
|
852
868
|
jobs = @scheduler.every_jobs
|
853
869
|
|
854
|
-
jobs.collect { |j| j.original }.sort.
|
870
|
+
expect(jobs.collect { |j| j.original }.sort).to eq(%w[ 5m ])
|
855
871
|
end
|
856
872
|
end
|
857
873
|
|
@@ -865,7 +881,7 @@ describe Rufus::Scheduler do
|
|
865
881
|
|
866
882
|
jobs = @scheduler.at_jobs
|
867
883
|
|
868
|
-
jobs.collect { |j| j.original }.sort.
|
884
|
+
expect(jobs.collect { |j| j.original }.sort).to eq([ '2030/12/12 12:10:00' ])
|
869
885
|
end
|
870
886
|
end
|
871
887
|
|
@@ -879,7 +895,7 @@ describe Rufus::Scheduler do
|
|
879
895
|
|
880
896
|
jobs = @scheduler.in_jobs
|
881
897
|
|
882
|
-
jobs.collect { |j| j.original }.sort.
|
898
|
+
expect(jobs.collect { |j| j.original }.sort).to eq(%w[ 10d ])
|
883
899
|
end
|
884
900
|
end
|
885
901
|
|
@@ -894,7 +910,7 @@ describe Rufus::Scheduler do
|
|
894
910
|
|
895
911
|
jobs = @scheduler.cron_jobs
|
896
912
|
|
897
|
-
jobs.collect { |j| j.original }.sort.
|
913
|
+
expect(jobs.collect { |j| j.original }.sort).to eq([ '* * * * *' ])
|
898
914
|
end
|
899
915
|
end
|
900
916
|
|
@@ -910,7 +926,7 @@ describe Rufus::Scheduler do
|
|
910
926
|
|
911
927
|
jobs = @scheduler.interval_jobs
|
912
928
|
|
913
|
-
jobs.collect { |j| j.original }.sort.
|
929
|
+
expect(jobs.collect { |j| j.original }.sort).to eq(%w[ 7m ])
|
914
930
|
end
|
915
931
|
end
|
916
932
|
|
@@ -935,7 +951,7 @@ describe Rufus::Scheduler do
|
|
935
951
|
|
936
952
|
sleep 0.7
|
937
953
|
|
938
|
-
$out.
|
954
|
+
expect($out).to eq([ "pre #{job_id}", job_id ])
|
939
955
|
end
|
940
956
|
|
941
957
|
it 'accepts the job and the triggerTime as argument' do
|
@@ -952,9 +968,9 @@ describe Rufus::Scheduler do
|
|
952
968
|
|
953
969
|
sleep 0.7
|
954
970
|
|
955
|
-
$tt.class.
|
956
|
-
$tt.
|
957
|
-
$tt.
|
971
|
+
expect($tt.class).to eq(Time)
|
972
|
+
expect($tt).to be > start
|
973
|
+
expect($tt).to be < Time.now
|
958
974
|
end
|
959
975
|
|
960
976
|
context 'when it returns false' do
|
@@ -975,7 +991,7 @@ describe Rufus::Scheduler do
|
|
975
991
|
|
976
992
|
sleep 0.7
|
977
993
|
|
978
|
-
$out.
|
994
|
+
expect($out).to eq([ "pre #{job_id}" ])
|
979
995
|
end
|
980
996
|
end
|
981
997
|
end
|
@@ -997,7 +1013,7 @@ describe Rufus::Scheduler do
|
|
997
1013
|
|
998
1014
|
sleep 0.7
|
999
1015
|
|
1000
|
-
$out.
|
1016
|
+
expect($out).to eq([ job_id, "post #{job_id}" ])
|
1001
1017
|
end
|
1002
1018
|
end
|
1003
1019
|
|
@@ -1017,8 +1033,8 @@ describe Rufus::Scheduler do
|
|
1017
1033
|
s0 = Rufus::Scheduler.singleton
|
1018
1034
|
s1 = Rufus::Scheduler.s
|
1019
1035
|
|
1020
|
-
s0.class.
|
1021
|
-
s1.object_id.
|
1036
|
+
expect(s0.class).to eq(Rufus::Scheduler)
|
1037
|
+
expect(s1.object_id).to eq(s0.object_id)
|
1022
1038
|
end
|
1023
1039
|
|
1024
1040
|
it 'accepts initialization parameters' do
|
@@ -1026,7 +1042,7 @@ describe Rufus::Scheduler do
|
|
1026
1042
|
s = Rufus::Scheduler.singleton(:max_work_threads => 77)
|
1027
1043
|
s = Rufus::Scheduler.singleton(:max_work_threads => 42)
|
1028
1044
|
|
1029
|
-
s.max_work_threads.
|
1045
|
+
expect(s.max_work_threads).to eq(77)
|
1030
1046
|
end
|
1031
1047
|
end
|
1032
1048
|
end
|