<AWT Dev> [10][JDK-8027154] [TESTBUG] Test java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java fails

Krishna Addepalli krishna.addepalli at oracle.com
Tue Aug 1 09:13:42 UTC 2017


Hi Sergey,

 

Based on our conversation, could you provide your review comments for the fix?

 

Pasting the mail exchange below for reference:

 

 

The intent of the test is not modified by my changes. By having the second frame register a mouse move callback, it is made more explicit - when the mouse position should be queried, and what is the expected position it should contain. Also, since Frame2 has observed a mouse move, consequently, Frame1 should not report any mouse position.

 

 

-----Original Message-----

From: Sergey Bylokhov

Sent: Tuesday, August 1, 2017 2:13 AM

To: Krishna Addepalli <HYPERLINK "mailto:krishna.addepalli at oracle.com"krishna.addepalli at oracle.com>

Cc: Ambarish Rapte <HYPERLINK "mailto:ambarish.rapte at oracle.com"ambarish.rapte at oracle.com>; Ajit Ghaisas <HYPERLINK "mailto:ajit.ghaisas at oracle.com"ajit.ghaisas at oracle.com>; Prem Balakrishnan <HYPERLINK "mailto:prem.balakrishnan at oracle.com"prem.balakrishnan at oracle.com>; Praveen Srivastava <HYPERLINK "mailto:praveen.s.srivastava at oracle.com"praveen.s.srivastava at oracle.com>; Prasanta Sadhukhan (HYPERLINK "mailto:prasanta.sadhukhan at oracle.com"prasanta.sadhukhan at oracle.com) <HYPERLINK "mailto:prasanta.sadhukhan at oracle.com"prasanta.sadhukhan at oracle.com>

Subject: Re: awt-dev Digest, Vol 123, Issue 9

 

You can modify the test as you wish to make it stable, just make sure that initial use case is covered.

 

On 27.07.2017 4:29, Krishna Addepalli wrote:

> Hi Sergey,

> 

> I have tested the modified test that you provided on Windows and Linux. 

> It was working fine on Windows without the sleep, but on Linux, the 

> behavior is a bit random. If I removed the sleep, it is crashing 

> always, but occasionally it crashed even for a 2 second sleep time.

> 

> I think, it is better not to rely on sleep, and instead, let frame2 

> have a mouse move callback registered, and then perform the required 

> checks, which guarantees a deterministic behavior, and also holds the 

> spirit of the intended test.

> 

> Could you review the patch that I submitted and let me know?

> 

> Thanks,

> 

> Krishna

> 

> *From:* Krishna Addepalli

> *Sent:* Tuesday, July 25, 2017 8:41 PM

> *To:* Sergey Bylokhov <HYPERLINK "mailto:sergey.bylokhov at oracle.com"sergey.bylokhov at oracle.com>

> *Cc:* Ambarish Rapte <HYPERLINK "mailto:ambarish.rapte at oracle.com"ambarish.rapte at oracle.com>; Ajit Ghaisas 

> <HYPERLINK "mailto:ajit.ghaisas at oracle.com"ajit.ghaisas at oracle.com>; Prem Balakrishnan 

> <HYPERLINK "mailto:prem.balakrishnan at oracle.com"prem.balakrishnan at oracle.com>; Praveen Srivastava 

> <HYPERLINK "mailto:praveen.s.srivastava at oracle.com"praveen.s.srivastava at oracle.com>

> *Subject:* RE: awt-dev Digest, Vol 123, Issue 9

> 

> Hi Sergey,

> 

> Thanks for your clarifications. That explains the reasons for

> Util.waitForIdle() not working in earlier versions.

> 

> So to summarize, the intent of the test is to create a new frame 

> (“Popup

> Frame”) for the MouseMove callback, and then have the new frame report 

> the expected mouse position, while the underlying frame should report 

> that mouse position is null, since it is no longer the active frame.

> 

> I have one more question:

> 

> In your code, you are sleeping for 2 seconds, after making the frame2 

> visible. Is this necessary? I have seen that, once we set frame2 

> visible, the mouse position can be immediately queried without the 

> need to wait. Is it done to make sure that the test works on older builds?

> 

> Out of curiosity, I wanted to know if you could see the same 

> failure(“Exception in thread "AWT-EventQueue-2"

> java.lang.RuntimeException: Not implemented”)that was reported in the 

> original bug?

> 

> Thanks,

> 

> Krishna

> 

> *From:* Sergey Bylokhov

> *Sent:* Tuesday, July 25, 2017 7:04 AM

> *To:* Krishna Addepalli <krishna.addepalli at oracle.com 

> <mailto:krishna.addepalli at oracle.com>>

> *Cc:* Ambarish Rapte <ambarish.rapte at oracle.com 

> <mailto:ambarish.rapte at oracle.com>>; Ajit Ghaisas 

> <HYPERLINK "mailto:ajit.ghaisas at oracle.com%20%3cmailto:ajit.ghaisas at oracle.com"ajit.ghaisas at oracle.com <mailto:ajit.ghaisas at oracle.com>>; Prem 

> Balakrishnan <prem.balakrishnan at oracle.com 

> <mailto:prem.balakrishnan at oracle.com>>; Praveen Srivastava 

> <praveen.s.srivastava at oracle.com 

> <mailto:praveen.s.srivastava at oracle.com>>

> *Subject:* Re: awt-dev Digest, Vol 123, Issue 9

> 

> Hi, Krishna.

> Here is my observation.

> When 8012026 bug was fixed the robot.waitForIdle() does not work 

> properly, but the test uses Util.waitForIdle(). When the robot was 

> fixed the implementation of Util.waitForIdle() was reworked.

> So if you use the old jdk and a new utils+test you will need to add 

> some delays.

> Another issue is for coordinates. When this bug was fixed we do not 

> get a mouse move event for the first mouseMove(149,149). But this bug 

> was fixed on osx long time ago.

> 

> I have attached an updated version of the test which fails on b109 and 

> pass on 110. For the current version of jdk delays/sleeps are not 

> necessary since waitForIdle should work.

> The steps which are tested:

>   - Show frame1

>   - Move the mouse over frame1

>   - Show frame2 under the mouse

>   - Check the mouse position reported by frame2

>   - Check the mouse position reported by frame1

> 

> ----- HYPERLINK "mailto:krishna.addepalli at oracle.com"krishna.addepalli at oracle.com

> <mailto:krishna.addepalli at oracle.com>

> wrote:

>> 

> 

>> 

> 

>> 

> 

> Hi Sergey,

> 

> Any comments/concerns on the observations I sent?

> 

> Thanks,

> 

> Krishna

> 

>> 

> 

> *From:*Krishna Addepalli

>> *Sent:* Wednesday, July 19, 2017 3:40 PM

>> *To:* Sergey Bylokhov <sergey.bylokhov at oracle.com

> <mailto:sergey.bylokhov at oracle.com>>

>> *Cc:* Praveen Srivastava (HYPERLINK "mailto:praveen.s.srivastava at oracle.com"praveen.s.srivastava at oracle.com

> <mailto:praveen.s.srivastava at oracle.com>)

> <praveen.s.srivastava at oracle.com

> <mailto:praveen.s.srivastava at oracle.com>>; Prem Kumar Balakrishnan 

> (HYPERLINK "mailto:prem.balakrishnan at oracle.com"prem.balakrishnan at oracle.com <mailto:prem.balakrishnan at oracle.com>)

> <HYPERLINK "mailto:prem.balakrishnan at oracle.com%20%3cmailto:prem.balakrishnan at oracle.com"prem.balakrishnan at oracle.com <mailto:prem.balakrishnan at oracle.com>>;

> Ambarish Rajeshwar Rapte (HYPERLINK "mailto:ambarish.rapte at oracle.com"ambarish.rapte at oracle.com

> <mailto:ambarish.rapte at oracle.com>) <ambarish.rapte at oracle.com 

> <mailto:ambarish.rapte at oracle.com>>; Ajit Haribhau Ghaisas 

> (HYPERLINK "mailto:ajit.ghaisas at oracle.com"ajit.ghaisas at oracle.com <mailto:ajit.ghaisas at oracle.com>) 

> <HYPERLINK "mailto:ajit.ghaisas at oracle.com%20%3cmailto:ajit.ghaisas at oracle.com"ajit.ghaisas at oracle.com <mailto:ajit.ghaisas at oracle.com>>

>> *Subject:* RE: awt-dev Digest, Vol 123, Issue 9

> 

> Hi Sergey,

> 

> I have tried to reproduce the failure of the test in Mac, by 

> installing the jdk_1.8.0_b84 

> (http://jre.us.oracle.com/java/re/jdk/8/promoted/all/b84/bundles/macos

> x-x86_64

> ) that was mentioned in the parent bug (8012026).

> 

> Below are my observations:

> 

> *OS*

> 

>             

> 

> *Test Type*

> 

>             

> 

> *Result*

> 

>             

> 

> *Remarks*

> 

> Mac

> 

>             

> 

> Original Test

> 

>             

> 

> Failure (Mouse position should be null)

> 

>             

> 

> 1.It is not the expected failure though. It is supposed to fail with 

> "NotImpementedError".

> 

> 2.Also, looks like the "r.waitForIdle()" is not properly working, 

> which is why  the check for mouse position seems to be going through.

> 

> Mac

> 

>             

> 

> Modified Test

> 

> (Added a delay between the two mouse move events)

> 

>             

> 

> Failure (Wrong position reported. Should be [30,30] but was [29,29]

> 

>             

> 

> 1.This is because, the logic of the test seems wrong.

> 

> 2.Since a delay was added between mouse events, this is allowing the 

> events to be processed in sequential order.

> 

> Mac

> 

>             

> 

> Proposed Fix

> 

>             

> 

> Pass

> 

>             

> 

> Mac

> 

>             

> 

> Applet attached with Bug 8012026

> 

>             

> 

> Pass

> 

>             

> 

> There is no failure ("NotImplementedError") observed in this case as well.

> 

> Windows/Linux

> 

>             

> 

> Original Test

> 

>             

> 

> Failure (Wrong position reported. Should be [30,30] but was [29,29]

> 

>             

> 

> This is because, the logic of the test seems wrong.

> 

> Windows/Linus

> 

>             

> 

> Proposed Fix

> 

>             

> 

> Pass

> 

>             

> 

> Based on the above, I have some comments about the test:

> 

> 1.The test in current form, does not logically make sense, since 

> either the mouse position check should be [29,29], or frame2 should 

> register a mouse callback, in which case the check makes sense.

> 

> 2.The original failure mentioned in the bug is not reproducible.

> 

> 3.Since the original failure is reported with applet, should the test 

> also have to be based on applet?

> 

> 4.Since the original bug is reported for mac, is the test intended to 

> run on Linux/Windows?

> 

> 5.Robot.waitForIdle() does not seem to work properly on Mac.

> 

> Could you suggest the course of action from here?

> 

> Thanks,

> 

> Krishna

> 

> -----Original Message-----

> 

> From: HYPERLINK "mailto:awt-dev-request at openjdk.java.net"awt-dev-request at openjdk.java.net 

> <mailto:awt-dev-request at openjdk.java.net>

> [mailto:awt-dev-request at openjdk.java.net]

> 

> Sent: Tuesday, July 18, 2017 5:30 PM

> 

> To: HYPERLINK "mailto:awt-dev at openjdk.java.net"awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>

> 

> Subject: awt-dev Digest, Vol 123, Issue 9

> 

> Send awt-dev mailing list submissions to

> 

> HYPERLINK "mailto:awt-dev at openjdk.java.net"awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>

> 

> To subscribe or unsubscribe via the World Wide Web, visit

> 

> http://mail.openjdk.java.net/mailman/listinfo/awt-dev

> 

> or, via email, send a message with subject or body 'help' to

> 

> HYPERLINK "mailto:awt-dev-request at openjdk.java.net"awt-dev-request at openjdk.java.net

> <mailto:awt-dev-request at openjdk.java.net>

> 

> You can reach the person managing the list at

> 

> HYPERLINK "mailto:awt-dev-owner at openjdk.java.net"awt-dev-owner at openjdk.java.net <mailto:awt-dev-owner at openjdk.java.net>

> 

> When replying, please edit your Subject line so it is more specific 

> than

> "Re: Contents of awt-dev digest..."

> 

> Today's Topics:

> 

>     1. Re:  [10][JDK-8027154] [TESTBUG] Test

> 

>        

> java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java

> 

>        fails (Sergey Bylokhov)

> 

> ----------------------------------------------------------------------

> 

 

Thanks,

Krishna

 

From: Sergey Bylokhov 
Sent: Tuesday, July 18, 2017 6:11 AM
To: Krishna Addepalli <krishna.addepalli at oracle.com>
Cc: awt-dev at openjdk.java.net; Ajit Ghaisas <ajit.ghaisas at oracle.com>; Praveen Srivastava <praveen.s.srivastava at oracle.com>
Subject: Re: [10][JDK-8027154] [TESTBUG] Test java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java fails

 

Hi, Krishna.
Can you please confirm that the initial bug JDK-8012026 can be reproduced by the updated test?
The updated test should fail before JDK-8012026 was fixed, and works after.

----- HYPERLINK "mailto:krishna.addepalli at oracle.com"krishna.addepalli at oracle.com wrote: 
> 

Hi All, 

Please review the fix for test bug:

Bug : JDK-8027154  HYPERLINK "https://bugs.openjdk.java.net/browse/JDK-8027154"<https://bugs.openjdk.java.net/browse/JDK-8027154>

JDK 10 Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Epkbalakr/Krishna/8027154/webrev00/"http://cr.openjdk.java.net/~pkbalakr/Krishna/8027154/webrev00/

Summary:

The test intends to check the mouse move on Frame2, which is drawn in the MouseMove callback for Frame1. 
> 

However, the code wrongly asserts for the expected mouse position on Frame2, which was just created. 
> 

Also, Frame2 has no callback registered for MouseMove, which is leading to different behaviors on different platforms.

On Windows and Linux, the assertion is thrown for Mouse Position whereas on Mac, a NullPointerException is thrown.
> 

After moving the code into the callback for Frame2, the test passes on all the platforms.
> 

Thanks,

Krishna
> 


> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20170801/3e38934e/attachment-0001.html>


More information about the awt-dev mailing list