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 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: