aboutsummaryrefslogtreecommitdiffstats
path: root/test/socket/test_socket.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-03 07:25:57 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-03 07:25:57 +0000
commit24eafe83763c2c71efdd9b8198d45c0cb1af4b7c (patch)
treec8f31330f1d0591357c9214e9281ae6201baaa13 /test/socket/test_socket.rb
parent260d0d0399f902e9c079b3447d67957678c461c5 (diff)
downloadruby-24eafe83763c2c71efdd9b8198d45c0cb1af4b7c.tar.gz
* ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): new
private function for allocating same port both IPv4 and IPv6. (Socket.tcp_server_sockets): use tcp_server_sockets_port0 for port 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/socket/test_socket.rb')
-rw-r--r--test/socket/test_socket.rb38
1 files changed, 37 insertions, 1 deletions
diff --git a/test/socket/test_socket.rb b/test/socket/test_socket.rb
index d0f401b6f2..6f6bbb62ef 100644
--- a/test/socket/test_socket.rb
+++ b/test/socket/test_socket.rb
@@ -111,6 +111,21 @@ class TestSocket < Test::Unit::TestCase
end
end
+ def test_tcp_server_sockets_port0
+ sockets = Socket.tcp_server_sockets(0)
+ ports = sockets.map {|s| s.local_address.ip_port }
+ the_port = ports.first
+ ports.each {|port|
+ assert_equal(the_port, port)
+ }
+ ensure
+ if sockets
+ sockets.each {|s|
+ s.close
+ }
+ end
+ end
+
if defined? UNIXSocket
def test_unix
Dir.mktmpdir {|tmpdir|
@@ -144,7 +159,7 @@ class TestSocket < Test::Unit::TestCase
}
end
- def test_accept_loop
+ def test_accept_loop_with_unix
Dir.mktmpdir {|tmpdir|
tcp_servers = []
clients = []
@@ -171,4 +186,25 @@ class TestSocket < Test::Unit::TestCase
end
end
+ def test_accept_loop
+ servers = []
+ begin
+ servers = Socket.tcp_server_sockets(0)
+ port = servers[0].local_address.ip_port
+ Socket.tcp("localhost", port) {|s1|
+ Socket.accept_loop(servers) {|s2, client_ai|
+ begin
+ assert_equal(s1.local_address.ip_unpack, client_ai.ip_unpack)
+ ensure
+ s2.close
+ end
+ break
+ }
+ }
+ ensure
+ servers.each {|s| s.close if !s.closed? }
+ end
+
+ end
+
end if defined?(Socket)