Project

General

Profile

Actions

Bug #7311

closed

DRb test suite fails when hostname cannot be reached

Added by vo.x (Vit Ondruch) over 11 years ago. Updated over 4 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-11-07 trunk 37538) [x86_64-linux]
Backport:
[ruby-core:49101]

Description

=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


Files

0001-Enforce-localhost-for-DRb-tests.patch (1.66 KB) 0001-Enforce-localhost-for-DRb-tests.patch Fix the test suite by enforcing localhost vo.x (Vit Ondruch), 11/08/2012 11:03 PM
0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch (718 Bytes) 0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch Fallback to localhost if hosntame is not associated with IP vo.x (Vit Ondruch), 11/08/2012 11:03 PM

Updated by mame (Yusuke Endoh) over 11 years ago

  • Status changed from Open to Assigned
  • Assignee set to seki (Masatoshi Seki)
  • Target version set to 2.0.0

Seki-san, Urabe-san, Naruse-san, what do you think?

--
Yusuke Endoh

Updated by mame (Yusuke Endoh) about 11 years ago

  • Target version changed from 2.0.0 to 2.6

Just an issue of test.

--
Yusuke Endoh

Updated by vo.x (Vit Ondruch) about 11 years ago

It is not just test suite issue. See 0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch

Although it is pretty minor issue, due to other bugs in Gnome 3, it forces me to reboot quite often :/ But anyway, it is not blocker.

Actions #4

Updated by vo.x (Vit Ondruch) almost 11 years ago

Could somebody please review and apply the patches? They are just a few lines of code. Thanks

Actions #5

Updated by zzak (zzak _) almost 11 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r41916.
Vit, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • test/drb/ut_eq.rb: Use localhost for drb tests [Bug #7311]
    Patch by Vit Ondruch [ruby-core:49101]
  • test/drb/ut_array.rb: ditto
  • test/drb/ut_array_drbssl.rb: ditto

Updated by vo.x (Vit Ondruch) almost 11 years ago

  • 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.

Updated by zzak (zzak _) almost 11 years ago

  • Status changed from Open to Assigned

I don't like the patch, maybe seki-san can review it.

seki: please check 0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch

Actions #8

Updated by naruse (Yui NARUSE) over 6 years ago

  • Target version deleted (2.6)

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Status changed from Assigned to Closed

I also think the 0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch is a bad approach. We should not force localhost if the hostname given is not associated with an IP address. That sounds like a issue that should be reported to the user via an exception.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0