RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

FELIX YANG
Hi there,

     please review a test patch for isolating a network configuration
issue, which led to TestInterfaces failing from time to time.

Bug:

     https://bugs.openjdk.java.net/browse/JDK-8134989

Webrev:

     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.00/

Thanks,

Felix

Reply | Threaded
Open this post in threaded view
|

Re: RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

roger riggs
Hi Felix,

Looks ok; though could be simpler to just print all the addresses of all
NIs.

findIntefacesWithDupAddress could use streams more effectively (if its
worth the time to rewrite).

The inetAddresses() method on NetworkInterface produces a stream of
InetAddress which could
be filtered by "ia" and use anyMatch:.

Maybe something like:

List<NetworkInterface> nis = NetworkInterface.networkInterfaces()
                     .filter(i -> !i.equals(ni))
                     .filter(i -> i.inetAddresses().anyMatch(n ->
n.equals(ia)))
                     .collect(Collectors.toList());

$.02, Roger

On 9/1/2017 3:47 AM, Felix Yang wrote:

> Hi there,
>
>     please review a test patch for isolating a network configuration
> issue, which led to TestInterfaces failing from time to time.
>
> Bug:
>
>     https://bugs.openjdk.java.net/browse/JDK-8134989
>
> Webrev:
>
>     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.00/
>
> Thanks,
>
> Felix
>

Reply | Threaded
Open this post in threaded view
|

Re: RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

Mark Sheppard
Hi
   it's  worth noting that there is diagnostic output for each of the
test scenarios, and that for a failure scenario
the details of the network interface associated with the failure is
displayed.

a typical failure scenario for this test is where a host has multiple
network interfaces configured with an IPv4 address
and an unassigned IPv6 address. The unassigned IPv6 address causes
problems in the MulticastSocket::getInterface call flow
which in turn uses NetworkInterface::getByInetAddress

this has been rectified in JDK10, afaik, by
https://bugs.openjdk.java.net/browse/JDK-8179559

also, for the above configuration scenario, i.e. multiple network
interfaces configured with unassigned IPv6 address, the
findInterfacewithDupAddress may not show duplicate addresses as the
scope id will be different.
Would the ifconfig command allow two different network interfaces to be
configured with the same IP address?
Not sure, but would expect not. Also would expect (IPv6) the scope id
and index to be different.

NetworkConfiguration.printSystemConfiguration() for a complete
diagnostic is a possible alternative.

regards
Mark

On 01/09/2017 14:41, Roger Riggs wrote:

> Hi Felix,
>
> Looks ok; though could be simpler to just print all the addresses of
> all NIs.
>
> findIntefacesWithDupAddress could use streams more effectively (if its
> worth the time to rewrite).
>
> The inetAddresses() method on NetworkInterface produces a stream of
> InetAddress which could
> be filtered by "ia" and use anyMatch:.
>
> Maybe something like:
>
> List<NetworkInterface> nis = NetworkInterface.networkInterfaces()
>                     .filter(i -> !i.equals(ni))
>                     .filter(i -> i.inetAddresses().anyMatch(n ->
> n.equals(ia)))
>                     .collect(Collectors.toList());
>
> $.02, Roger
>
> On 9/1/2017 3:47 AM, Felix Yang wrote:
>> Hi there,
>>
>>     please review a test patch for isolating a network configuration
>> issue, which led to TestInterfaces failing from time to time.
>>
>> Bug:
>>
>>     https://bugs.openjdk.java.net/browse/JDK-8134989
>>
>> Webrev:
>>
>>     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.00/
>>
>> Thanks,
>>
>> Felix
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

FELIX YANG
Hi Mark and Roger,

     thanks for the comments. Adjusted the test to just simply print
information for all network interfaces on failing.

Webrev:

      http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.01/

Thanks,
Felix
On 2017/9/1 22:44, Mark Sheppard wrote:

> Hi
>   it's  worth noting that there is diagnostic output for each of the
> test scenarios, and that for a failure scenario
> the details of the network interface associated with the failure is
> displayed.
>
> a typical failure scenario for this test is where a host has multiple
> network interfaces configured with an IPv4 address
> and an unassigned IPv6 address. The unassigned IPv6 address causes
> problems in the MulticastSocket::getInterface call flow
> which in turn uses NetworkInterface::getByInetAddress
>
> this has been rectified in JDK10, afaik, by
> https://bugs.openjdk.java.net/browse/JDK-8179559
>
> also, for the above configuration scenario, i.e. multiple network
> interfaces configured with unassigned IPv6 address, the
> findInterfacewithDupAddress may not show duplicate addresses as the
> scope id will be different.
> Would the ifconfig command allow two different network interfaces to
> be configured with the same IP address?
> Not sure, but would expect not. Also would expect (IPv6) the scope id
> and index to be different.
>
> NetworkConfiguration.printSystemConfiguration() for a complete
> diagnostic is a possible alternative.
>
> regards
> Mark
>
> On 01/09/2017 14:41, Roger Riggs wrote:
>> Hi Felix,
>>
>> Looks ok; though could be simpler to just print all the addresses of
>> all NIs.
>>
>> findIntefacesWithDupAddress could use streams more effectively (if
>> its worth the time to rewrite).
>>
>> The inetAddresses() method on NetworkInterface produces a stream of
>> InetAddress which could
>> be filtered by "ia" and use anyMatch:.
>>
>> Maybe something like:
>>
>> List<NetworkInterface> nis = NetworkInterface.networkInterfaces()
>>                     .filter(i -> !i.equals(ni))
>>                     .filter(i -> i.inetAddresses().anyMatch(n ->
>> n.equals(ia)))
>>                     .collect(Collectors.toList());
>>
>> $.02, Roger
>>
>> On 9/1/2017 3:47 AM, Felix Yang wrote:
>>> Hi there,
>>>
>>>     please review a test patch for isolating a network configuration
>>> issue, which led to TestInterfaces failing from time to time.
>>>
>>> Bug:
>>>
>>>     https://bugs.openjdk.java.net/browse/JDK-8134989
>>>
>>> Webrev:
>>>
>>>     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.00/
>>>
>>> Thanks,
>>>
>>> Felix
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

Chris Hegarty

On 4 Sep 2017, at 06:29, Felix Yang <[hidden email]> wrote:

Hi Mark and Roger,

    thanks for the comments. Adjusted the test to just simply print information for all network interfaces on failing.

Webrev:

     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.01/

This looks good.

You will need to add the following build tags ( for NetworkConfiguration )

* @build jdk.test.lib.NetworkConfiguration
*        jdk.test.lib.Platform

-Chris.

Reply | Threaded
Open this post in threaded view
|

Re: RFR 8134989/10, java/net/MulticastSocket/TestInterfaces.java failed due to unexpected IP address

FELIX YANG

Hi Chris,

  pushed with build tags.

Thanks,
Felix
On 2017/9/4 17:42, Chris Hegarty wrote:

On 4 Sep 2017, at 06:29, Felix Yang <[hidden email]> wrote:

Hi Mark and Roger,

    thanks for the comments. Adjusted the test to just simply print information for all network interfaces on failing.

Webrev:

     http://cr.openjdk.java.net/~xiaofeya/8134989/webrev.01/

This looks good.

You will need to add the following build tags ( for NetworkConfiguration )

* @build jdk.test.lib.NetworkConfiguration
*        jdk.test.lib.Platform

-Chris.