Bug #11394
closedError in test/rinda/test_rinda.rb when IPv6 address is only ::1 assigned to the loopback device
Description
システム上に存在するIPv6アドレスが、ループバックデバイスに割り当てられた ::1 だけの場合、test/rinda/test_rinda.rb で以下のエラーが発生します。
Linux (Debian wheezy)の場合 。
# ifconfig eth0 inet6 del fe80::XXXX:XXXX:XXXX:XXXX/64
% ruby test/runner.rb test/rinda/test_rinda.rb
Run options:
# Running tests:
[ 9/39] Rinda::TestRingServer#test_make_socket_ipv6_multicast = 0.00
1) Error:
Rinda::TestRingServer#test_make_socket_ipv6_multicast:
Errno::ENODEV: No such device - setsockopt(2)
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:161:in `setsockopt'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:161:in `make_socket'
/XXXXXXXX/test/rinda/test_rinda.rb:642:in `test_make_socket_ipv6_multicast'
[12/39] Rinda::TestRingServer#test_ring_server_ipv6_multicast = 0.00
2) Error:
Rinda::TestRingServer#test_ring_server_ipv6_multicast:
Errno::ENODEV: No such device - setsockopt(2)
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:161:in `setsockopt'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:161:in `make_socket'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:107:in `block in initialize'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:105:in `each'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:105:in `initialize'
/XXXXXXXX/test/rinda/test_rinda.rb:678:in `new'
/auto/user3/gen-info/ngoto/testruby/daily/src/github/ruby/test/rinda/test_rinda.rb:678:in `test_ring_server_ipv6_multicast'
Leaked file descriptor: Rinda::TestRingServer#test_ring_server_ipv6_multicast: 10 : #<Socket:fd 10>
Finished tests in 1.545205s, 25.2394 tests/s, 250.4522 assertions/s.
39 tests, 387 assertions, 0 failures, 2 errors, 2 skips
ruby -v: ruby 2.3.0dev (2015-07-16) [x86_64-linux]
Solaris 10 の場合。
$ ruby test/runner.rb test/rinda/test_rinda.rb
Run options:
# Running tests:
[ 3/39] Rinda::TestRingFinger#test_make_socket_ipv6_multicast = 0.00 s
1) Error:
Rinda::TestRingFinger#test_make_socket_ipv6_multicast:
Errno::ENETUNREACH: Network is unreachable - connect(2) for [ff02::1]:7647
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:430:in `connect'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:430:in `make_socket'
/XXXXXXXX/test/rinda/test_rinda.rb:773:in `test_make_socket_ipv6_multicast'
[ 4/39] Rinda::TestRingFinger#test_make_socket_ipv6_multicast_hops = 0.00 s
2) Error:
Rinda::TestRingFinger#test_make_socket_ipv6_multicast_hops:
Errno::ENETUNREACH: Network is unreachable - connect(2) for [ff02::1]:7647
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:430:in `connect'
/PREFIX/lib/ruby/2.3.0/rinda/ring.rb:430:in `make_socket'
/XXXXXXXX/test/rinda/test_rinda.rb:797:in `test_make_socket_ipv6_multicast_hops'
Leaked file descriptor: Rinda::TestRingServer#test_ring_server_ipv6_multicast: 11
Closed file descriptor: Rinda::TestRingServer#test_shutdown: 11
Finished tests in 2.053681s, 18.9903 tests/s, 188.4421 assertions/s.
39 tests, 387 assertions, 0 failures, 2 errors, 0 skips
ruby -v: ruby 2.3.0dev (2015-07-24) [sparc64-solaris2.10]
当該テストを、IPv6がloopbackだけの場合はskipするように変更したいと思います。
Updated by ngoto (Naohisa Goto) over 9 years ago
- Status changed from Open to Closed
Applied in changeset r51362.
-
test/rinda/test_rinda.rb (RingIPv6#prepare_ipv6): prevent to use
IPv6 loopback interface for
Rinda::TestRingFinger#test_make_socket_ipv6_multicast and
Rinda::TestRingFinger#test_make_socket_ipv6_multicast_hops.
The tests are skipped if there are no IPv6 devices other than the
loopback device. [Bug #11394] [ruby-dev:49199] -
test/rinda/test_rinda.rb (test_make_socket_ipv6_multicast): ditto
for Rinda::TestRingServer#test_make_socket_ipv6_multicast. -
test/rinda/test_rinda.rb (test_ring_server_ipv6_multicast): ditto
for Rinda::TestRingServer#test_ring_server_ipv6_multicast.