periodic-scheduler 0.3.0 → 0.4.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.
- data/VERSION +1 -1
- data/lib/periodic-scheduler.rb +8 -3
- data/periodic-scheduler.gemspec +2 -2
- data/spec/periodic-scheduler_spec.rb +21 -15
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/periodic-scheduler.rb
CHANGED
@@ -121,15 +121,18 @@ class PeriodicScheduler
|
|
121
121
|
end
|
122
122
|
wait(wait_time)
|
123
123
|
|
124
|
+
objects = []
|
125
|
+
|
124
126
|
qnow = quantized_now
|
125
127
|
quants = @events.keys.select{|k| k <= qnow}.sort
|
128
|
+
|
126
129
|
# It may happen that wait returned qucker than it should
|
130
|
+
# In this case just return no data
|
127
131
|
if quants.empty?
|
128
|
-
return
|
132
|
+
return objects
|
129
133
|
end
|
130
134
|
|
131
|
-
|
132
|
-
|
135
|
+
# Call callback for every quant and reschedule if needed
|
133
136
|
quants.each do |q|
|
134
137
|
events = @events[q]
|
135
138
|
@events.delete(q)
|
@@ -143,12 +146,14 @@ class PeriodicScheduler
|
|
143
146
|
end
|
144
147
|
end
|
145
148
|
|
149
|
+
# Yield errors to block
|
146
150
|
if block_given?
|
147
151
|
errors.each do |error|
|
148
152
|
yield error
|
149
153
|
end
|
150
154
|
end
|
151
155
|
|
156
|
+
# return collected callabck return objects
|
152
157
|
objects
|
153
158
|
end
|
154
159
|
|
data/periodic-scheduler.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "periodic-scheduler"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jakub Pastuszek"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-10-22"
|
13
13
|
s.description = "Controls execution of periodic scheduled tasks."
|
14
14
|
s.email = "jpastuszek@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -110,7 +110,7 @@ describe PeriodicScheduler do
|
|
110
110
|
j = jitter.shift
|
111
111
|
#puts "time is: #{@time_now}"
|
112
112
|
@time_now += t + j
|
113
|
-
#puts "sleeping
|
113
|
+
#puts "sleeping for #{t} + jitter #{j}: #{t + j}"
|
114
114
|
}
|
115
115
|
|
116
116
|
s = PeriodicScheduler.new(5.0, @options)
|
@@ -121,33 +121,39 @@ describe PeriodicScheduler do
|
|
121
121
|
|
122
122
|
@got_events.should == []
|
123
123
|
|
124
|
-
s.run
|
124
|
+
s.run.should_not be_empty
|
125
|
+
@time_now.should == 11
|
125
126
|
@got_events.should == [1]
|
126
|
-
@time_now.should == 11
|
127
127
|
|
128
|
-
s.run
|
128
|
+
s.run.should_not be_empty
|
129
|
+
@time_now.should == 20
|
129
130
|
@got_events.should == [1, 1]
|
130
|
-
@time_now.should == 20
|
131
131
|
|
132
|
-
s.run
|
132
|
+
s.run.should_not be_empty
|
133
|
+
@time_now.should == 40
|
133
134
|
@got_events.should == [1, 1, 1]
|
134
|
-
@time_now.should == 40
|
135
135
|
|
136
|
-
|
136
|
+
# if timer returns too quickly the run will be empty
|
137
|
+
s.run.should be_empty
|
138
|
+
@time_now.should == 44
|
139
|
+
@got_events.should == [1, 1, 1]
|
140
|
+
|
141
|
+
s.run.should_not be_empty
|
142
|
+
@time_now.should == 45.5
|
137
143
|
@got_events.should == [1, 1, 1, 1]
|
138
|
-
@time_now.should == 45.5
|
139
144
|
|
140
|
-
|
145
|
+
s.run.should be_empty
|
146
|
+
s.run.should_not be_empty
|
147
|
+
@time_now.should == 60
|
141
148
|
@got_events.should == [1, 1, 1, 1, 1]
|
142
|
-
@time_now.should == 60
|
143
149
|
|
144
|
-
s.run
|
150
|
+
s.run.should_not be_empty
|
151
|
+
@time_now.should == 70.0
|
145
152
|
@got_events.should == [1, 1, 1, 1, 1, 1]
|
146
|
-
@time_now.should == 70.0
|
147
153
|
|
148
|
-
s.run
|
154
|
+
s.run.should_not be_empty
|
155
|
+
@time_now.should == 80.0
|
149
156
|
@got_events.should == [1, 1, 1, 1, 1, 1, 1]
|
150
|
-
@time_now.should == 80.0
|
151
157
|
end
|
152
158
|
|
153
159
|
it "should keep average scheduling precision over longer time" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: periodic-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70209526649300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.8.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70209526649300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &70209526648820 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.12'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70209526648820
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: cucumber
|
38
|
-
requirement: &
|
38
|
+
requirement: &70209526648340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70209526648340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70209526647840 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70209526647840
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70209526647360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.8.3
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70209526647360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &70209526646820 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70209526646820
|
80
80
|
description: Controls execution of periodic scheduled tasks.
|
81
81
|
email: jpastuszek@gmail.com
|
82
82
|
executables: []
|
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
segments:
|
115
115
|
- 0
|
116
|
-
hash:
|
116
|
+
hash: 2525595850660518537
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|