polyphony 0.53.1 → 0.57.0

Sign up to get free protection for your applications and to get access to all the features.
data/test/test_fiber.rb CHANGED
@@ -132,7 +132,6 @@ class FiberTest < MiniTest::Test
132
132
  event = Polyphony::Event.new
133
133
 
134
134
  t = Thread.new do
135
- f = spin_loop { snooze }
136
135
  sleep 0.001
137
136
  event.signal(:foo)
138
137
  end
data/test/test_io.rb CHANGED
@@ -98,8 +98,10 @@ class IOTest < MiniTest::Test
98
98
 
99
99
  buf = []
100
100
  f = spin do
101
+ peer = receive
101
102
  while (l = i.gets)
102
103
  buf << l
104
+ peer << true
103
105
  end
104
106
  end
105
107
 
@@ -107,11 +109,12 @@ class IOTest < MiniTest::Test
107
109
  assert_equal [], buf
108
110
 
109
111
  o << 'fab'
110
- snooze
112
+ f << Fiber.current
113
+ sleep 0.05
111
114
  assert_equal [], buf
112
115
 
113
116
  o << "ulous\n"
114
- sleep 0.01
117
+ receive
115
118
  assert_equal ["fabulous\n"], buf
116
119
 
117
120
  o.close
@@ -287,7 +290,7 @@ class IOClassMethodsTest < MiniTest::Test
287
290
  end
288
291
 
289
292
  def test_foreach
290
- skip "IO.foreach is not yet implemented"
293
+ skip 'IO.foreach is not yet implemented'
291
294
  lines = []
292
295
  IO.foreach(__FILE__) { |l| lines << l }
293
296
  assert_equal "# frozen_string_literal: true\n", lines[0]
data/test/test_signal.rb CHANGED
@@ -50,7 +50,7 @@ class SignalTrapTest < Minitest::Test
50
50
  ensure
51
51
  o.close
52
52
  end
53
- sleep 0.02
53
+ sleep 0.1
54
54
  o.close
55
55
  Process.kill('INT', pid)
56
56
  Thread.current.backend.waitpid(pid)
data/test/test_sync.rb CHANGED
@@ -70,4 +70,47 @@ class MutexTest < MiniTest::Test
70
70
  Fiber.current.await_all_children
71
71
  assert_equal [:bar, :foo], buf
72
72
  end
73
+
74
+ def test_owned?
75
+ buf = []
76
+ lock = Polyphony::Mutex.new
77
+ (1..3).each do |i|
78
+ spin do
79
+ lock.synchronize do
80
+ buf << ">> #{i}"
81
+ buf << [i, lock.owned?]
82
+ sleep(rand * 0.05)
83
+ buf << "<< #{i}"
84
+ end
85
+ buf << [i, lock.owned?]
86
+ end
87
+ end
88
+
89
+ Fiber.current.await_all_children
90
+ assert_equal ['>> 1', [1, true], '<< 1', [1, false], '>> 2', [2, true], '<< 2', [2, false], '>> 3', [3, true], '<< 3', [3, false]], buf
91
+ end
92
+
93
+ def test_locked?
94
+ lock = Polyphony::Mutex.new
95
+ a = spin do
96
+ sender = receive
97
+ lock.synchronize do
98
+ sender << 'pong'
99
+ receive
100
+ end
101
+ sender << 'pong'
102
+ end
103
+
104
+ snooze
105
+ assert !lock.locked?
106
+ a << Fiber.current
107
+
108
+ receive
109
+ assert lock.locked?
110
+
111
+ a << Fiber.current
112
+
113
+ receive
114
+ assert !lock.locked?
115
+ end
73
116
  end
@@ -65,7 +65,7 @@ class ThreadPoolTest < MiniTest::Test
65
65
  end
66
66
  elapsed = Time.now - t0
67
67
 
68
- assert elapsed < 0.007
68
+ assert_in_range 0.0..0.009, elapsed
69
69
  assert buffer.size < 2
70
70
 
71
71
  sleep 0.1 # allow time for threads to spawn
data/test/test_timer.rb CHANGED
@@ -31,7 +31,7 @@ class TimerMoveOnAfterTest < MiniTest::Test
31
31
  end
32
32
  t1 = Time.now
33
33
 
34
- assert_in_range 0.01..0.025, t1 - t0
34
+ assert_in_range 0.01..0.05, t1 - t0
35
35
  assert_equal :bar, v
36
36
  end
37
37
 
@@ -48,7 +48,7 @@ class TimerMoveOnAfterTest < MiniTest::Test
48
48
  t1 = Time.now
49
49
 
50
50
  assert_nil v
51
- assert_in_range 0.015..0.03, t1 - t0
51
+ assert_in_range 0.015..0.04, t1 - t0
52
52
  end
53
53
  end
54
54
 
@@ -75,14 +75,21 @@ class TimerCancelAfterTest < MiniTest::Test
75
75
  end
76
76
 
77
77
  def test_timer_cancel_after_with_reset
78
- t0 = Time.now
79
- @timer.cancel_after(0.01) do
80
- sleep 0.007
78
+ buf = []
79
+ @timer.cancel_after(0.13) do
80
+ sleep 0.05
81
+ buf << 1
81
82
  @timer.reset
82
- sleep 0.007
83
+ sleep 0.05
84
+ buf << 2
85
+ @timer.reset
86
+ sleep 0.05
87
+ buf << 3
88
+ @timer.reset
89
+ sleep 0.05
90
+ buf << 4
83
91
  end
84
- t1 = Time.now
85
- assert_in_range 0.012..0.024, t1 - t0
92
+ assert_equal [1, 2, 3, 4], buf
86
93
  end
87
94
 
88
95
  class CustomException < Exception
@@ -140,7 +147,6 @@ class TimerMiscTest < MiniTest::Test
140
147
  snooze
141
148
  assert_equal [], buffer
142
149
  sleep 0.1
143
- p :post_sleep
144
150
  assert_equal [2], buffer
145
151
  end
146
152
 
@@ -152,6 +158,6 @@ class TimerMiscTest < MiniTest::Test
152
158
  end
153
159
  sleep 0.05
154
160
  f.stop
155
- assert_in_range 4..6, buffer.size
161
+ assert_in_range 3..7, buffer.size
156
162
  end
157
163
  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.53.1
4
+ version: 0.57.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-10 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -226,6 +226,20 @@ dependencies:
226
226
  - - '='
227
227
  - !ruby/object:Gem::Version
228
228
  version: 0.17.1
229
+ - !ruby/object:Gem::Dependency
230
+ name: localhost
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: 1.1.4
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: 1.1.4
229
243
  description:
230
244
  email: sharon@noteflakes.com
231
245
  executables: []
@@ -310,9 +324,11 @@ files:
310
324
  - examples/core/erlang-style-genserver.rb
311
325
  - examples/core/forking.rb
312
326
  - examples/core/handling-signals.rb
327
+ - examples/core/idle_gc.rb
313
328
  - examples/core/interrupt.rb
314
329
  - examples/core/nested.rb
315
330
  - examples/core/pingpong.rb
331
+ - examples/core/queue.rb
316
332
  - examples/core/recurrent-timer.rb
317
333
  - examples/core/resource_delegate.rb
318
334
  - examples/core/spin.rb
@@ -336,13 +352,17 @@ files:
336
352
  - examples/io/echo_stdin.rb
337
353
  - examples/io/happy-eyeballs.rb
338
354
  - examples/io/httparty.rb
355
+ - examples/io/https_server.rb
339
356
  - examples/io/irb.rb
340
357
  - examples/io/net-http.rb
341
358
  - examples/io/open.rb
359
+ - examples/io/pipe.rb
342
360
  - examples/io/pry.rb
343
361
  - examples/io/rack_server.rb
344
362
  - examples/io/raw.rb
345
363
  - examples/io/reline.rb
364
+ - examples/io/splice_chunks.rb
365
+ - examples/io/stdio.rb
346
366
  - examples/io/system.rb
347
367
  - examples/io/tcp_proxy.rb
348
368
  - examples/io/tcpserver.rb
@@ -397,6 +417,7 @@ files:
397
417
  - ext/liburing/setup.c
398
418
  - ext/liburing/syscall.c
399
419
  - ext/liburing/syscall.h
420
+ - ext/polyphony/backend_common.c
400
421
  - ext/polyphony/backend_common.h
401
422
  - ext/polyphony/backend_io_uring.c
402
423
  - ext/polyphony/backend_io_uring_context.c