polyphony 0.47.1 → 0.47.5.1

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.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polyphony
4
- VERSION = '0.47.1'
4
+ VERSION = '0.47.5.1'
5
5
  end
@@ -210,7 +210,7 @@ class CancelAfterTest < MiniTest::Test
210
210
  sleep 0.007
211
211
  end
212
212
  t1 = Time.now
213
- assert_in_range 0.014..0.02, t1 - t0
213
+ assert_in_range 0.014..0.024, t1 - t0
214
214
  end
215
215
 
216
216
  class CustomException < Exception
@@ -297,6 +297,16 @@ class SpinLoopTest < MiniTest::Test
297
297
  f.stop
298
298
  assert_in_range 1..3, counter
299
299
  end
300
+
301
+ def test_spin_loop_with_interval
302
+ buffer = []
303
+ counter = 0
304
+ t0 = Time.now
305
+ f = spin_loop(interval: 0.01) { buffer << (counter += 1) }
306
+ sleep 0.02
307
+ f.stop
308
+ assert_in_range 1..3, counter
309
+ end
300
310
  end
301
311
 
302
312
  class SpinScopeTest < MiniTest::Test
@@ -48,27 +48,6 @@ class ResourcePoolTest < MiniTest::Test
48
48
  assert_equal 1, pool.size
49
49
  end
50
50
 
51
- def test_discard_with_block
52
- resources = [+'a', +'b', +'c', +'d', +'e', +'f']
53
- pool = Polyphony::ResourcePool.new(limit: 4) { resources.shift }
54
-
55
- buffer = []
56
- (1..4).each do |i|
57
- spin do
58
- 3.times do
59
- pool.acquire { |r| buffer << [i, r]; trace [i]; snooze }
60
- end
61
- end
62
- end
63
-
64
- 2.times { trace [0]; snooze }
65
- assert_equal [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], buffer
66
-
67
- pool.discard! { |r| r == 'a' || r == 'c' }
68
- 2.times { trace [0]; snooze }
69
- assert_equal [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd'], [1, 'b'], [2, 'd'], [3, 'e'], [4, 'f']], buffer
70
- end
71
-
72
51
  def test_single_resource_limit
73
52
  resources = [+'a', +'b']
74
53
  pool = Polyphony::ResourcePool.new(limit: 1) { resources.shift }
@@ -76,4 +76,22 @@ class SignalTrapTest < Minitest::Test
76
76
  buffer = i.read
77
77
  assert_equal "3-interrupt\n", buffer
78
78
  end
79
+
80
+ def test_io_in_signal_handler
81
+ i, o = IO.pipe
82
+ pid = Polyphony.fork do
83
+ trap('INT') { o.puts 'INT'; o.close; exit! }
84
+ i.close
85
+ sleep
86
+ ensure
87
+ o.close
88
+ end
89
+
90
+ o.close
91
+ sleep 0.1
92
+ Process.kill('INT', pid)
93
+ Thread.current.backend.waitpid(pid)
94
+ buffer = i.read
95
+ assert_equal "INT\n", buffer
96
+ end
79
97
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'helper'
4
+ require 'fileutils'
4
5
 
5
6
  class SocketTest < MiniTest::Test
6
7
  def setup
@@ -24,7 +25,32 @@ class SocketTest < MiniTest::Test
24
25
  snooze
25
26
  client = TCPSocket.new('127.0.0.1', port)
26
27
  client.write("1234\n")
27
- assert_equal "1234\n", client.readpartial(8192)
28
+ assert_equal "1234\n", client.recv(8192)
29
+ client.close
30
+ ensure
31
+ server_fiber&.stop
32
+ server_fiber&.await
33
+ server&.close
34
+ end
35
+
36
+ def test_unix_socket
37
+ path = '/tmp/test_unix_socket'
38
+ FileUtils.rm(path) rescue nil
39
+ server = UNIXServer.new(path)
40
+ server_fiber = spin do
41
+ server.accept_loop do |socket|
42
+ spin do
43
+ while (data = socket.gets(8192))
44
+ socket << data
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ snooze
51
+ client = UNIXSocket.new(path)
52
+ client.write("1234\n")
53
+ assert_equal "1234\n", client.recv(8192)
28
54
  client.close
29
55
  ensure
30
56
  server_fiber&.stop
@@ -20,9 +20,10 @@ class SuperviseTest < MiniTest::Test
20
20
 
21
21
  f2 << 'bar'
22
22
  f2.await
23
+ assert_equal :waiting, p.state
23
24
  snooze
24
25
 
25
- assert_equal :waiting, p.state
26
+ assert_equal :dead, p.state
26
27
  end
27
28
 
28
29
  def test_supervise_with_restart
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.47.1
4
+ version: 0.47.5.1
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-11-10 00:00:00.000000000 Z
11
+ date: 2020-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -386,6 +386,7 @@ files:
386
386
  - examples/io/tcpserver.rb
387
387
  - examples/io/tcpsocket.rb
388
388
  - examples/io/tunnel.rb
389
+ - examples/io/unix_socket.rb
389
390
  - examples/io/zip.rb
390
391
  - examples/performance/fiber_resume.rb
391
392
  - examples/performance/fiber_transfer.rb