File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55
66require "io/event"
77require "io/event/selector"
8+ require "socket"
89
910describe IO ::Event ::Selector do
1011 with "URing" do
12+ it "does not resume io_wait with zero for an unrequested priority event" do
13+ skip "URing is not available" unless subject . const_defined? ( :URing )
14+
15+ uring = subject . const_get ( :URing )
16+ selector = uring . new ( Fiber . current )
17+
18+ server = TCPServer . new ( "127.0.0.1" , 0 )
19+ client = TCPSocket . new ( "127.0.0.1" , server . addr [ 1 ] )
20+ peer = server . accept
21+
22+ result = nil
23+
24+ fiber = Fiber . new do
25+ result = selector . io_wait ( Fiber . current , client , IO ::READABLE )
26+ end
27+
28+ fiber . transfer
29+
30+ peer . send ( "!" , Socket ::MSG_OOB )
31+ selector . select ( 0.1 )
32+
33+ expect ( result ) . not . to be == 0
34+
35+ if fiber . alive?
36+ peer . write ( "x" )
37+
38+ 10 . times do
39+ selector . select ( 0.1 )
40+ break unless fiber . alive?
41+ end
42+
43+ expect ( result ) . to be == IO ::READABLE
44+ end
45+ ensure
46+ selector &.close
47+ client &.close
48+ peer &.close
49+ server &.close
50+ end
51+
1152 it "does not expose unmatched poll completions as integer zero from io_wait" do
1253 skip "URing is not available" unless subject . const_defined? ( :URing )
1354
You can’t perform that action at this time.
0 commit comments