Table of Contents |
---|
...
Before running the build scan and tests, you need to create a session ID. The session ID is provided to each step in order to link them together as one complete cycle.
Generating a session ID in Java is done using the Java Build scanner with the -config
flag. In the following sample, we have used a timestamp for the build name but any environment variable can be used according to your organization’s naming conventionThis command can be executed as an ANT Java task.
Code Block | ||
---|---|---|
| ||
<tstamp> <format property="time.stamp" pattern="yyyyMMdd-HHmm"/> </tstamp> <target name="sealights_config"> <java jar="${sealights.dir}/sl-build-scanner.jar" fork="true"> <arg value="-config"/> <arg value="-tokenfile"/> <arg value="/path/to${sealights.dir}/sltoken.txt"/> <arg value="-appname"/> <arg value="myApp"/> <arg value="-branchname"/> <arg value="master"/> <arg value="-buildname"/> <arg value="${time.stamp}"/> <arg value="-pi"/> <arg value="*.com.company.*"/> </java> </target> |
In the sample code above, we have used a timestamp for the build name but any environment variable can be used according to your organization’s naming convention.
Info |
---|
See 'Java Command Reference - Creating a session ID' for full parameter details |
...
In order to collect coverage information SeaLights, agents need to first scan the binary files for the build information: it can be the *.class
, *.jar
, or even the *.war
files.
Scanning a build in ANT is achieved using the Java Build scanner executed as an ANT Java task.
Code Block | ||
---|---|---|
| ||
<target name="sealights_scan" depends="compile,sealights_config"> <java jar="${sealights.dir}/sl-build-scanner.jar" fork="true"> <arg value="-scan"/> <arg value="-tokenfile"/> <arg value="/path/to${sealights.dir}/sltoken.txt"/> <arg value="-buildsessionidfile"/> <arg value="buildSessionId.txt"/> <arg value="-workspacepath"/> <arg value="${build}"/> <arg value="-r"/> <arg value="-fi"/> <arg value="*.class"/> </java> </target> |
...
In order to capture code coverage information from tests run with JUnit, you need to run it with our test listener as a Java agent:.
JUnit 4.x
The listener needs to be passed using the
jvmarg
attribute-javaagent
parameter together with its required parameters.
Code Block | ||
---|---|---|
| ||
<junit fork="yes"> <jvmarg value="-javaagent:${sealights.dir}/sl-test-listener.jar"/> <jvmarg value="-Dsl.tokenFile=${sealights.dir}/sltoken.txt"/> <jvmarg value="-Dsl.buildSessionIdFile=/path/to/sltokenbuildSessionId.txt"/> <jvmarg value="-Dsl.testStage=Unit Tests"/> </junit> |
JUnit 5.x
When tests are running in the same process, the listener needs to be passed using the
jvmarg
attribute-javaagent
parameter with Sealights' Anonymous Execution mode deactivated.When tests are running in a different process (via a fork), we need to add the
start
andend
commands before and after tests execution
Same process (not forked) | Different process (forked) | ||||
---|---|---|---|---|---|
|
...
|
|
...
|
...
|
...
|
Info |
---|
See 'Java Command Reference - Installing test listener as Java Agent' for full parameter details |
Sample integration into an existing ANT project
...
Code Block | ||
---|---|---|
| ||
<project name="sl-ant-sample" xmlns:if="ant:if"> <target name="compile"> <echo>Compiling the JAR</echo> <antcall if:true="${sealights}" target="sealights_scan" /> </target> <target name="sealights_config"> <echo>Sealights -- Create BSID</echo> </target> <target name="sealights_scan" depends="sealights_config"> <echo>Sealights -- Scan artefacts</echo> </target> <target name="junit"> <echo if:true="${sealights}">Sealights<>Sealights -- Add JVM arg</echo> <echo>Regular</echo> </target> </project> |
Here is a comparison of executions with and without the sealigths
parameter set to true
.
...