periodic-scheduler 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -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 run
132
+ return objects
129
133
  end
130
134
 
131
- objects = []
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
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "periodic-scheduler"
8
- s.version = "0.3.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-02-08"
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 fou #{t} + jitter #{j}: #{t + j}"
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
- s.run
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
- s.run
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.3.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-02-08 00:00:00.000000000 Z
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: &22600720 !ruby/object:Gem::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: *22600720
24
+ version_requirements: *70209526649300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &22598880 !ruby/object:Gem::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: *22598880
35
+ version_requirements: *70209526648820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &22595540 !ruby/object:Gem::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: *22595540
46
+ version_requirements: *70209526648340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &22594720 !ruby/object:Gem::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: *22594720
57
+ version_requirements: *70209526647840
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &22593900 !ruby/object:Gem::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: *22593900
68
+ version_requirements: *70209526647360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &22679440 !ruby/object:Gem::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: *22679440
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: -208021006100365845
116
+ hash: 2525595850660518537
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements: