summaryrefslogtreecommitdiff
path: root/test/fiber/test_io.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/fiber/test_io.rb')
-rw-r--r--test/fiber/test_io.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/fiber/test_io.rb b/test/fiber/test_io.rb
index fafda7c310..ce65a55f78 100644
--- a/test/fiber/test_io.rb
+++ b/test/fiber/test_io.rb
@@ -97,4 +97,47 @@ class TestFiberIO < Test::Unit::TestCase
assert_kind_of Errno::EPIPE, error
end
+
+ def test_tcp_accept
+ server = TCPServer.new('localhost', 0)
+
+ th = Thread.new do
+ Fiber.set_scheduler(Scheduler.new)
+
+ Fiber.schedule do
+ sender = server.accept
+ sender.wait_writable
+ sender.write "hello"
+ sender.close
+ end
+ end
+
+ recver = TCPSocket.new('localhost', server.local_address.ip_port)
+ assert "hello", recver.read
+
+ recver.close
+ server.close
+ th.join
+ end
+
+ def test_tcp_connect
+ server = TCPServer.new('localhost', 0)
+
+ th = Thread.new do
+ Fiber.set_scheduler(Scheduler.new)
+
+ Fiber.schedule do
+ sender = TCPSocket.new('localhost', server.local_address.ip_port)
+ sender.write "hello"
+ sender.close
+ end
+ end
+
+ recver = server.accept
+ assert "hello", recver.read
+
+ recver.close
+ server.close
+ th.join
+ end
end