ruby-changes:33790
From: akr <ko1@a...>
Date: Thu, 8 May 2014 08:21:18 +0900 (JST)
Subject: [ruby-changes:33790] akr:r45871 (trunk): refactored to test Socket and TCPSocket/TCPServer more consistently.
akr 2014-05-08 08:21:10 +0900 (Thu, 08 May 2014) New Revision: 45871 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45871 Log: refactored to test Socket and TCPSocket/TCPServer more consistently. Modified files: trunk/test/openssl/test_pair.rb Index: test/openssl/test_pair.rb =================================================================== --- test/openssl/test_pair.rb (revision 45870) +++ test/openssl/test_pair.rb (revision 45871) @@ -5,14 +5,14 @@ if defined?(OpenSSL) https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L5 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 https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L21 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 https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L35 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 https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L56 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::Te https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L88 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::Te https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L96 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::Te https://github.com/ruby/ruby/blob/trunk/test/openssl/test_pair.rb#L322 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/