Thank you, Chris, Severin, and Alex, for reviewing this change!

Best regards,
Daniil

On 7/18/19, 10:44 AM, "Alex Menkov" <alexey.men...@oracle.com> wrote:

    +1
    
    --alex
    
    On 07/18/2019 08:27, Chris Plummer wrote:
    > Hi Daniil,
    > 
    > Looks good.
    > 
    > Chris
    > 
    > On 7/17/19 6:26 PM, Daniil Titov wrote:
    >> Hi Chris,
    >>
    >> Yes, I added output.reportDiagnosticSummary() in webrev-01, but 
    >> removed it
    >> In webrev-02, and later restored it in webrev-03.
    >>
    >> When the test runs of retries output.getExitValue() is set to 1 
    >> (COMMUNICATION_ERROR_EXIT_VAL)
    >>   (the "exitValue =1 " in the previous email).
    >>
    >> Please review a new version of the fix that has an explicit error 
    >> message printed
    >> if the test runs out of retries (line 168).
    >>
    >> Webrev: http://cr.openjdk.java.net/~dtitov/8221303/webrev.04/
    >> Bug: https://bugs.openjdk.java.net/browse/JDK-8221303
    >>
    >> Thanks!
    >> --Daniil
    >>
    >> On 7/17/19, 5:33 PM, "Chris Plummer" <chris.plum...@oracle.com> wrote:
    >>
    >>      Hi Daniil,
    >>      I'm confused now. I mentioned output.reportDiagnosticSummary() 
    >> because I
    >>      thought I saw it in your webrev-02. Now I don't. Maybe I had glanced
    >>      back at webrev-01 and saw it there. One issue with exceptions in the
    >>      output that are not considered errors is that if later there is an
    >>      error, mdash wills show the exception as one of (possible multiple)
    >>      reasons for the failure, so it's good to avoid if possible. Looks 
    >> like
    >>      what you have now is ok.
    >>      I have a question about what happens if you run out of retries. 
    >> What is
    >>      output.getExitValue() set to? Also, I think you should print an an
    >>      explicit error message indicating you've run out of retries.
    >>      thanks,
    >>      Chris
    >>      On 7/17/19 4:36 PM, Daniil Titov wrote:
    >>      > Hi Chris,
    >>      >
    >>      > output.reportDiagnosticSummary() prints the output from the 
    >> process (both stdout and stderr) and the exit value to the test's stderr.
    >>      > In case if the port is already in use it prints the following:
    >>      >
    >>      > stdout: [];
    >>      >   stderr: [Error: JMX connector server communication error: 
    >> service:jmx:rmi://127.0.0.1:9101
    >>      > jdk.internal.agent.AgentConfigurationError: 
    >> java.rmi.server.ExportException: Port already in use: 9101; nested 
    >> exception is:
    >>      >     java.net.BindException: Address already in use
    >>      >     at 
    >> 
jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:820)
 
    >>
    >>      >     at 
    >> 
jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:479)
 
    >>
    >>      >     at 
    >> jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)
    >>      >     at 
    >> jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
    >>      > Caused by: java.rmi.server.ExportException: Port already in 
    >> use: 9101; nested exception is:
    >>      > < I skipped the rest>
    >>      > ]
    >>      >   exitValue = 1
    >>      >
    >>      > It makes sense to have it called if the test fails, otherwise 
    >> this information would be missed in the test output.
    >>      > Please review the new version of the fix that has the call to 
    >> output.reportDiagnosticSummary() restored.
    >>      >
    >>      > Thanks!
    >>      >
    >>      > Webrev: http://cr.openjdk.java.net/~dtitov/8221303/webrev.03/
    >>      > Bug: https://bugs.openjdk.java.net/browse/JDK-8221303
    >>      >
    >>      > -Daniil
    >>      >
    >>      > On 7/17/19, 3:58 PM, "Chris Plummer" 
    >> <chris.plum...@oracle.com> wrote:
    >>      >
    >>      >      What does output.reportDiagnosticSummary() print out then 
    >> the port is
    >>      >      already in use, and have you made this happen with your 
    >> fixes in place?
    >>      >
    >>      >      Chris
    >>      >
    >>      >      On 7/17/19 3:20 PM, Daniil Titov wrote:
    >>      >      > Hi Chris and Alex,
    >>      >      >
    >>      >      > Please review a new version of the fix that moves the 
    >> diagnostic output for the test failure to run()
    >>      >      > method after the number of retry attempts is exceeded. 
    >> It also includes other corrections that
    >>      >      > you suggested.
    >>      >      >
    >>      >      > Thanks!
    >>      >      >
    >>      >      > Webrev: 
    >> http://cr.openjdk.java.net/~dtitov/8221303/webrev.02/
    >>      >      > Bug: https://bugs.openjdk.java.net/browse/JDK-8221303
    >>      >      >
    >>      >      > --Best regards,
    >>      >      > Daniil
    >>      >      >
    >>      >      >
    >>      >      > On 7/17/19, 1:47 PM, "Chris Plummer" 
    >> <chris.plum...@oracle.com> wrote:
    >>      >      >
    >>      >      >      Hi Daniil,
    >>      >      >
    >>      >      >      I think you can remove "Ok" from the following 
    >> message:
    >>      >      >
    >>      >      >        237 System.out.println("DEBUG: OK. Spawned java 
    >> process terminated
    >>      >      >      with expected exit code of "
    >>      >      >        238                         + 
    >> STOP_PROCESS_EXIT_VAL);
    >>      >      >
    >>      >      >      It's somewhat misleading since the test can still 
    >> fail. I think the
    >>      >      >      following is also misleading:
    >>      >      >
    >>      >      >        249             if (testFailed) {
    >>      >      >        250                 
    >> output.reportDiagnosticSummary();
    >>      >      >        251                 if 
    >> (output.getStderr().contains("Port already in
    >>      >      >      use")) {
    >>      >      >        252                     // Need to retry
    >>      >      >        253                     return true;
    >>      >      >        254                 }
    >>      >      >        255             }
    >>      >      >
    >>      >      >      The test can still pass after this happens, right? 
    >> And I think there are
    >>      >      >      other "Test FAILURE" error message that can appear 
    >> just before this.
    >>      >      >      Perhaps the code above should add a println that 
    >> indicates that there
    >>      >      >      will be a retry attempt since the failure was due 
    >> to the port being in use.
    >>      >      >
    >>      >      >      Otherwise looks good.
    >>      >      >
    >>      >      >      thanks,
    >>      >      >
    >>      >      >      Chris
    >>      >      >
    >>      >      >      On 7/17/19 1:30 PM, Alex Menkov wrote:
    >>      >      >      > Hi Daniil,
    >>      >      >      >
    >>      >      >      > The fix looks good in general.
    >>      >      >      > Couple cosmetic notes (no new webrev required):
    >>      >      >      >
    >>      >      >      >  162                 needRetry = runTest();
    >>      >      >      >  163             }
    >>      >      >      >  164             while (needRetry && (attempts++ 
    >> < MAX_RETRY_ATTEMTS));
    >>      >      >      > Please move "while" to the prev line:
    >>      >      >      >  163             } while (needRetry && 
    >> (attempts++ < MAX_RETRY_ATTEMTS));
    >>      >      >      >
    >>      >      >      >
    >>      >      >      >  242                     System.out.println("Test 
    >> FAILURE on" + name +
    >>      >      >      > " reason: The expected line \"" + READY_MSG
    >>      >      >      >  243                             + "\" is not 
    >> present in the process
    >>      >      >      > output");
    >>      >      >      > Please add space: "Test FAILURE on " + name
    >>      >      >      >
    >>      >      >      > --alex
    >>      >      >      >
    >>      >      >      > On 07/17/2019 12:46, Daniil Titov wrote:
    >>      >      >      >> Hi Chris,
    >>      >      >      >>
    >>      >      >      >>>     It's a little unclear to me why you moved 
    >> from ProcessThread to
    >>      >      >      >>>    TestProcessThread + Process. An explanation 
    >> of that would make it
    >>      >      >      >>> easier
    >>      >      >      >>>    to understand many of the changes.
    >>      >      >      >>
    >>      >      >      >> There are two reasons for that:
    >>      >      >      >> 1)  For every network interface the test starts 
    >> a separate thread
    >>      >      >      >> that runs the test for this interface. We want 
    >> that if the test fails
    >>      >      >      >>      due to the bind error the thread not to 
    >> exit but try to repeat
    >>      >      >      >> the test several times. 
    >> jdk.test.lib.thread.ProcessThread doesn't
    >>      >      >      >> allow this.
    >>      >      >      >> 2) To filter out the cases when the test fails 
    >> due to the bind error
    >>      >      >      >> we need to parse the process output. 
    >> jdk.test.lib.thread.ProcessThread
    >>      >      >      >>    registers its own pumps for stdin and sdtout  
    >> (by calling
    >>      >      >      >> ProcessTools.startProcess()) that consume all 
    >> output of the process
    >>      >      >      >> and prevent
    >>      >      >      >>    the output analyzer from collecting this output.
    >>      >      >      >>   Thanks!
    >>      >      >      >> --Daniil
    >>      >      >      >>
    >>      >      >      >> On 7/17/19, 12:11 PM, "Chris Plummer" 
    >> <chris.plum...@oracle.com> wrote:
    >>      >      >      >>
    >>      >      >      >>      Hi Daniil,
    >>      >      >      >>           It's a little unclear to me why you 
    >> moved from
    >>      >      >      >> ProcessThread to
    >>      >      >      >>      TestProcessThread + Process. An explanation 
    >> of that would make
    >>      >      >      >> it easier
    >>      >      >      >>      to understand many of the changes.
    >>      >      >      >>           thanks,
    >>      >      >      >>           Chris
    >>      >      >      >>           On 7/11/19 10:16 AM, Daniil Titov wrote:
    >>      >      >      >>      > Please review the change that fixes an 
    >> intermittent failure of
    >>      >      >      >> 
    >> sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java
    >>      >      >      >>      > test due to ports collision. The tests 
    >> finds all network
    >>      >      >      >> interfaces and for every interface starts a 
    >> separate process that tests
    >>      >      >      >>      > the connection to JMX agent server for a 
    >> specific
    >>      >      >      >> ports/interface combination.
    >>      >      >      >>      >
    >>      >      >      >>      > The test was changed to retry in case of 
    >> the failure. If the
    >>      >      >      >> subprocess fails to bind and the number
    >>      >      >      >>      > of retry attempts doesn't exceed the 
    >> limit a new pair of
    >>      >      >      >> random ports is selected and the test is run again.
    >>      >      >      >>      >
    >>      >      >      >>      > Webrev: 
    >> http://cr.openjdk.java.net/~dtitov/8221303/webrev.01/
    >>      >      >      >>      > Bug: 
    >> https://bugs.openjdk.java.net/browse/JDK-8221303
    >>      >      >      >>      >
    >>      >      >      >>      > Thanks!
    >>      >      >      >>      > --Daniil
    >>      >      >      >>      >
    >>      >      >      >>      >
    >>      >      >      >>
    >>      >      >      >>
    >>      >      >
    >>      >      >
    >>      >      >
    >>      >      >
    >>      >
    >>      >
    >>      >
    >>      >
    >>      >
    >>
    >>
    > 
    > 
    


Reply via email to