Synchronize with a Queue instead of sleeping
This commit is contained in:
parent
47ad57f245
commit
81504e83e7
@ -63,16 +63,20 @@ class TestIOWait < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_wait_forever
|
def test_wait_forever
|
||||||
th = Thread.new { sleep 0.01; @w.syswrite "." }
|
q = Thread::Queue.new
|
||||||
|
th = Thread.new { q.pop; @w.syswrite "." }
|
||||||
|
q.push(true)
|
||||||
assert_equal @r, @r.wait
|
assert_equal @r, @r.wait
|
||||||
ensure
|
ensure
|
||||||
th.join
|
th.join
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_wait_eof
|
def test_wait_eof
|
||||||
th = Thread.new { sleep 0.01; @w.close }
|
q = Thread::Queue.new
|
||||||
|
th = Thread.new { q.pop; @w.close }
|
||||||
ret = nil
|
ret = nil
|
||||||
assert_nothing_raised(Timeout::Error) do
|
assert_nothing_raised(Timeout::Error) do
|
||||||
|
q.push(true)
|
||||||
Timeout.timeout(0.1) { ret = @r.wait }
|
Timeout.timeout(0.1) { ret = @r.wait }
|
||||||
end
|
end
|
||||||
assert_equal @r, ret
|
assert_equal @r, ret
|
||||||
@ -94,16 +98,20 @@ class TestIOWait < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_wait_readable_forever
|
def test_wait_readable_forever
|
||||||
th = Thread.new { sleep 0.01; @w.syswrite "." }
|
q = Thread::Queue.new
|
||||||
|
th = Thread.new { q.pop; @w.syswrite "." }
|
||||||
|
q.push(true)
|
||||||
assert_equal @r, @r.wait_readable
|
assert_equal @r, @r.wait_readable
|
||||||
ensure
|
ensure
|
||||||
th.join
|
th.join
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_wait_readable_eof
|
def test_wait_readable_eof
|
||||||
th = Thread.new { sleep 0.01; @w.close }
|
q = Thread::Queue.new
|
||||||
|
th = Thread.new { q.pop; @w.close }
|
||||||
ret = nil
|
ret = nil
|
||||||
assert_nothing_raised(Timeout::Error) do
|
assert_nothing_raised(Timeout::Error) do
|
||||||
|
q.push(true)
|
||||||
Timeout.timeout(0.1) { ret = @r.wait_readable }
|
Timeout.timeout(0.1) { ret = @r.wait_readable }
|
||||||
end
|
end
|
||||||
assert_equal @r, ret
|
assert_equal @r, ret
|
||||||
|
Loading…
x
Reference in New Issue
Block a user