[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]