polyphony 0.38 → 0.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/ext/gyro/timer.c +14 -12
- data/lib/polyphony/version.rb +1 -1
- data/test/helper.rb +9 -0
- data/test/test_global_api.rb +9 -9
- data/test/test_io.rb +7 -0
- data/test/test_thread.rb +1 -1
- data/test/test_thread_pool.rb +2 -2
- data/test/test_throttler.rb +3 -5
- data/test/test_timer.rb +0 -24
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3be3a6ec277c0c06e1d4b071f7fcee1229bbdde20d6b78b5b585ca9ac5624cd
|
4
|
+
data.tar.gz: 27f3e920372dc8ab8e40f07b72444ba08813533e2912c8400fe28ad50ed756c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d4267e177eda276b2d643e0262d1475c9f9f0ebaed2dd8573c245127b618dab11b00c05e0ef58ba2f5b8fd88b127feb1cc0f94390e27c66ae8857d0a5eb1a65
|
7
|
+
data.tar.gz: 1006b8aa742a9c38bd39512c7f9bfbe3c33b0f07ee1b2e262d8f5f140114066599b9444726c3e9c8cb998326a779da8d14d159ebcf5df226f02eedaa78530f98
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/ext/gyro/timer.c
CHANGED
@@ -66,26 +66,28 @@ inline void timer_activate(struct Gyro_Timer *timer) {
|
|
66
66
|
ev_timer_start(timer->ev_loop, &timer->ev_timer);
|
67
67
|
}
|
68
68
|
|
69
|
-
inline void timer_deactivate(struct Gyro_Timer *timer, int
|
69
|
+
inline void timer_deactivate(struct Gyro_Timer *timer, int force_deactivate) {
|
70
70
|
if (!timer->active) return;
|
71
71
|
|
72
|
-
if (!timer->repeat || !non_recurring_only) {
|
73
|
-
ev_timer_stop(timer->ev_loop, &timer->ev_timer);
|
74
|
-
if (RTEST(timer->selector)) {
|
75
|
-
Gyro_Selector_remove_active_watcher(timer->selector, timer->self);
|
76
|
-
timer->selector = Qnil;
|
77
|
-
}
|
78
|
-
timer->ev_loop = 0;
|
79
|
-
timer->active = 0;
|
80
|
-
}
|
81
|
-
|
82
72
|
timer->fiber = Qnil;
|
73
|
+
|
74
|
+
// timer should not be deactivated if
|
75
|
+
if (timer->repeat && !force_deactivate) return;
|
76
|
+
|
77
|
+
ev_timer_stop(timer->ev_loop, &timer->ev_timer);
|
78
|
+
if (RTEST(timer->selector)) {
|
79
|
+
Gyro_Selector_remove_active_watcher(timer->selector, timer->self);
|
80
|
+
timer->selector = Qnil;
|
81
|
+
}
|
82
|
+
timer->ev_loop = 0;
|
83
|
+
timer->active = 0;
|
83
84
|
}
|
84
85
|
|
85
86
|
void Gyro_Timer_callback(struct ev_loop *ev_loop, struct ev_timer *ev_timer, int revents) {
|
86
87
|
struct Gyro_Timer *timer = (struct Gyro_Timer*)ev_timer;
|
87
88
|
|
88
|
-
|
89
|
+
if (timer->fiber != Qnil)
|
90
|
+
Fiber_make_runnable(timer->fiber, DBL2NUM(timer->after));
|
89
91
|
timer_deactivate(timer, 1);
|
90
92
|
}
|
91
93
|
|
data/lib/polyphony/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -18,6 +18,15 @@ Minitest::Reporters.use! [
|
|
18
18
|
Minitest::Reporters::SpecReporter.new
|
19
19
|
]
|
20
20
|
|
21
|
+
module MiniTest::Assertions
|
22
|
+
def assert_in_range(range, act)
|
23
|
+
msg = message(msg) {
|
24
|
+
"Expected #{act.inspect} to be in range #{range.inspect}"
|
25
|
+
}
|
26
|
+
assert range.include?(act), msg
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
21
30
|
class MiniTest::Test
|
22
31
|
def setup
|
23
32
|
if Fiber.current.children.size > 0
|
data/test/test_global_api.rb
CHANGED
@@ -106,7 +106,7 @@ class MoveOnAfterTest < MiniTest::Test
|
|
106
106
|
end
|
107
107
|
t1 = Time.now
|
108
108
|
|
109
|
-
|
109
|
+
assert_in_range 0..0.03, t1 - t0
|
110
110
|
assert_nil v
|
111
111
|
end
|
112
112
|
|
@@ -118,7 +118,7 @@ class MoveOnAfterTest < MiniTest::Test
|
|
118
118
|
end
|
119
119
|
t1 = Time.now
|
120
120
|
|
121
|
-
|
121
|
+
assert_in_range 0..0.02, t1 - t0
|
122
122
|
assert_equal :bar, v
|
123
123
|
end
|
124
124
|
|
@@ -129,7 +129,7 @@ class MoveOnAfterTest < MiniTest::Test
|
|
129
129
|
assert_equal Fiber.current, f.parent
|
130
130
|
v = sleep 1
|
131
131
|
t1 = Time.now
|
132
|
-
|
132
|
+
assert_in_range 0..0.02, t1 - t0
|
133
133
|
assert_equal 'foo', v
|
134
134
|
end
|
135
135
|
end
|
@@ -145,7 +145,7 @@ class CancelAfterTest < MiniTest::Test
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
t1 = Time.now
|
148
|
-
|
148
|
+
assert_in_range 0..0.02, t1 - t0
|
149
149
|
end
|
150
150
|
|
151
151
|
def test_cancel_after_without_block
|
@@ -157,7 +157,7 @@ class CancelAfterTest < MiniTest::Test
|
|
157
157
|
sleep 1
|
158
158
|
end
|
159
159
|
t1 = Time.now
|
160
|
-
|
160
|
+
assert_in_range 0..0.02, t1 - t0
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
@@ -204,7 +204,7 @@ class SpinLoopTest < MiniTest::Test
|
|
204
204
|
f = spin_loop(rate: 50) { buffer << (counter += 1) }
|
205
205
|
sleep 0.1
|
206
206
|
f.stop
|
207
|
-
|
207
|
+
assert_in_range 5..6, counter
|
208
208
|
end
|
209
209
|
end
|
210
210
|
|
@@ -217,7 +217,7 @@ class ThrottledLoopTest < MiniTest::Test
|
|
217
217
|
end
|
218
218
|
sleep 0.1
|
219
219
|
f.stop
|
220
|
-
|
220
|
+
assert_in_range 5..6, counter
|
221
221
|
end
|
222
222
|
|
223
223
|
def test_throttled_loop_with_count
|
@@ -248,14 +248,14 @@ class GlobalAPIEtcTest < MiniTest::Test
|
|
248
248
|
end
|
249
249
|
sleep 0.05
|
250
250
|
f.stop
|
251
|
-
|
251
|
+
assert_in_range 4..5, buffer.size
|
252
252
|
end
|
253
253
|
|
254
254
|
def test_sleep
|
255
255
|
t0 = Time.now
|
256
256
|
sleep 0.05
|
257
257
|
elapsed = Time.now - t0
|
258
|
-
|
258
|
+
assert_in_range 0.045..0.08, elapsed
|
259
259
|
|
260
260
|
f = spin { sleep }
|
261
261
|
snooze
|
data/test/test_io.rb
CHANGED
@@ -61,6 +61,13 @@ class IOTest < MiniTest::Test
|
|
61
61
|
@o.close
|
62
62
|
assert_equal 'foobarbaz', @i.read
|
63
63
|
end
|
64
|
+
|
65
|
+
def test_big_write
|
66
|
+
chunk = '*' * 60000
|
67
|
+
@o << chunk
|
68
|
+
@o.close
|
69
|
+
assert_equal chunk, @i.read
|
70
|
+
end
|
64
71
|
end
|
65
72
|
|
66
73
|
class IOClassMethodsTest < MiniTest::Test
|
data/test/test_thread.rb
CHANGED
data/test/test_thread_pool.rb
CHANGED
@@ -65,8 +65,8 @@ class ThreadPoolTest < MiniTest::Test
|
|
65
65
|
end
|
66
66
|
elapsed = Time.now - t0
|
67
67
|
|
68
|
-
|
69
|
-
|
68
|
+
assert_in_range 0..0.007, elapsed
|
69
|
+
assert_in_range 0..1, buffer.size
|
70
70
|
|
71
71
|
sleep 0.1 # allow time for threads to spawn
|
72
72
|
assert_equal @pool.size, threads.uniq.size
|
data/test/test_throttler.rb
CHANGED
@@ -10,8 +10,7 @@ class ThrottlerTest < MiniTest::Test
|
|
10
10
|
sleep 0.02
|
11
11
|
f.stop
|
12
12
|
snooze
|
13
|
-
|
14
|
-
assert buffer.size <= 3
|
13
|
+
assert_in_range 2..3, buffer.size
|
15
14
|
ensure
|
16
15
|
t.stop
|
17
16
|
end
|
@@ -24,7 +23,7 @@ class ThrottlerTest < MiniTest::Test
|
|
24
23
|
end
|
25
24
|
sleep 0.25
|
26
25
|
f.stop
|
27
|
-
|
26
|
+
assert_in_range 2..6, buffer.size
|
28
27
|
ensure
|
29
28
|
t.stop
|
30
29
|
end
|
@@ -35,8 +34,7 @@ class ThrottlerTest < MiniTest::Test
|
|
35
34
|
f = spin { loop { t.process { buffer << 1 } } }
|
36
35
|
sleep 0.02
|
37
36
|
f.stop
|
38
|
-
|
39
|
-
assert buffer.size <= 3
|
37
|
+
assert_in_range 2..3, buffer.size
|
40
38
|
ensure
|
41
39
|
t.stop
|
42
40
|
end
|
data/test/test_timer.rb
CHANGED
@@ -29,28 +29,4 @@ class TimerTest < MiniTest::Test
|
|
29
29
|
ensure
|
30
30
|
t.stop
|
31
31
|
end
|
32
|
-
|
33
|
-
def test_that_repeating_timer_compensates_for_drift
|
34
|
-
count = 0
|
35
|
-
t = Gyro::Timer.new(0.1, 0.1)
|
36
|
-
deltas = []
|
37
|
-
last = nil
|
38
|
-
spin {
|
39
|
-
last = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
40
|
-
loop {
|
41
|
-
t.await
|
42
|
-
now = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
43
|
-
elapsed = (now - last)
|
44
|
-
deltas << elapsed
|
45
|
-
last = now
|
46
|
-
count += 1
|
47
|
-
sleep 0.05
|
48
|
-
break if count >= 3
|
49
|
-
}
|
50
|
-
}
|
51
|
-
suspend
|
52
|
-
assert_equal 0, deltas[1..-1].filter { |d| (d - 0.1).abs >= 0.05 }.size
|
53
|
-
ensure
|
54
|
-
t.stop
|
55
|
-
end
|
56
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polyphony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.39'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|