From e6aac32abfafcbf9e3dd639694d5016bbaf4fd0d Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 1 Nov 2014 16:32:59 +0000 Subject: * test/openssl/test_ssl.rb: Don't ignore errors on listener threads, as much as possible. * test/openssl/test_ssl_session.rb: Ditto. * test/openssl/test_partial_record_read.rb: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/openssl/test_partial_record_read.rb | 3 +- test/openssl/test_ssl.rb | 47 +++++++++++++++++++------------- test/openssl/test_ssl_session.rb | 10 +++---- 3 files changed, 35 insertions(+), 25 deletions(-) (limited to 'test') diff --git a/test/openssl/test_partial_record_read.rb b/test/openssl/test_partial_record_read.rb index f3d83c6973..e0d3deb31b 100644 --- a/test/openssl/test_partial_record_read.rb +++ b/test/openssl/test_partial_record_read.rb @@ -14,7 +14,8 @@ if defined?(OpenSSL) ensure server_ssl.close end - end + end, + :ignore_listener_error => false ) do |server, port| sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb index 4f6e41b5eb..0e5f26e5d8 100644 --- a/test/openssl/test_ssl.rb +++ b/test/openssl/test_ssl.rb @@ -34,7 +34,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end def test_ssl_gets - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) { |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false) { |server, port| server_connect(port) { |ssl| ssl.write "abc\n" IO.select [ssl] @@ -48,7 +48,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end def test_ssl_read_nonblock - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) { |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false) { |server, port| server_connect(port) { |ssl| assert_raise(IO::WaitReadable) { ssl.read_nonblock(100) } ssl.write("abc\n") @@ -61,7 +61,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end def test_connect_and_close - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) assert(ssl.connect) @@ -79,7 +79,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end def test_read_and_write - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| # syswrite and sysread ITERATIONS.times{|i| @@ -126,7 +126,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase } end - def test_client_auth + def test_client_auth_failure vflag = OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT start_server(PORT, vflag, true){|server, port| assert_raise(OpenSSL::SSL::SSLError, Errno::ECONNRESET){ @@ -139,7 +139,12 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase ssl.close end } + } + end + def test_client_auth_success + vflag = OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT + start_server(PORT, vflag, true, :ignore_listener_error => false){|server, port| ctx = OpenSSL::SSL::SSLContext.new ctx.key = @cli_key ctx.cert = @cli_cert @@ -170,7 +175,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end vflag = OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT - start_server(PORT, vflag, true, :ctx_proc => ctx_proc){|server, port| + start_server(PORT, vflag, true, :ctx_proc => ctx_proc, :ignore_listener_error => false){|server, port| ctx = OpenSSL::SSL::SSLContext.new client_ca_from_server = nil ctx.client_cert_cb = Proc.new do |sslconn| @@ -183,7 +188,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase def test_read_nonblock_without_session OpenSSL::TestUtils.silent do - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, false){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, false, :ignore_listener_error => false){|server, port| sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) ssl.sync_close = true @@ -201,7 +206,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase def test_starttls OpenSSL::TestUtils.silent do - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, false){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, false, :ignore_listener_error => false){|server, port| sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) ssl.sync_close = true @@ -225,7 +230,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase def test_parallel GC.start - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| ssls = [] 10.times{ sock = TCPSocket.new("127.0.0.1", port) @@ -260,7 +265,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase end } - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| sock = TCPSocket.new("127.0.0.1", port) ctx = OpenSSL::SSL::SSLContext.new ctx.set_params( @@ -349,7 +354,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase def test_post_connection_check sslerr = OpenSSL::SSL::SSLError - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| assert_raise(sslerr){ssl.post_connection_check("localhost.localdomain")} assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")} @@ -372,7 +377,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase ] @svr_cert = issue_cert(@svr, @svr_key, 4, now, now+1800, exts, @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new) - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| assert(ssl.post_connection_check("localhost.localdomain")) assert(ssl.post_connection_check("127.0.0.1")) @@ -394,7 +399,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase ] @svr_cert = issue_cert(@svr, @svr_key, 5, now, now+1800, exts, @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new) - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| assert(ssl.post_connection_check("localhost.localdomain")) assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")} @@ -460,7 +465,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase readwrite_loop(ctx, ssl) end - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc, :ignore_listener_error => false) do |server, port| 2.times do |i| ctx = OpenSSL::SSL::SSLContext.new if defined?(OpenSSL::SSL::OP_NO_TICKET) @@ -493,7 +498,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase assert_equal(num_written, raw_size) ssl.close } - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :server_proc => server_proc){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :server_proc => server_proc, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| str = auml * i num_written = ssl.write(str) @@ -509,7 +514,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase # But it also degrades gracefully, so keep it ctx.options = OpenSSL::SSL::OP_ALL } - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :ignore_listener_error => false){|server, port| server_connect(port) { |ssl| ssl.puts('hello') assert_equal("hello\n", ssl.gets) @@ -695,7 +700,7 @@ end def test_invalid_shutdown_by_gc assert_nothing_raised { - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| 10.times { sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) @@ -708,7 +713,7 @@ end end def test_close_after_socket_close - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false){|server, port| sock = TCPSocket.new("127.0.0.1", port) ssl = OpenSSL::SSL::SSLSocket.new(sock) ssl.sync_close = true @@ -753,7 +758,11 @@ end ssl.connect yield ssl ensure - ssl.close + if ssl + ssl.close + elsif sock + sock.close + end end end diff --git a/test/openssl/test_ssl_session.rb b/test/openssl/test_ssl_session.rb index 5ad65364b9..5f4c1948ca 100644 --- a/test/openssl/test_ssl_session.rb +++ b/test/openssl/test_ssl_session.rb @@ -45,7 +45,7 @@ tddwpBAEDjcwMzA5NTYzMTU1MzAwpQMCARM= def test_session timeout(5) do - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false) do |server, port| sock = TCPSocket.new("127.0.0.1", port) ctx = OpenSSL::SSL::SSLContext.new("TLSv1") ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) @@ -156,7 +156,7 @@ __EOS__ def test_client_session last_session = nil - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false) do |server, port| 2.times do sock = TCPSocket.new("127.0.0.1", port) # Debian's openssl 0.9.8g-13 failed at assert(ssl.session_reused?), @@ -242,7 +242,7 @@ __EOS__ end first_session = nil - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc, :ignore_listener_error => false) do |server, port| 10.times do |i| sock = TCPSocket.new("127.0.0.1", port) ctx = OpenSSL::SSL::SSLContext.new @@ -292,7 +292,7 @@ __EOS__ # any resulting value is OK (ignored) } - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, ignore_listener_error: false) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ignore_listener_error => false) do |server, port| sock = TCPSocket.new("127.0.0.1", port) begin ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) @@ -350,7 +350,7 @@ __EOS__ c.session_cache_stats readwrite_loop(c, ssl) } - start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, ctx_proc: ctx_proc, server_proc: server_proc, ignore_listener_error: false) do |server, port| + start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc, :ignore_listener_error => false) do |server, port| last_client_session = nil 3.times do sock = TCPSocket.new("127.0.0.1", port) -- cgit v1.2.3