RFR: 8346581: JRadioButton/ButtonGroupFocusTest.java fails in CI on Linux
Alexey Ivanov
aivanov at openjdk.org
Thu Jan 9 19:12:35 UTC 2025
On Thu, 9 Jan 2025 18:57:28 GMT, Damon Nguyen <dnguyen at openjdk.org> wrote:
>> **Problem:**
>>
>> The `javax/swing/JRadioButton/ButtonGroupFocus/ButtonGroupFocusTest.java` test fails in CI on Linux.
>>
>> The focus is on _Button 2_ instead of _Button 4_.
>>
>> **Root cause:**
>>
>> The additional logging revealed, an expected `KEY_PRESS` event. The test uses `Robot` API to press the <kbd>Tab</kbd> key and release it. When the test fails, there are two `KEY_PRESS` events followed by a single `KEY_RELEASE` event. Because the <kbd>Tab</kbd> key is pressed twice, the focus moves twice: from _Button 2_ (the initial state) to _Button 4_ and then back to _Button 2_.
>>
>> **Fix:**
>>
>> Use `CountDownLatch`es to track whether a radio button received focus. Detect the case where two `KEY_PRESS` events moved focus to _Button 2_ and report the failure.
>>
>> Log focus movements and dispatched key events to facilitate failure analysis.
>>
>> Take a screenshot of the test frame in case of failure.
>>
>> These CI hosts seem to be quite slow, removing the delay added by `robot.setAutoDelay(100)` has reduced the number of unexpected `KEY_PRESS` events. This didn't affect Windows or macOS.
>
> test/jdk/javax/swing/JRadioButton/ButtonGroupFocus/ButtonGroupFocusTest.java line 121:
>
>> 119: + "\n\t" + evt.getNewValue());
>> 120: }
>> 121: });
>
> Suggestion:
>
> evt -> System.out.println(evt.getPropertyName()
> + "\n\t" + evt.getOldValue()
> + "\n\t" + evt.getNewValue()));
>
>
> Nit. Possible lambda replacement here.
My IDE didn't suggest replacing it a lambda. Does it improve readability of the code? Perhaps, it does… by reducing the number of lines.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22977#discussion_r1909314898
More information about the client-libs-dev
mailing list