Bug #7311

DRb test suite fails when hostname cannot be reached

Added by Vit Ondruch over 2 years ago. Updated over 1 year ago.

[ruby-core:49101]
Status:Assigned
Priority:Normal
Assignee:Masatoshi Seki
ruby -v:ruby 2.0.0dev (2012-11-07 trunk 37538) [x86_64-linux] Backport:

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

0001-Enforce-localhost-for-DRb-tests.patch Magnifier - Fix the test suite by enforcing localhost (1.66 KB) Vit Ondruch, 11/08/2012 11:03 PM

0001-Fallback-to-localhost-if-hostname-is-not-associated-.patch Magnifier - Fallback to localhost if hosntame is not associated with IP (718 Bytes) Vit Ondruch, 11/08/2012 11:03 PM

Associated revisions

Revision 41916
Added by Zachary Scott over 1 year ago

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

Revision 41916
Added by Zachary Scott over 1 year ago

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

History

#1 Updated by Yusuke Endoh over 2 years ago

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

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

Yusuke Endoh mame@tsg.ne.jp

#2 Updated by Yusuke Endoh about 2 years ago

  • Target version changed from 2.0.0 to next minor

Just an issue of test.

Yusuke Endoh mame@tsg.ne.jp

#3 Updated by Vit Ondruch about 2 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.

#4 Updated by Vit Ondruch almost 2 years ago

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

#5 Updated by Zachary Scott over 1 year ago

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

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
  • test/drb/ut_array.rb: ditto
  • test/drb/ut_array_drbssl.rb: ditto

#6 Updated by Vit Ondruch over 1 year 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.

#7 Updated by Zachary Scott over 1 year 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

Also available in: Atom PDF