polyphony 0.73 → 0.76

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/test/test_io.rb CHANGED
@@ -354,9 +354,9 @@ class IOClassMethodsTest < MiniTest::Test
354
354
  skip unless IS_LINUX
355
355
 
356
356
  counter = 0
357
- timer = spin { throttled_loop(200) { counter += 1 } }
357
+ timer = spin { throttled_loop(20) { counter += 1 } }
358
358
 
359
- IO.popen('sleep 0.05') { |io| io.read(8192) }
359
+ IO.popen('sleep 0.5') { |io| io.read(8192) }
360
360
  assert(counter >= 5)
361
361
 
362
362
  result = nil
data/test/test_kernel.rb CHANGED
@@ -51,8 +51,8 @@ class KernelTest < MiniTest::Test
51
51
  counter = 0
52
52
  timer = spin { throttled_loop(200) { counter += 1 } }
53
53
 
54
- `sleep 0.01`
55
- assert(counter >= 2)
54
+ `sleep 0.05`
55
+ assert_in_range 8..14, counter if IS_LINUX
56
56
 
57
57
  result = `echo "hello"`
58
58
  assert_equal "hello\n", result
data/test/test_socket.rb CHANGED
@@ -9,9 +9,9 @@ class SocketTest < MiniTest::Test
9
9
  super
10
10
  end
11
11
 
12
- def start_tcp_server_on_random_port
12
+ def start_tcp_server_on_random_port(host = '127.0.0.1')
13
13
  port = rand(1100..60000)
14
- server = TCPServer.new('127.0.0.1', port)
14
+ server = TCPServer.new(host, port)
15
15
  [port, server]
16
16
  rescue Errno::EADDRINUSE
17
17
  retry
@@ -40,6 +40,39 @@ class SocketTest < MiniTest::Test
40
40
  server&.close
41
41
  end
42
42
 
43
+ def test_tcpsocket_open_with_hostname
44
+ client = TCPSocket.open('google.com', 80)
45
+ client.write("GET / HTTP/1.0\r\nHost: google.com\r\n\r\n")
46
+ result = nil
47
+ move_on_after(1) {
48
+ result = client.read
49
+ }
50
+ assert result =~ /HTTP\/1.0 301 Moved Permanently/
51
+ end
52
+
53
+ def test_tcp_ipv6
54
+ port, server = start_tcp_server_on_random_port('::1')
55
+ server_fiber = spin do
56
+ while (socket = server.accept)
57
+ spin do
58
+ while (data = socket.gets(8192))
59
+ socket << data
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ snooze
66
+ client = TCPSocket.new('::1', port)
67
+ client.write("1234\n")
68
+ assert_equal "1234\n", client.recv(8192)
69
+ client.close
70
+ ensure
71
+ server_fiber&.stop
72
+ server_fiber&.await
73
+ server&.close
74
+ end
75
+
43
76
  def test_read
44
77
  port, server = start_tcp_server_on_random_port
45
78
  server_fiber = spin do
data/test/test_thread.rb CHANGED
@@ -132,7 +132,7 @@ class ThreadTest < MiniTest::Test
132
132
  Thread.backend.trace_proc = proc {|*r| records << r }
133
133
  suspend
134
134
  assert_equal [
135
- [:fiber_switchpoint, Fiber.current]
135
+ [:fiber_switchpoint, Fiber.current, ["#{__FILE__}:#{__LINE__ - 2}:in `test_that_suspend_returns_immediately_if_no_watchers'"] + caller]
136
136
  ], records
137
137
  ensure
138
138
  Thread.backend.trace_proc = nil
@@ -65,7 +65,7 @@ class ThreadPoolTest < MiniTest::Test
65
65
  end
66
66
  elapsed = Time.now - t0
67
67
 
68
- assert_in_range 0.0..0.009, elapsed
68
+ assert_in_range 0.0..0.009, elapsed if IS_LINUX
69
69
  assert buffer.size < 2
70
70
 
71
71
  sleep 0.15 # allow time for threads to spawn
@@ -10,7 +10,7 @@ class ThrottlerTest < MiniTest::Test
10
10
  f = spin { loop { t.process { buffer << 1 } } }
11
11
  sleep 0.2
12
12
  f.stop
13
- assert_in_range 1..4, buffer.size
13
+ assert_in_range 1..4, buffer.size if IS_LINUX
14
14
  ensure
15
15
  t.stop
16
16
  end
@@ -23,7 +23,7 @@ class ThrottlerTest < MiniTest::Test
23
23
  end
24
24
  sleep 0.25
25
25
  f.stop
26
- assert_in_range 2..7, buffer.size
26
+ assert_in_range 4..6, buffer.size if IS_LINUX
27
27
  ensure
28
28
  t.stop
29
29
  end
@@ -34,7 +34,7 @@ class ThrottlerTest < MiniTest::Test
34
34
  f = spin { loop { t.process { buffer << 1 } } }
35
35
  sleep 0.02
36
36
  f.stop
37
- assert_in_range 2..4, buffer.size
37
+ assert_in_range 2..4, buffer.size if IS_LINUX
38
38
  ensure
39
39
  t.stop
40
40
  end
data/test/test_timer.rb CHANGED
@@ -160,6 +160,6 @@ class TimerMiscTest < MiniTest::Test
160
160
  end
161
161
  sleep 0.05
162
162
  f.stop
163
- assert_in_range 3..7, buffer.size
163
+ assert_in_range 3..7, buffer.size if IS_LINUX
164
164
  end
165
165
  end
data/test/test_trace.rb CHANGED
@@ -10,7 +10,7 @@ class TraceTest < MiniTest::Test
10
10
 
11
11
  assert_equal [
12
12
  [:fiber_schedule, Fiber.current, nil, false],
13
- [:fiber_switchpoint, Fiber.current],
13
+ [:fiber_switchpoint, Fiber.current, ["#{__FILE__}:#{__LINE__ - 4}:in `test_tracing_enabled'"] + caller],
14
14
  [:fiber_run, Fiber.current, nil]
15
15
  ], events
16
16
  ensure
@@ -22,9 +22,15 @@ class TraceTest < MiniTest::Test
22
22
  Thread.backend.trace_proc = proc { |*e| events << e }
23
23
 
24
24
  f = spin { sleep 0; :byebye }
25
+ l0 = __LINE__ + 1
25
26
  suspend
26
27
  sleep 0
27
28
 
29
+ Thread.backend.trace_proc = nil
30
+
31
+ # remove caller info for :fiber_switchpoint events
32
+ events.each {|e| e.pop if e[0] == :fiber_switchpoint }
33
+
28
34
  assert_equal [
29
35
  [:fiber_create, f],
30
36
  [:fiber_schedule, f, nil, false],
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.73'
4
+ version: '0.76'
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-12-16 00:00:00.000000000 Z
11
+ date: 2022-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -146,6 +146,7 @@ extra_rdoc_files:
146
146
  files:
147
147
  - ".github/FUNDING.yml"
148
148
  - ".github/workflows/test.yml"
149
+ - ".github/workflows/test_io_uring.yml"
149
150
  - ".gitignore"
150
151
  - ".gitmodules"
151
152
  - ".rubocop.yml"
@@ -430,7 +431,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
430
431
  - !ruby/object:Gem::Version
431
432
  version: '0'
432
433
  requirements: []
433
- rubygems_version: 3.3.0.dev
434
+ rubygems_version: 3.3.3
434
435
  signing_key:
435
436
  specification_version: 4
436
437
  summary: Fine grained concurrency for Ruby