polyphony 0.39 → 0.40
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -2
- data/Gemfile.lock +3 -3
- data/README.md +2 -1
- data/examples/io/tunnel.rb +48 -0
- data/ext/gyro/async.c +15 -45
- data/ext/gyro/child.c +8 -41
- data/ext/gyro/fiber.c +4 -3
- data/ext/gyro/gyro.c +12 -17
- data/ext/gyro/gyro.h +48 -0
- data/ext/gyro/io.c +13 -45
- data/ext/gyro/queue.c +31 -27
- data/ext/gyro/selector.c +0 -23
- data/ext/gyro/signal.c +8 -42
- data/ext/gyro/socket.c +7 -4
- data/ext/gyro/thread.c +27 -18
- data/ext/gyro/timer.c +18 -54
- data/lib/polyphony/version.rb +1 -1
- data/lib/polyphony.rb +1 -3
- data/polyphony.gemspec +1 -1
- data/test/helper.rb +3 -10
- data/test/test_async.rb +2 -0
- data/test/test_global_api.rb +9 -9
- data/test/test_io.rb +0 -7
- data/test/test_thread.rb +1 -1
- data/test/test_thread_pool.rb +2 -2
- data/test/test_throttler.rb +5 -3
- data/test/test_timer.rb +24 -0
- metadata +5 -4
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 t1 - t0 < 0.03
|
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 t1 - t0 < 0.02
|
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 t1 - t0 < 0.02
|
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 t1 - t0 < 0.02
|
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 t1 - t0 < 0.02
|
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 counter >= 5 && counter <= 6
|
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 counter >= 5 && counter <= 6
|
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 (4..5).include?(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 (0.045..0.08).include? elapsed
|
259
259
|
|
260
260
|
f = spin { sleep }
|
261
261
|
snooze
|
data/test/test_io.rb
CHANGED
@@ -61,13 +61,6 @@ 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
|
71
64
|
end
|
72
65
|
|
73
66
|
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 elapsed < 0.007
|
69
|
+
assert buffer.size < 2
|
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,7 +10,8 @@ class ThrottlerTest < MiniTest::Test
|
|
10
10
|
sleep 0.02
|
11
11
|
f.stop
|
12
12
|
snooze
|
13
|
-
|
13
|
+
assert buffer.size >= 2
|
14
|
+
assert buffer.size <= 3
|
14
15
|
ensure
|
15
16
|
t.stop
|
16
17
|
end
|
@@ -23,7 +24,7 @@ class ThrottlerTest < MiniTest::Test
|
|
23
24
|
end
|
24
25
|
sleep 0.25
|
25
26
|
f.stop
|
26
|
-
|
27
|
+
assert (2..6).include?(buffer.size)
|
27
28
|
ensure
|
28
29
|
t.stop
|
29
30
|
end
|
@@ -34,7 +35,8 @@ class ThrottlerTest < MiniTest::Test
|
|
34
35
|
f = spin { loop { t.process { buffer << 1 } } }
|
35
36
|
sleep 0.02
|
36
37
|
f.stop
|
37
|
-
|
38
|
+
assert buffer.size >= 2
|
39
|
+
assert buffer.size <= 3
|
38
40
|
ensure
|
39
41
|
t.stop
|
40
42
|
end
|
data/test/test_timer.rb
CHANGED
@@ -29,4 +29,28 @@ 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
|
32
56
|
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.40'
|
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-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.1.
|
103
|
+
version: 1.1.4
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.1.
|
110
|
+
version: 1.1.4
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake-compiler
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -335,6 +335,7 @@ files:
|
|
335
335
|
- examples/core/xx-trace.rb
|
336
336
|
- examples/core/xx-using-a-mutex.rb
|
337
337
|
- examples/core/xx-worker-thread.rb
|
338
|
+
- examples/io/tunnel.rb
|
338
339
|
- examples/io/xx-backticks.rb
|
339
340
|
- examples/io/xx-echo_client.rb
|
340
341
|
- examples/io/xx-echo_client_from_stdin.rb
|