polyphony 0.46.1 → 0.47.4

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.
@@ -130,3 +130,120 @@ class QueueTest < MiniTest::Test
130
130
  assert_equal 0, @queue.size
131
131
  end
132
132
  end
133
+
134
+ class CappedQueueTest < MiniTest::Test
135
+ def setup
136
+ super
137
+ @queue = Polyphony::Queue.new
138
+ @queue.cap(3)
139
+ end
140
+
141
+ def test_capped?
142
+ q = Polyphony::Queue.new
143
+ assert_nil q.capped?
144
+
145
+ q.cap(3)
146
+ assert_equal 3, q.capped?
147
+ end
148
+
149
+ def test_initalize_with_cap
150
+ q = Polyphony::Queue.new(42)
151
+ assert_equal 42, q.capped?
152
+ end
153
+
154
+ def test_capped_push
155
+ buffer = []
156
+ a = spin do
157
+ (1..5).each do |i|
158
+ @queue.push(i)
159
+ buffer << :"p#{i}"
160
+ end
161
+ @queue.push :stop
162
+ end
163
+
164
+ snooze
165
+
166
+ b = spin_loop do
167
+ i = @queue.shift
168
+ raise Polyphony::Terminate if i == :stop
169
+ buffer << :"s#{i}"
170
+ end
171
+
172
+ Fiber.join(a, b)
173
+ assert_equal [:p1, :p2, :s1, :p3, :s2, :p4, :s3, :p5, :s4, :s5], buffer
174
+ end
175
+
176
+ def test_capped_multi_push
177
+ buffer = []
178
+ a = spin(:a) do
179
+ (1..3).each do |i|
180
+ @queue.push(i)
181
+ buffer << :"p#{i}"
182
+ end
183
+ end
184
+
185
+ buffer = []
186
+ b = spin(:b) do
187
+ (4..6).each do |i|
188
+ @queue.push(i)
189
+ buffer << :"p#{i}"
190
+ end
191
+ @queue.push :stop
192
+ end
193
+
194
+ c = spin_loop do
195
+ i = @queue.shift
196
+ raise Polyphony::Terminate if i == :stop
197
+ buffer << :"s#{i}"
198
+ snooze
199
+ end
200
+
201
+ Fiber.join(a, b, c)
202
+ assert_equal [:p1, :p4, :s1, :p5, :p2, :s4, :p3, :s5, :p6, :s2, :s3, :s6], buffer
203
+ end
204
+
205
+ def test_capped_clear
206
+ buffer = []
207
+ a = spin(:a) do
208
+ (1..5).each do |i|
209
+ @queue.push(i)
210
+ buffer << i
211
+ end
212
+ end
213
+
214
+ snooze while buffer.size < 3
215
+ @queue.clear
216
+ buffer << :clear
217
+
218
+ a.join
219
+ assert_equal [1, 2, 3, :clear, 4, 5], buffer
220
+ end
221
+
222
+ def test_capped_delete
223
+ buffer = []
224
+ a = spin(:a) do
225
+ (1..5).each do |i|
226
+ @queue.push(i)
227
+ buffer << i
228
+ end
229
+ end
230
+
231
+ i = 0
232
+ spin_loop do
233
+ i += 1
234
+ snooze
235
+ end
236
+
237
+ 5.times { snooze }
238
+ assert_equal 5, i
239
+ @queue.delete 1
240
+ buffer << :"d#{i}"
241
+ 3.times { snooze }
242
+ assert_equal 8, i
243
+ @queue.delete 2
244
+ buffer << :"d#{i}"
245
+
246
+ a.join
247
+ assert_equal [1, 2, 3, :d5, 4, :d8, 5], buffer
248
+ end
249
+ end
@@ -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
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.46.1
4
+ version: 0.47.4
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-04 00:00:00.000000000 Z
11
+ date: 2020-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -348,6 +348,7 @@ files:
348
348
  - examples/core/await.rb
349
349
  - examples/core/channels.rb
350
350
  - examples/core/deferring-an-operation.rb
351
+ - examples/core/enumerable.rb
351
352
  - examples/core/erlang-style-genserver.rb
352
353
  - examples/core/forking.rb
353
354
  - examples/core/handling-signals.rb
@@ -385,7 +386,9 @@ files:
385
386
  - examples/io/tcpserver.rb
386
387
  - examples/io/tcpsocket.rb
387
388
  - examples/io/tunnel.rb
389
+ - examples/io/unix_socket.rb
388
390
  - examples/io/zip.rb
391
+ - examples/performance/fiber_resume.rb
389
392
  - examples/performance/fiber_transfer.rb
390
393
  - examples/performance/fs_read.rb
391
394
  - examples/performance/mem-usage.rb
@@ -394,6 +397,8 @@ files:
394
397
  - examples/performance/snooze.rb
395
398
  - examples/performance/snooze_raw.rb
396
399
  - examples/performance/switch.rb
400
+ - examples/performance/thread-vs-fiber/compare.rb
401
+ - examples/performance/thread-vs-fiber/em_server.rb
397
402
  - examples/performance/thread-vs-fiber/httparty_multi.rb
398
403
  - examples/performance/thread-vs-fiber/httparty_threaded.rb
399
404
  - examples/performance/thread-vs-fiber/polyphony_mt_server.rb
@@ -401,6 +406,7 @@ files:
401
406
  - examples/performance/thread-vs-fiber/polyphony_server_read_loop.rb
402
407
  - examples/performance/thread-vs-fiber/threaded_server.rb
403
408
  - examples/performance/thread_pool_perf.rb
409
+ - examples/performance/thread_switch.rb
404
410
  - ext/libev/Changes
405
411
  - ext/libev/LICENSE
406
412
  - ext/libev/README