On Sun, 25 Apr 2021 16:27:46 GMT, Pankaj Bansal <pban...@openjdk.org> wrote:

> The tests a javax/swing/JComboBox/8033069/bug8033069ScrollBar.java and 
> javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java fails 
> intermittently. The tests have a few problems which could cause this 
> behaviour and the are being fixed here.
> 
> 1. Test access the Swing components without EDT thread at couple of places.
> 2. Test is not calling waitForIdle or delay after Robot.mouseMove operations.
> 
> There is some additional cleanup done in the fix and moved the frame in 
> centre. The tests pass with multiple iterations on CI. Link in the JBS.

test/jdk/javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java line 64:

> 62: 
> 63:     private Point p;
> 64:     private Dimension d;

Both should be `volatile` as they're accessed from two different threads.

test/jdk/javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java line 120:

> 118:                 d = cb1.getSize();
> 119:             });
> 120:             robot.waitForIdle();

Is it needed here?
The block above does not modify the state of the UI.

test/jdk/javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java line 123:

> 121: 
> 122:             robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2);
> 123:             robot.waitForIdle();

I believe the delay between mouseMove and mousePress/Release is unneeded, does 
it really make a difference?

test/jdk/javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java line 175:

> 173:             if (frame != null) {
> 174:                 SwingUtilities.invokeAndWait(frame::dispose);
> 175:             }

The frame is still accessed from two different threads.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3678

Reply via email to