New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #2137 Socket.getifaddrs returns incorrect interface list... #2287

Merged
merged 4 commits into from Jan 12, 2015

Conversation

Projects
None yet
2 participants
@gfowley
Contributor

gfowley commented Dec 7, 2014

Fix #2137 Socket.getifaddrs returns incorrect interface list...

Socket.getifaddrs creates a single packet interface for each IP interface.
Ifaddr and Addrinfo methods behave more like MRI 2.2.0.
Added tests for Ifaddr and Addrinfo.
Need constant AF_PACKET (17) added to .h files - was unable to figure out where to change FFI platform specific files to affect build.
Need to generate packet interface for interfaces with no IP address (platform dependent?).

gfowley added some commits Dec 7, 2014

improve Socket.getifaddrs...
added tests for Ifaddr and Addrinfo
Socket.getifaddrs creates a packet interface for each IP interface
Ifaddr and Addrinfo methods behave more like MRI 2.2.0
Need constant AF_PACKET (17) added to .h files
Need to generate packet interface for interfaces with no IP address (platform dependent?)
@gfowley

This comment has been minimized.

Show comment
Hide comment
@gfowley

gfowley Dec 8, 2014

Contributor

Tests pass on my system (linux x86_64).
Travis CI reports java.lang.NullPointerException where test calls Socket.getifaddrs, but no stacktrace for Java. Is there anything I can specify at the test level to get a complete stacktrace ?

[exec] test_getifaddrs: E
[exec] ===============================================================================
[exec] Error: test_getifaddrs(SocketTest)
[exec] : SocketError: getifaddrs: java.lang.NullPointerException
[exec] /home/travis/build/jruby/jruby/test/jruby/test_socket.rb:76:in `test_getifaddrs'
[exec] 73:
[exec] 74: def test_getifaddrs
[exec] 75: begin
[exec] => 76: list = Socket.getifaddrs
[exec] 77: rescue NotImplementedError
[exec] 78: return
[exec] 79: end
[exec] ===============================================================================

In the meantime, commit 7be572e adds Addrinfo and Ifaddr tests to jruby.index, maybe those test results will shed some light.

Contributor

gfowley commented Dec 8, 2014

Tests pass on my system (linux x86_64).
Travis CI reports java.lang.NullPointerException where test calls Socket.getifaddrs, but no stacktrace for Java. Is there anything I can specify at the test level to get a complete stacktrace ?

[exec] test_getifaddrs: E
[exec] ===============================================================================
[exec] Error: test_getifaddrs(SocketTest)
[exec] : SocketError: getifaddrs: java.lang.NullPointerException
[exec] /home/travis/build/jruby/jruby/test/jruby/test_socket.rb:76:in `test_getifaddrs'
[exec] 73:
[exec] 74: def test_getifaddrs
[exec] 75: begin
[exec] => 76: list = Socket.getifaddrs
[exec] 77: rescue NotImplementedError
[exec] 78: return
[exec] 79: end
[exec] ===============================================================================

In the meantime, commit 7be572e adds Addrinfo and Ifaddr tests to jruby.index, maybe those test results will shed some light.

@gfowley

This comment has been minimized.

Show comment
Hide comment
@gfowley

gfowley Dec 8, 2014

Contributor

Nope, no luck there. Tests in Addrinfo and Ifaddr call Socket.getifaddrs to generate objects to test. It fails in the same way without a Java stacktrace.

All these tests pass locally for me under various combinations of network interface configurations. Is there any way to get at that trace to see what's different in Travis CI ?

Contributor

gfowley commented Dec 8, 2014

Nope, no luck there. Tests in Addrinfo and Ifaddr call Socket.getifaddrs to generate objects to test. It fails in the same way without a Java stacktrace.

All these tests pass locally for me under various combinations of network interface configurations. Is there any way to get at that trace to see what's different in Travis CI ?

@headius

This comment has been minimized.

Show comment
Hide comment
@headius

headius Dec 8, 2014

Member

@iqeo That NPE would be easy to investigate if we had access to travis. Thankfully, we can do that. If you email the Travis support email, they can set up an ssh-able instance for you for 24 hours. That should make it easy to reproduce.

Alternatively, you could set up a VM with the same releases of OS and JVM. Thanks for your help on this!

Member

headius commented Dec 8, 2014

@iqeo That NPE would be easy to investigate if we had access to travis. Thankfully, we can do that. If you email the Travis support email, they can set up an ssh-able instance for you for 24 hours. That should make it easy to reproduce.

Alternatively, you could set up a VM with the same releases of OS and JVM. Thanks for your help on this!

@headius headius added this to the JRuby 9.0.0.0 milestone Dec 8, 2014

gfowley added some commits Dec 31, 2014

Handle Travis-CI point-to-point interfaces
Deal with null from getHardwareInterface()
Tests permit multiple ipv4 loopbacks
Ifaddr.ifindex different in Travis-CI job vs debug VM
Removed trivial test for Ifaddr.ifindex range, passes in debug VM, fails in build job
@gfowley

This comment has been minimized.

Show comment
Hide comment
@gfowley

gfowley Dec 31, 2014

Contributor

All set now. Access to the Travis VM was key to seeing .getHardwareAddress() returned null for their point-to-point interfaces. And a quirky difference with Ifaddr.ifindex between the VM and build job was failing a test in the build job.

Contributor

gfowley commented Dec 31, 2014

All set now. Access to the Travis VM was key to seeing .getHardwareAddress() returned null for their point-to-point interfaces. And a quirky difference with Ifaddr.ifindex between the VM and build job was failing a test in the build job.

@headius

This comment has been minimized.

Show comment
Hide comment
@headius

headius Jan 12, 2015

Member

Great homework on this one, thank you. I'll merge locally to confirm it and then push if it's good.

Member

headius commented Jan 12, 2015

Great homework on this one, thank you. I'll merge locally to confirm it and then push if it's good.

@headius headius merged commit ff42c47 into jruby:master Jan 12, 2015

1 check passed

continuous-integration/travis-ci The Travis CI build passed
Details

@headius headius self-assigned this Jan 12, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment