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

ruby-changes:65804

From: Yusuke <ko1@a...>
Date: Wed, 7 Apr 2021 16:43:54 +0900 (JST)
Subject: [ruby-changes:65804] fbbc37dc1d (master): test/drb/test_drb.rb: Specify the host of DRbServer

https://git.ruby-lang.org/ruby.git/commit/?id=fbbc37dc1d

From fbbc37dc1d5b329777e6d9716118db528ab70730 Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Wed, 7 Apr 2021 16:34:19 +0900
Subject: test/drb/test_drb.rb: Specify the host of DRbServer

to try fixing the following error.

http://rubyci.s3.amazonaws.com/opensuseleap/ruby-master/log/20210407T063004Z.log.html.gz
```
[  605/21105] DRbTests::TestDRbSSLAry#test_06_next/home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/drb.rb:1138:in `method_missing': undefined method `regist' for [1, 2, "III", 4, "five", 6]:Array (NoMethodError)
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/extserv.rb:21:in `block in initialize'
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/.ext/common/monitor.rb:202:in `synchronize'
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/.ext/common/monitor.rb:202:in `mon_synchronize'
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/extserv.rb:20:in `initialize'
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/test/drb/ut_array_drbssl.rb:35:in `new'
	from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/test/drb/ut_array_drbssl.rb:35:in `<main>'
 = 100.05 s
```

Here is my analysis:
The test of drb used both `druby://:0` and `druby://localhost:0` for
DRbServer. However, the former listens on IPv4, and the latter does on
IPv6, depending on environments. The port 0 is automatically assigned,
but sometimes the same port is used to both because they are different
protocols (IPv4 and IPv6). In this case, their URIs are resolved to the
completely same one (`druby://localhost:port`), which confuses the
method `DRb.here?` which determines the DRbObject is remote or local.

This changeset uses `druby://localhost:0` consistently.
---
 test/drb/test_drb.rb    | 4 ++--
 test/drb/test_drbssl.rb | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 1024618..1ee1b26 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -323,7 +323,7 @@ class TestDRbAnyToS < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L323
   end
 
   def test_any_to_s
-    server = DRb::DRbServer.new('druby://:0')
+    server = DRb::DRbServer.new('druby://localhost:0')
     server.singleton_class.send(:public, :any_to_s)
     assert_equal("foo:String", server.any_to_s("foo"))
     assert_match(/\A#<DRbTests::TestDRbAnyToS::BO:0x[0-9a-f]+>\z/, server.any_to_s(BO.new))
@@ -335,7 +335,7 @@ end https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L335
 
 class TestDRbTCP < Test::Unit::TestCase
   def test_immediate_close
-    server = DRb::DRbServer.new('druby://:0')
+    server = DRb::DRbServer.new('druby://localhost:0')
     host, port, = DRb::DRbTCPSocket.send(:parse_uri, server.uri)
     socket = TCPSocket.open host, port
     socket.shutdown
diff --git a/test/drb/test_drbssl.rb b/test/drb/test_drbssl.rb
index 1763b38..0254c7a 100644
--- a/test/drb/test_drbssl.rb
+++ b/test/drb/test_drbssl.rb
@@ -34,7 +34,7 @@ class DRbSSLService < DRbService https://github.com/ruby/ruby/blob/trunk/test/drb/test_drbssl.rb#L34
         [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
     end
 
-    @server = DRb::DRbServer.new('drbssl://:0', manager, config)
+    @server = DRb::DRbServer.new('drbssl://localhost:0', manager, config)
   end
 end
 
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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