Issue #7311 has been updated by vo.x (Vit Ondruch).

Status changed from Closed to Open
% Done changed from 100 to 50

Thanks for applying. However, there is also 0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch attached, which does not look to be applied. Could you please review? Thanks.
----------------------------------------
Bug #7311: DRb test suite fails when hostname cannot be reached
https://bugs.ruby-lang.org/issues/7311#change-40441

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee: seki (Masatoshi Seki)
Category: 
Target version: next minor
ruby -v: ruby 2.0.0dev (2012-11-07 trunk 37538) [x86_64-linux]
Backport: 


=begin
I have set following hostname:

 $ hostname
 dhcp-25-70

However, it cannot be reached:

 $ ping `hostname`
 PING dhcp-25-70 (10.34.25.70) 56(84) bytes of data.
 From dhcp-25-1 (10.34.25.1) icmp_seq=1 Destination Host Unreachable
 From dhcp-25-1 (10.34.25.1) icmp_seq=2 Destination Host Unreachable
 From dhcp-25-1 (10.34.25.1) icmp_seq=3 Destination Host Unreachable
 From dhcp-25-1 (10.34.25.1) icmp_seq=4 Destination Host Unreachable

This causes that the DRb test suite fails:

 TestDRbAry#test_01 = 3.16 s = E
 TestDRbAry#test_02_collect = 3.01 s = E
 TestDRbAry#test_03_redo = 3.01 s = E
 TestDRbAry#test_05_break = 3.01 s = E
 TestDRbAry#test_06_next = 3.01 s = E
 TestDRbAry#test_07_break_18 = 3.01 s = E
 TestDRbCore#test_00_DRbObject = 0.15 s = .
 TestDRbCore#test_01 = 2.85 s = E
 TestDRbCore#test_01_02_loop = 3.00 s = E
 TestDRbCore#test_02_unknown = 3.01 s = F
 TestDRbCore#test_03 = 0.16 s = .
 TestDRbCore#test_04 = 0.16 s = .
 TestDRbCore#test_05_eq = 0.15 s = .
 TestDRbCore#test_06_timeout = 0.36 s = .
 TestDRbCore#test_07_public_private_protected_missing = 0.16 s = .
 TestDRbCore#test_08_here = 0.16 s = .
 TestDRbCore#test_09_option = 0.16 s = .
 TestDRbCore#test_10_yield = 1.70 s = E
 TestDRbCore#test_10_yield_undumped = 3.17 s = E
 TestDRbCore#test_11_remote_no_method_error = 0.16 s = .
 TestDRbLarge#test_01_large_ary = 0.05 s = .
 TestDRbLarge#test_02_large_ary = 0.06 s = .
 TestDRbLarge#test_03_large_ary = 2.63 s = E
 TestDRbLarge#test_04_many_arg = 0.05 s = .
 TestDRbLarge#test_05_too_large_ary = 0.07 s = .
 TestDRbMServer#test_01 = 2.88 s = E
 TestDRbRuby18Yield#test_01_one = 0.00 s = .
 TestDRbRuby18Yield#test_02_two = 0.00 s = .
 TestDRbRuby18Yield#test_03_many = 0.00 s = .
 TestDRbRuby18Yield#test_04_many_to_one = 0.00 s = .
 TestDRbRuby18Yield#test_05_array_subclass = 0.00 s = .
 TestDRbRuby18Yield#test_06_taint = 0.00 s = .
 TestDRbRubyYield#test_01_one = 0.00 s = .
 TestDRbRubyYield#test_02_two = 0.00 s = .
 TestDRbRubyYield#test_03_many = 0.00 s = .
 TestDRbRubyYield#test_04_many_to_one = 0.00 s = .
 TestDRbRubyYield#test_05_array_subclass = 0.00 s = .
 TestDRbRubyYield#test_06_taint = 0.00 s = .
 TestDRbSSLAry#test_01 = 3.09 s = E
 TestDRbSSLAry#test_02_collect = 3.01 s = E
 TestDRbSSLAry#test_03_redo = 3.01 s = E
 TestDRbSSLAry#test_05_break = 3.01 s = E
 TestDRbSSLAry#test_06_next = 3.01 s = E
 TestDRbSSLAry#test_07_break_18 = 3.01 s = E
 TestDRbSSLCore#test_00_DRbObject = 0.20 s = .
 TestDRbSSLCore#test_01 = 2.82 s = E
 TestDRbSSLCore#test_01_02_loop = 0.22 s = .
 TestDRbSSLCore#test_02_unknown = 0.20 s = .
 TestDRbSSLCore#test_03 = 0.24 s = .
 TestDRbSSLCore#test_04 = 0.21 s = .
 TestDRbSSLCore#test_05_eq = 0.23 s = .
 TestDRbSSLCore#test_06_timeout = 0.44 s = .
 TestDRbSSLCore#test_07_public_private_protected_missing = 0.29 s = .
 TestDRbSSLCore#test_08_here = 0.22 s = .
 TestDRbSSLCore#test_09_option = 0.21 s = .
 TestDRbSSLCore#test_10_yield = 0.75 s = E
 TestDRbSSLCore#test_10_yield_undumped = 3.22 s = E
 TestDRbSSLCore#test_11_remote_no_method_error = 0.24 s = .
 TestDRbSafe1#test_01 = 0.15 s = .
 TestDRbSafe1#test_02_collect = 2.60 s = E
 TestDRbSafe1#test_03_redo = 3.01 s = E
 TestDRbSafe1#test_05_break = 3.00 s = E
 TestDRbSafe1#test_06_next = 3.01 s = E
 TestDRbSafe1#test_07_break_18 = 3.01 s = E
 TestDRbUNIXAry#test_01 = 0.17 s = .
 TestDRbUNIXAry#test_02_collect = 2.84 s = E
 TestDRbUNIXAry#test_03_redo = 3.01 s = E
 TestDRbUNIXAry#test_05_break = 3.01 s = E
 TestDRbUNIXAry#test_06_next = 3.01 s = E
 TestDRbUNIXAry#test_07_break_18 = 3.01 s = E
 TestDRbUNIXCore#test_00_DRbObject = 0.16 s = .
 TestDRbUNIXCore#test_01 = 2.84 s = E
 TestDRbUNIXCore#test_01_02_loop = 0.17 s = .
 TestDRbUNIXCore#test_02_unknown = 0.16 s = .
 TestDRbUNIXCore#test_03 = 0.17 s = .
 TestDRbUNIXCore#test_04 = 0.16 s = .
 TestDRbUNIXCore#test_05_eq = 0.16 s = .
 TestDRbUNIXCore#test_06_timeout = 0.37 s = .
 TestDRbUNIXCore#test_07_public_private_protected_missing = 0.17 s = .
 TestDRbUNIXCore#test_08_here = 0.17 s = .
 TestDRbUNIXCore#test_09_option = 0.17 s = .
 TestDRbUNIXCore#test_10_yield = 1.29 s = E
 TestDRbUNIXCore#test_10_yield_undumped = 3.17 s = E
 TestDRbUNIXCore#test_11_remote_no_method_error = 0.17 s = .
 TestDRbYield#test_01_one = 2.73 s = E
 TestDRbYield#test_02_two = 3.01 s = E
 TestDRbYield#test_03_many = 3.01 s = E
 TestDRbYield#test_04_many_to_one = 3.01 s = E
 TestDRbYield#test_05_array_subclass = 3.01 s = E
 TestDRbYield#test_06_taint = 3.01 s = E

So there are two possible ways how to fix this issue.

(1) Enforce usage of localhost in test suite (0001-Enforce-localhost-for-DRb-tests.patch). Unfortunately it appears it does not solve my issues completely under some (not so clear) circumstances.
(2) Detect if hostname is associated with some IP??address of my computer, otherwise fallback to localhost (0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch). This resolves my issue completely.


BTW this test error later causes deadlock in TestProcess test suite [1], which is nasty :/



[1] https://github.com/ruby/ruby/blob/trunk/test/ruby/test_process.rb#L12
=end



-- 
http://bugs.ruby-lang.org/