From b9f770ae8ffe2c5f83b5f411534c6d5c2f687345 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 7 May 2014 23:21:10 +0000 Subject: refactored to test Socket and TCPSocket/TCPServer more consistently. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/openssl/test_pair.rb | 128 +++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 74 deletions(-) (limited to 'test/openssl/test_pair.rb') diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb index 70ea47da75..f627066d76 100644 --- a/test/openssl/test_pair.rb +++ b/test/openssl/test_pair.rb @@ -5,14 +5,14 @@ if defined?(OpenSSL) require 'socket' require_relative '../ruby/ut_eof' -module SSLPair +module OpenSSL::SSLPairM def server host = "127.0.0.1" port = 0 ctx = OpenSSL::SSL::SSLContext.new() ctx.ciphers = "ADH" ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::TEST_KEY_DH1024 } - tcps = TCPServer.new(host, port) + tcps = create_tcp_server(host, port) ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx) return ssls end @@ -21,7 +21,7 @@ module SSLPair host = "127.0.0.1" ctx = OpenSSL::SSL::SSLContext.new() ctx.ciphers = "ADH" - s = TCPSocket.new(host, port) + s = create_tcp_client(host, port) ssl = OpenSSL::SSL::SSLSocket.new(s, ctx) ssl.connect ssl.sync_close = true @@ -35,7 +35,7 @@ module SSLPair ssls.close ns } - port = ssls.to_io.addr[1] + port = ssls.to_io.local_address.ip_port c = client(port) s = th.value if block_given? @@ -56,68 +56,31 @@ module SSLPair end end -module SSLPairLowlevelSocket - def server - host = "127.0.0.1" - port = 0 - ctx = OpenSSL::SSL::SSLContext.new() - ctx.ciphers = "ADH" - ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::TEST_KEY_DH1024 } - tcps = Addrinfo.tcp(host, port).listen - ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx) - return ssls - end +module OpenSSL::SSLPair + include OpenSSL::SSLPairM - def client(port) - host = "127.0.0.1" - ctx = OpenSSL::SSL::SSLContext.new() - ctx.ciphers = "ADH" - s = Addrinfo.tcp(host, port).connect - ssl = OpenSSL::SSL::SSLSocket.new(s, ctx) - ssl.connect - ssl.sync_close = true - ssl + def create_tcp_server(host, port) + TCPServer.new(host, port) end - def ssl_pair - ssls = server - ths = Thread.new { - ns = ssls.accept - ssls.close - ns - } - port = ssls.to_io.connect_address.ip_port - thc = Thread.new { - client(port) - } - s = ths.value - c = thc.value - if block_given? - begin - yield c, s - ensure - c.close unless c.closed? - s.close unless s.closed? - end - else - return c, s - end - ensure - if ths && ths.alive? - ths.kill - ths.join - end - if thc && thc.alive? - thc.kill - thc.join - end + def create_tcp_client(host, port) + TCPSocket.new(host, port) end end -class OpenSSL::TestEOF1 < Test::Unit::TestCase - include TestEOF - include SSLPair +module OpenSSL::SSLPairLowlevelSocket + include OpenSSL::SSLPairM + + def create_tcp_server(host, port) + Addrinfo.tcp(host, port).listen + end + def create_tcp_client(host, port) + Addrinfo.tcp(host, port).connect + end +end + +module OpenSSL::TestEOF1M def open_file(content) s1, s2 = ssl_pair Thread.new { s2 << content; s2.close } @@ -125,10 +88,7 @@ class OpenSSL::TestEOF1 < Test::Unit::TestCase end end -class OpenSSL::TestEOF2 < Test::Unit::TestCase - include TestEOF - include SSLPair - +module OpenSSL::TestEOF2M def open_file(content) s1, s2 = ssl_pair Thread.new { s1 << content; s1.close } @@ -136,9 +96,7 @@ class OpenSSL::TestEOF2 < Test::Unit::TestCase end end -class OpenSSL::TestPair < Test::Unit::TestCase - include SSLPair - +module OpenSSL::TestPairM def test_getc ssl_pair {|s1, s2| s1 << "a" @@ -364,18 +322,40 @@ class OpenSSL::TestPair < Test::Unit::TestCase sock1.close if sock1 && !sock1.closed? sock2.close if sock2 && !sock2.closed? end +end +class OpenSSL::TestEOF1 < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPair + include OpenSSL::TestEOF1M end -class OpenSSL::TestPairLowlevelSocket < Test::Unit::TestCase - include SSLPairLowlevelSocket +class OpenSSL::TestEOF1LowlevelSocket < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestEOF1M +end - def test_getc - ssl_pair {|s1, s2| - s1 << "a" - assert_equal(?a, s2.getc) - } - end +class OpenSSL::TestEOF2 < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPair + include OpenSSL::TestEOF2M +end + +class OpenSSL::TestEOF2LowlevelSocket < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestEOF2M +end + +class OpenSSL::TestPair < Test::Unit::TestCase + include OpenSSL::SSLPair + include OpenSSL::TestPairM +end + +class OpenSSL::TestPairLowlevelSocket < Test::Unit::TestCase + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestPairM end end -- cgit v1.2.3