diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/openssl/test_pair.rb | 27 | ||||
-rw-r--r-- | test/socket/test_nonblock.rb | 2 | ||||
-rw-r--r-- | test/socket/test_tcp.rb | 8 | ||||
-rw-r--r-- | test/socket/test_unix.rb | 7 |
4 files changed, 44 insertions, 0 deletions
diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb index 3aca5f4833..2c2776b644 100644 --- a/test/openssl/test_pair.rb +++ b/test/openssl/test_pair.rb @@ -283,6 +283,33 @@ module OpenSSL::TestPairM serv.close if serv && !serv.closed? end + def test_accept_nonblock_no_exception + ctx2 = OpenSSL::SSL::SSLContext.new + ctx2.ciphers = "ADH" + ctx2.tmp_dh_callback = proc { OpenSSL::TestUtils::TEST_KEY_DH1024 } + + sock1, sock2 = tcp_pair + + s2 = OpenSSL::SSL::SSLSocket.new(sock2, ctx2) + accepted = s2.accept_nonblock(exception: false) + assert_equal :wait_readable, accepted + + ctx1 = OpenSSL::SSL::SSLContext.new + ctx1.ciphers = "ADH" + s1 = OpenSSL::SSL::SSLSocket.new(sock1, ctx1) + th = Thread.new { s1.connect } + until th.join(0.01) + accepted = s2.accept_nonblock(exception: false) + assert_includes([s2, :wait_readable, :wait_writable ], accepted) + end + ensure + s1.close if s1 + s2.close if s2 + sock1.close if sock1 + sock2.close if sock2 + accepted.close if accepted.respond_to?(:close) + end + def test_connect_accept_nonblock ctx = OpenSSL::SSL::SSLContext.new() ctx.ciphers = "ADH" diff --git a/test/socket/test_nonblock.rb b/test/socket/test_nonblock.rb index 882e438deb..94ed198616 100644 --- a/test/socket/test_nonblock.rb +++ b/test/socket/test_nonblock.rb @@ -13,6 +13,8 @@ class TestSocketNonblock < Test::Unit::TestCase serv.bind(Socket.sockaddr_in(0, "127.0.0.1")) serv.listen(5) assert_raise(IO::WaitReadable) { serv.accept_nonblock } + assert_equal :wait_readable, serv.accept_nonblock(exception: false) + assert_raise(IO::WaitReadable) { serv.accept_nonblock(exception: true) } c = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) c.connect(serv.getsockname) begin diff --git a/test/socket/test_tcp.rb b/test/socket/test_tcp.rb index 7328897d1e..a6c332c6c4 100644 --- a/test/socket/test_tcp.rb +++ b/test/socket/test_tcp.rb @@ -76,4 +76,12 @@ class TestSocket_TCPSocket < Test::Unit::TestCase th.join } end + + def test_accept_nonblock + TCPServer.open("localhost", 0) {|svr| + assert_raises(IO::WaitReadable) { svr.accept_nonblock } + assert_equal :wait_readable, svr.accept_nonblock(exception: false) + assert_raises(IO::WaitReadable) { svr.accept_nonblock(exception: true) } + } + end end if defined?(TCPSocket) diff --git a/test/socket/test_unix.rb b/test/socket/test_unix.rb index 866c83906e..829eaa90a2 100644 --- a/test/socket/test_unix.rb +++ b/test/socket/test_unix.rb @@ -663,4 +663,11 @@ class TestSocket_UNIXSocket < Test::Unit::TestCase assert(s0.closed?) end + def test_accept_nonblock + bound_unix_socket(UNIXServer) {|serv, path| + assert_raises(IO::WaitReadable) { serv.accept_nonblock } + assert_raises(IO::WaitReadable) { serv.accept_nonblock(exception: true) } + assert_equal :wait_readable, serv.accept_nonblock(exception: false) + } + end end if defined?(UNIXSocket) && /cygwin/ !~ RUBY_PLATFORM |