From: GOTOU Yuuzou Date: 2005-11-27T21:02:13+09:00 Subject: [ruby-dev:27835] Re: 1.8.4 preview test failed (soap/ssl/test_ssl.rb) In message <1132945964.060494.4715.nullmailer@x31.priv.netlab.jp>, `Yukihiro Matsumoto ' wrote: > preview4を出そうと思ったのですがmake test-allで以下の失敗が > 出ます。 > 1) Error: > test_verification(SOAP::SSL::TestSSL): > OpenSSL::SSL::SSLError: sslv3 alert bad record mac (略) > ./soap/ssl/test_ssl.rb:76:in `test_verification' > > 私の環境は openssl 0.9.8a-4、http-access2 2.0.4-1です(バージョ > ンはいずれもDebianパッケージのもの)。 Debianのtestingを試してみました。 % /usr/bin/ruby test/soap/ssl/test_ssl.rb を実行すると0F0Eでしたが、libopenssl-rubyがlibssl.so.0.9.7を リンクしていたので、Ruby 1.8.3のパッケージをビルドしなおして libssl.so.0.9.8を使うと同じエラーが再現するようになりました。 ext/opensslとOpenSSL 0.9.8の組合せだと起こるようですが、環境 によっては再現しなかったりで、原因がまだわかりません。 あと、これまでhttp-access2をインストールしていなかったので気 が付きませんでしたが、NetBSDでtest/soap/ssl/test_ssl.rbで別 のエラーが起こるようです。サーバに毎回違うポートをバインドさ せると回避できるので、パッチを添付します。 > previewを出すと似たようなレポートが重なることが予想されるの > で、あらかじめこれがどの程度問題なのか確かめておきたいです。 具体的に目処が立っていないので、previewは予定通り出して頂い たほうがいいと思います。 -- ごとうゆうぞう Index: test/soap/ssl/sslsvr.rb =================================================================== RCS file: /var/cvs/src/ruby/test/soap/ssl/sslsvr.rb,v retrieving revision 1.1.2.3 diff -u -p -F^[^A-Za-z0-9_+-]*\(class\|module\|def\)[^A-Za-z0-9_+-] -r1.1.2.3 sslsvr.rb --- test/soap/ssl/sslsvr.rb 22 May 2005 13:20:24 -0000 1.1.2.3 +++ test/soap/ssl/sslsvr.rb 27 Nov 2005 11:49:06 -0000 @@ -20,7 +20,6 @@ end if $0 == __FILE__ - PORT = 17171 DIR = File.dirname(File.expand_path(__FILE__)) def cert(filename) @@ -37,7 +36,7 @@ def key(filename) $server = HelloWorldServer.new( :BindAddress => "0.0.0.0", - :Port => PORT, + :Port => 0, :AccessLog => [], :SSLEnable => true, :SSLCACertificateFile => File.join(DIR, 'ca.cert'), @@ -53,5 +52,6 @@ def key(filename) } STDOUT.sync = true puts $$ + puts $server.server.listeners[0].addr[1] t.join end Index: test/soap/ssl/test_ssl.rb =================================================================== RCS file: /var/cvs/src/ruby/test/soap/ssl/test_ssl.rb,v retrieving revision 1.1.2.5 diff -u -p -F^[^A-Za-z0-9_+-]*\(class\|module\|def\)[^A-Za-z0-9_+-] -r1.1.2.5 test_ssl.rb --- test/soap/ssl/test_ssl.rb 10 Oct 2005 04:22:05 -0000 1.1.2.5 +++ test/soap/ssl/test_ssl.rb 27 Nov 2005 11:49:06 -0000 @@ -11,8 +11,6 @@ module SOAP; module SSL class TestSSL < Test::Unit::TestCase - PORT = 17171 - DIR = File.dirname(File.expand_path(__FILE__)) require 'rbconfig' RUBY = File.join( @@ -21,7 +19,6 @@ class TestSSL < Test::Unit::TestCase ) def setup - @url = "https://localhost:#{PORT}/hello" @serverpid = @client = nil @verify_callback_called = false setup_server @@ -173,6 +170,8 @@ def setup_server svrcmd << File.join(DIR, "sslsvr.rb") svrout = IO.popen(svrcmd) @serverpid = Integer(svrout.gets.chomp) + @port = Integer(svrout.gets.chomp) + @url = "https://localhost:#{@port}/hello" end def setup_client @@ -183,7 +182,6 @@ def setup_client def teardown_server if @serverpid Process.kill('KILL', @serverpid) - Process.waitpid(@serverpid) end end