1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) fbbc37dc1d: [Backport #17802]

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(-)
This commit is contained in:
nagachika 2021-04-15 09:46:36 +09:00
parent f057a60792
commit d5a34e1b14
3 changed files with 4 additions and 4 deletions

View file

@ -323,7 +323,7 @@ class TestDRbAnyToS < Test::Unit::TestCase
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
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

View file

@ -34,7 +34,7 @@ class DRbSSLService < DRbService
[ ["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

View file

@ -12,7 +12,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 2
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
#define RUBY_PATCHLEVEL 65
#define RUBY_PATCHLEVEL 66
#define RUBY_RELEASE_YEAR 2021
#define RUBY_RELEASE_MONTH 4