rufus-scheduler 1.0.2 → 1.0.3
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 +5 -0
- data/CREDITS.txt +8 -0
- data/README.txt +16 -1
- data/lib/rufus/otime.rb +81 -1
- data/test/scheduler_6_test.rb +51 -0
- data/test/test.rb +3 -1
- data/test/{time_test.rb → time_0_test.rb} +20 -17
- data/test/time_1_test.rb +58 -0
- metadata +7 -3
data/CHANGELOG.txt
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
= rufus-scheduler CHANGELOG.txt
|
3
3
|
|
4
4
|
|
5
|
+
== rufus-scheduler - 1.0.3 released 2008/02/29
|
6
|
+
|
7
|
+
- todo #18472 : added Rufus::to_time_string - s181
|
8
|
+
|
9
|
+
|
5
10
|
== rufus-scheduler - 1.0.2 released 2008/01/26
|
6
11
|
|
7
12
|
- patch #17505 : added params :first_at and :first_in for schedule_every()
|
data/CREDITS.txt
ADDED
data/README.txt
CHANGED
@@ -17,7 +17,22 @@ http://rubyforge.org/frs/?group_id=4812
|
|
17
17
|
|
18
18
|
== usage
|
19
19
|
|
20
|
-
|
20
|
+
For all the scheduling related information, see the Rufus::Scheduler class rdoc itself or the original OpenWFEru scheduler documentation at http://openwferu.rubyforge.org/scheduler.html
|
21
|
+
|
22
|
+
Apart from scheduling, There are also two interesting methods in this gem, they are named parse_time_string and to_time_string :
|
23
|
+
|
24
|
+
require 'rubygems'
|
25
|
+
require 'rufus/otime' # gem 'rufus_scheduler'
|
26
|
+
|
27
|
+
Rufus.parse_time_string "500" # => 0.5
|
28
|
+
Rufus.parse_time_string "1000" # => 1.0
|
29
|
+
Rufus.parse_time_string "1h" # => 3600.0
|
30
|
+
Rufus.parse_time_string "1h10s" # => 3610.0
|
31
|
+
Rufus.parse_time_string "1w2d" # => 777600.0
|
32
|
+
|
33
|
+
Rufus.to_time_string 60 # => '1m'
|
34
|
+
Rufus.to_time_string 3661 # => '1h1m1s'
|
35
|
+
Rufus.to_time_string 7 * 24 * 3600 # => '1w'
|
21
36
|
|
22
37
|
|
23
38
|
== dependencies
|
data/lib/rufus/otime.rb
CHANGED
@@ -97,7 +97,9 @@ module Rufus
|
|
97
97
|
end
|
98
98
|
|
99
99
|
#
|
100
|
-
#
|
100
|
+
# Turns a string like '1m10s' into a float like '70.0', more formally,
|
101
|
+
# turns a time duration expressed as a string into a Float instance
|
102
|
+
# (millisecond count).
|
101
103
|
#
|
102
104
|
# w -> week
|
103
105
|
# d -> day
|
@@ -108,6 +110,14 @@ module Rufus
|
|
108
110
|
# y -> year
|
109
111
|
# 'nada' -> millisecond
|
110
112
|
#
|
113
|
+
# Some examples :
|
114
|
+
#
|
115
|
+
# Rufus.parse_time_string "500" # => 0.5
|
116
|
+
# Rufus.parse_time_string "1000" # => 1.0
|
117
|
+
# Rufus.parse_time_string "1h" # => 3600.0
|
118
|
+
# Rufus.parse_time_string "1h10s" # => 3610.0
|
119
|
+
# Rufus.parse_time_string "1w2d" # => 777600.0
|
120
|
+
#
|
111
121
|
def Rufus.parse_time_string (string)
|
112
122
|
|
113
123
|
string = string.strip
|
@@ -226,6 +236,64 @@ module Rufus
|
|
226
236
|
Time.send(method, d.year, d.month, d.day, d.hour, d.min, d.sec, usec)
|
227
237
|
end
|
228
238
|
|
239
|
+
#
|
240
|
+
# Turns a number of seconds into a a time string
|
241
|
+
#
|
242
|
+
# Rufus.to_time_string 0 # => '0s'
|
243
|
+
# Rufus.to_time_string 60 # => '1m'
|
244
|
+
# Rufus.to_time_string 3661 # => '1h1m1s'
|
245
|
+
# Rufus.to_time_string 7 * 24 * 3600 # => '1w'
|
246
|
+
# Rufus.to_time_string 30 * 24 * 3600 + 1 # => "4w2d1s"
|
247
|
+
#
|
248
|
+
# It goes from seconds to the year. Months are not counted (as they
|
249
|
+
# are of variable length). Weeks are counted.
|
250
|
+
#
|
251
|
+
# For 30 days months to be counted, the second parameter of this
|
252
|
+
# method can be set to true.
|
253
|
+
#
|
254
|
+
# Rufus.to_time_string 30 * 24 * 3600 + 1, true # => "1M1s"
|
255
|
+
#
|
256
|
+
# If a Float value is passed, milliseconds will be displayed without
|
257
|
+
# 'marker'
|
258
|
+
#
|
259
|
+
# Rufus.to_time_string 0.051 #=>"51"
|
260
|
+
# Rufus.to_time_string 7.051 #=>"7s51"
|
261
|
+
# Rufus.to_time_string 0.120 + 30 * 24 * 3600 + 1 #=>"4w2d1s120"
|
262
|
+
#
|
263
|
+
# (this behaviour mirrors the one found for parse_time_string()).
|
264
|
+
#
|
265
|
+
def Rufus.to_time_string (seconds, months=false)
|
266
|
+
|
267
|
+
return '0s' if seconds <= 0
|
268
|
+
|
269
|
+
ms = nil
|
270
|
+
|
271
|
+
if seconds.is_a?(Float)
|
272
|
+
ms = (seconds % 1 * 1000).to_i
|
273
|
+
seconds = seconds.to_i
|
274
|
+
end
|
275
|
+
|
276
|
+
durations = months ? DURATIONS2w : DURATIONS2
|
277
|
+
|
278
|
+
s = durations.inject([ seconds, "" ]) { |r, d|
|
279
|
+
|
280
|
+
#puts "result : " + r.inspect
|
281
|
+
#puts "duration : " + d.inspect
|
282
|
+
|
283
|
+
sec, str = r
|
284
|
+
s, d = d
|
285
|
+
|
286
|
+
count = sec / d
|
287
|
+
rest = sec % d
|
288
|
+
|
289
|
+
str << "#{count}#{s}" if count > 0
|
290
|
+
|
291
|
+
[ rest, str ]
|
292
|
+
}[1]
|
293
|
+
|
294
|
+
"#{s}#{ms}"
|
295
|
+
end
|
296
|
+
|
229
297
|
protected
|
230
298
|
|
231
299
|
DURATIONS = {
|
@@ -238,5 +306,17 @@ module Rufus
|
|
238
306
|
"s" => 1
|
239
307
|
}
|
240
308
|
|
309
|
+
DURATIONS2w = [
|
310
|
+
[ "y", DURATIONS["y"] ],
|
311
|
+
[ "M", DURATIONS["M"] ],
|
312
|
+
[ "w", DURATIONS["w"] ],
|
313
|
+
[ "d", DURATIONS["d"] ],
|
314
|
+
[ "h", DURATIONS["h"] ],
|
315
|
+
[ "m", DURATIONS["m"] ],
|
316
|
+
[ "s", DURATIONS["s"] ]
|
317
|
+
]
|
318
|
+
DURATIONS2 = DURATIONS2w.dup
|
319
|
+
DURATIONS2.delete_at 1
|
320
|
+
|
241
321
|
end
|
242
322
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# Testing the 'rufus-scheduler'
|
4
|
+
#
|
5
|
+
# John Mettraux at openwfe.org
|
6
|
+
#
|
7
|
+
# Thu Feb 14 08:19:10 JST 2008
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'test/unit'
|
11
|
+
require 'rufus/scheduler'
|
12
|
+
|
13
|
+
|
14
|
+
class Scheduler6Test < Test::Unit::TestCase
|
15
|
+
|
16
|
+
#def setup
|
17
|
+
#end
|
18
|
+
|
19
|
+
#def teardown
|
20
|
+
#end
|
21
|
+
|
22
|
+
#
|
23
|
+
# just a small test
|
24
|
+
#
|
25
|
+
def test_0
|
26
|
+
|
27
|
+
s = Rufus::Scheduler.new
|
28
|
+
s.start
|
29
|
+
|
30
|
+
st = ""
|
31
|
+
s0 = -1
|
32
|
+
s1 = -2
|
33
|
+
|
34
|
+
t = Time.now + 2
|
35
|
+
|
36
|
+
s.schedule_at t do
|
37
|
+
st << "0"
|
38
|
+
s0 = Time.now.to_i % 60
|
39
|
+
end
|
40
|
+
s.schedule_at t do
|
41
|
+
st << "1"
|
42
|
+
s1 = Time.now.to_i % 60
|
43
|
+
end
|
44
|
+
|
45
|
+
sleep 2.5
|
46
|
+
|
47
|
+
assert_equal "01", st
|
48
|
+
assert_equal s0, s1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
data/test/test.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
|
-
require '
|
2
|
+
require 'time_0_test'
|
3
|
+
require 'time_1_test'
|
3
4
|
|
4
5
|
require 'scheduler_0_test'
|
5
6
|
require 'scheduler_1_test'
|
@@ -7,6 +8,7 @@ require 'scheduler_2_test'
|
|
7
8
|
require 'scheduler_3_test'
|
8
9
|
require 'scheduler_4_test'
|
9
10
|
require 'scheduler_5_test'
|
11
|
+
require 'scheduler_6_test'
|
10
12
|
|
11
13
|
require 'cron_test'
|
12
14
|
require 'cronline_test'
|
@@ -12,10 +12,10 @@ require 'test/unit'
|
|
12
12
|
require 'rufus/otime'
|
13
13
|
|
14
14
|
#
|
15
|
-
# testing otime
|
15
|
+
# testing otime
|
16
16
|
#
|
17
17
|
|
18
|
-
class
|
18
|
+
class Time0Test < Test::Unit::TestCase
|
19
19
|
|
20
20
|
#def setup
|
21
21
|
#end
|
@@ -23,8 +23,7 @@ class TimeTest < Test::Unit::TestCase
|
|
23
23
|
#def teardown
|
24
24
|
#end
|
25
25
|
|
26
|
-
|
27
|
-
def XXXX_to_iso_date
|
26
|
+
def _test_to_iso_date
|
28
27
|
#
|
29
28
|
# well... this test is not timezone friendly...
|
30
29
|
# commented out thus...
|
@@ -34,17 +33,19 @@ class TimeTest < Test::Unit::TestCase
|
|
34
33
|
s = Rufus.to_iso8601_date(t)
|
35
34
|
puts s
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
assert_equal(
|
37
|
+
"2007-01-17 02:43:33-0500",
|
38
|
+
Rufus.to_iso8601_date(t),
|
39
|
+
"conversion to iso8601 date failed")
|
40
40
|
|
41
41
|
d = Rufus.to_ruby_time(s)
|
42
42
|
|
43
43
|
#puts d.to_s
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
assert_equal(
|
46
|
+
"2007-01-17T02:43:33-0500",
|
47
|
+
d.to_s,
|
48
|
+
"iso8601 date parsing failed")
|
48
49
|
end
|
49
50
|
|
50
51
|
def test_is_digit
|
@@ -66,19 +67,21 @@ class TimeTest < Test::Unit::TestCase
|
|
66
67
|
|
67
68
|
def test_parse_time_string
|
68
69
|
|
69
|
-
pts
|
70
|
-
pts
|
71
|
-
pts
|
72
|
-
pts
|
70
|
+
pts "500", 0.5
|
71
|
+
pts "1000", 1.0
|
72
|
+
pts "1h", 3600.0
|
73
|
+
pts "1h10s", 3610.0
|
74
|
+
pts "1w2d", 777600.0
|
73
75
|
end
|
74
76
|
|
75
77
|
protected
|
76
78
|
|
77
79
|
def pts (time_string, seconds)
|
78
80
|
|
79
|
-
|
80
|
-
|
81
|
-
|
81
|
+
assert_equal(
|
82
|
+
seconds,
|
83
|
+
Rufus::parse_time_string(time_string),
|
84
|
+
"'#{time_string}' did not map to #{seconds} seconds")
|
82
85
|
end
|
83
86
|
|
84
87
|
end
|
data/test/time_1_test.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# Testing OpenWFE
|
4
|
+
#
|
5
|
+
# John Mettraux at openwfe.org
|
6
|
+
#
|
7
|
+
# Fri Feb 29 11:18:48 JST 2008
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'test/unit'
|
11
|
+
|
12
|
+
require 'rufus/otime'
|
13
|
+
|
14
|
+
#
|
15
|
+
# testing otime
|
16
|
+
#
|
17
|
+
|
18
|
+
class Time1Test < Test::Unit::TestCase
|
19
|
+
|
20
|
+
#def setup
|
21
|
+
#end
|
22
|
+
|
23
|
+
#def teardown
|
24
|
+
#end
|
25
|
+
|
26
|
+
def test_0
|
27
|
+
|
28
|
+
tts 0, "0s"
|
29
|
+
tts 60, "1m"
|
30
|
+
tts 61, "1m1s"
|
31
|
+
tts 3661, "1h1m1s"
|
32
|
+
tts 24 * 3600, "1d"
|
33
|
+
tts 7 * 24 * 3600 + 1, "1w1s"
|
34
|
+
tts 30 * 24 * 3600 + 1, "4w2d1s"
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_1
|
38
|
+
|
39
|
+
tts 30 * 24 * 3600 + 1, "1M1s", true
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_2
|
43
|
+
|
44
|
+
tts 0.120 + 30 * 24 * 3600 + 1, "4w2d1s120"
|
45
|
+
tts 0.130, "130"
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
def tts (seconds, time_string, months=false)
|
51
|
+
|
52
|
+
assert_equal(
|
53
|
+
time_string,
|
54
|
+
Rufus::to_time_string(seconds, months),
|
55
|
+
"#{seconds} seconds did not map to '#{time_string}'")
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rufus-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-02-29 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,6 +22,7 @@ extensions: []
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README.txt
|
24
24
|
- CHANGELOG.txt
|
25
|
+
- CREDITS.txt
|
25
26
|
files:
|
26
27
|
- lib/openwfe
|
27
28
|
- lib/openwfe/util
|
@@ -37,10 +38,13 @@ files:
|
|
37
38
|
- test/scheduler_3_test.rb
|
38
39
|
- test/scheduler_4_test.rb
|
39
40
|
- test/scheduler_5_test.rb
|
41
|
+
- test/scheduler_6_test.rb
|
40
42
|
- test/test.rb
|
41
|
-
- test/
|
43
|
+
- test/time_0_test.rb
|
44
|
+
- test/time_1_test.rb
|
42
45
|
- README.txt
|
43
46
|
- CHANGELOG.txt
|
47
|
+
- CREDITS.txt
|
44
48
|
has_rdoc: true
|
45
49
|
homepage: http://openwferu.rubyforge.org/scheduler.html
|
46
50
|
post_install_message:
|