[
https://issues.apache.org/jira/browse/SUREFIRE-1881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17312788#comment-17312788
]
Tibor Digana commented on SUREFIRE-1881:
----------------------------------------
New findings with {{$ mvnDebug test -X -o}}.
Thsi is the CLI
{{cmd.exe /X /C ""c:\Program Files\Java\jdk1.8.0_281\jre\bin\java" -version
-verbose:class -jar
C:\Users\tibor17\AppData\Local\Temp\surefire7749626098124699370\surefirebooter1536162513447436319.jar
C:\Users\tibor17\AppData\Local\Temp\surefire7749626098124699370
2021-04-01T00-48-45_103-jvmRun1 surefire4171615558308521670tmp
surefire_04351533485029717280tmp"}}
$ telnet 127.0.0.1 52617
1e7ee9d8-fe44-4394-942b-b8228336be00
Maven console:
{noformat}
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[DEBUG] Determined Maven Process ID 4576
[DEBUG] Fork Channel [1] connection string
'tcp://127.0.0.1:52617?sessionId=1e7ee9d8-fe44-4394-942b-b8228336be00' for the
implementation class
org.apache.maven.plugin.surefire.extensions.SurefireForkChannel
{noformat}
In the class {{CommandlineExecutor}}, Line 80, the debugger evaluates
{{java.lang.Process}}:
{noformat}
process.isAlive() = true
{noformat}
This means that the Surefire JVM is alive and also my added logs appear in the
dump file.
It looks likes whole problem is that the TCP client starts before TCP server.
To be more specific in ForkStarter, the statement {{CommandlineStreams streams
= exec.execute()}} happens before {{forkChannel.connectToClient()}}. The method
should return our custom object similar to Future, where we would have a method
{{complete()}} implementing {{verifySessionId()}} from {{SurefireForkChannel}}.
I think it;s the only timing and ordering issue.
> Java agent printing to native console makes build block when using
> SurefireForkNodeFactory
> ------------------------------------------------------------------------------------------
>
> Key: SUREFIRE-1881
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1881
> Project: Maven Surefire
> Issue Type: Bug
> Components: Maven Failsafe Plugin, Maven Surefire Plugin
> Affects Versions: 3.0.0-M5
> Reporter: Alexander Kriegisch
> Assignee: Tibor Digana
> Priority: Major
> Attachments: Bildschirmfoto von 2021-03-29 21-50-25.png,
> image-2021-02-08-12-07-34-183.png, image-2021-03-26-09-48-11-398.png,
> image-2021-03-26-09-52-36-881.png, image-2021-03-26-18-00-37-889.png,
> image-2021-03-31-11-22-50-682.png, image-2021-03-31-11-38-11-119.png,
> image-2021-03-31-12-31-55-818.png, image-2021-03-31-12-32-41-589.png,
> maven-failsafe-debug-log.txt, screenshot-1.png, screenshot-2.png
>
>
> This is a follow-up to SUREFIRE-1788 which was closed prematurely even though
> there still were open issues which were discussed there initially. Basically
> the situation is as follows:
> * I use Java agents writing to stdOut and stdErr in my tests.
> * I was annoyed that Surefire/Failsafe were writing lots of {{[WARNING]
> Corrupted STDOUT by directly writing to native stream in forked JVM}} lines
> into {{*-jvmRun1.dumpstream}} files. [~tibordigana] then told me to use
> {{<forkNode
> implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>}}
> in my POM in order to fix the issue.
> * I tried this in version 3.0.0-M5, but unfortunately, it makes
> Surefire/Failsafe freeze if a Java agent prints something to stdOut or
> stdErr. This happens both in M5 and in M6-SNAPSHOT after both SUREFIRE-1788
> and SUREFIRE-1809 have been merged in already.
> * My [sample
> project|https://github.com/kriegaex/Maven_Surefire_PrintToConsoleProblems]
> reproduces the issue as soon as you uncomment the option in the POM and run
> {{mvn clean verify}}.
> * The second issue is: *Not* using this option leads to garbled log output
> when a Java agent writes to both stdOut and stdErr before/during tests. See
> comments in class
> [{{Agent.DummyTransformer}}|https://github.com/kriegaex/Maven_Surefire_PrintToConsoleProblems/blob/master/src/main/java/de/scrum_master/dummy/Agent.java]
> for examples for garbled log lines and also comments in
> [pom.xml|https://github.com/kriegaex/Maven_Surefire_PrintToConsoleProblems/blob/master/pom.xml#L36]
> for further information.
> * If the garbled output would also appear with this option activated, cannot
> be tested at present due to the Surefire/Failsafe freeze. I will re-test that
> after the freeze has been fixed and before this issue can be closed.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)