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