RFR [XS]: 8229370: make jdk/jfr/event/runtime/TestNetworkUtilizationEvent.java more stable
David Holmes
david.holmes at oracle.com
Wed Aug 28 01:14:51 UTC 2019
On 28/08/2019 6:47 am, Mikhailo Seledtsov wrote:
> On 8/27/19, 1:15 AM, Baesken, Matthias wrote:
>> Hi David, thanks for the info about
>>
>> https://bugs.openjdk.java.net/browse/JDK-8228990
>>
>>
>> regarding your comment in the bug :
>>
>>> So it makes no sense. I finally found an example where the test
>>> passed and failed on the same machine.
>> I've seen this too .
>>
>> Looks like my change only increased the probability of incidental
>> network traffic happening on the real network interfaces .
>>
>> Should we exclude the test, in the current state it might indeed be
>> problematic .
>>
>> (otherwise we could make the test pass on Linux when just 1 network
>> interface is found, this might be a legitimate case isn’t it ?)
> Based on David's analysis in the "JDK-8228990: [TESTBUG] JFR
> TestNetworkUtilizationEvent.java expects 2+ Network interfaces on Linux
> but finding 1", my opinion is to remove the check for number of
> interfaces all together. Or just check that there is 1 interface.
The test expects there to be two interfaces always present: the loopback
interface and a real network interface. There could be additional ones.
The problem is that the test fails to generate traffic on the real
network interface due to the use of 10.0.0.0:12345. I have no idea why
someone thought sending a packet to that address would necessarily cause
the kind of traffic that would show up in the JFR event.
Are we really likely to be running this test on a machine without a real
network interface or the loopback interface? The former seems very
unlikely. The latter may be something configurable but it seems very
unlikely to me that anyone would configure a test system that way. So I
don't think the "expected number of interfaces" is the issue. The issue
is generating observable traffic on the real network interface - at
least that is what we see in our test failures (the output for the "lo"
interface is always present).
So it should be as simple as changing 10.0.0.0:12345 into something
guaranteed to work?
I think this needs to be looked at by the JFR folk and net-dev folk to
come up with a valid testing scenario.
Cheers,
David
> Misha
>>
>>
>> Best regards, Matthias
>>
>>
>>
>>> -----Original Message-----
>>> From: David Holmes<david.holmes at oracle.com>
>>> Sent: Dienstag, 27. August 2019 09:56
>>> To: Baesken, Matthias<matthias.baesken at sap.com>; 'hotspot-
>>> dev at openjdk.java.net'<hotspot-dev at openjdk.java.net>; hotspot-jfr-
>>> dev at openjdk.java.net
>>> Subject: Re: RFR [XS]: 8229370: make
>>> jdk/jfr/event/runtime/TestNetworkUtilizationEvent.java more stable
>>>
>>> Hi Matthias,
>>>
>>> On 27/08/2019 5:41 pm, Baesken, Matthias wrote:
>>>> Hello, any reviews for this small change ?
>>> I missed the initial request - sorry.
>>>
>>> Seems we have a double up of effort here as we also have JDK-8228990 for
>>> the exact same problem that we see on some of our test machines.
>>>
>>> Our analysis suggests that this test often passes by accident due to
>>> incidental activity on the real network interface when the logic
>>> intended to generate that activity (the packet sent to 10.0.0.0:12345)
>>> actually had no affect (unreachable address). If there is no incidental
>>> network activity then the real network interface is not seen and so the
>>> test fails.
>>>
>>> David
>>>
>>>> Thanks , Matthias
>>>>
>>>> From: Baesken, Matthias
>>>> Sent: Montag, 12. August 2019 14:33
>>>> To: 'hotspot-dev at openjdk.java.net'<hotspot-dev at openjdk.java.net>;
>>> 'hotspot-jfr-dev at openjdk.java.net'<hotspot-jfr-dev at openjdk.java.net>
>>>> Subject: RFR [XS]: 8229370: make
>>> jdk/jfr/event/runtime/TestNetworkUtilizationEvent.java more stable
>>>> Hello, please review this small test enhancement.
>>>>
>>>> We noticed that on some of our Linux machines (SLES12 based) the
>>> TestNetworkUtilizationEvent.java test reported just 1 interface
>>>> (the test TestNetworkUtilizationEvent.java expects more than 1 on
>>>> Linux).
>>>>
>>>> Looking into the HS code , os_perf_linux.cpp collects the interfaces +
>>> additional information about bytes read/written (by looking at
>>> /sys/class/net/eth<X>/statistics/<countername> )
>>>> and this info is given to JFR .
>>>>
>>>> However it seems to need (at least on some machines / setups) more
>>> packet send operations / potential retries to really get counter
>>> updates
>>> (and without updates in the counters, no interfaces are found).
>>>> So I adjusted the test accordingly.
>>>>
>>>>
>>>> Bug/webrev :
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8229370
>>>>
>>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8229370.0/
>>>>
>>>>
>>>> Best regards, Matthias
>>>>
More information about the hotspot-jfr-dev
mailing list