Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Creating a Session ID

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. This command can be executed as an ANT Java task.

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 convention.

<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/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>

See 'Java Command Reference - Creating a session ID' for full parameter details

Scanning a build

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.

<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/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 add logs flags, you need to add the <jvmarg> values like below

<jvmarg value="-Dsl.log.toConsole=true"/>
<jvmarg value="-Dsl.log.level=info"/>

See 'Java Command Reference - Scanning a build' for full parameter details

Running tests using JUnit

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:

  • The listener needs to be passed using the jvmarg attribute -javaagent parameter together with its required parameters.

JUnit 4.x

JUnit 5.x

<junit fork="yes">
  <jvmarg value="-javaagent:${sealights.dir}/sl-test-listener.jar"/>
  <jvmarg value="-Dsl.tokenFile=${sealights.dir}/sltoken.txt"/>
  <jvmarg value="-Dsl.buildSessionIdFile=buildSessionId.txt"/>
  <jvmarg value="-Dsl.testStage=Unit Tests"/>
</junit>
<junitlauncher>
            <testclasses outputdir="build/test-report">
                 <fork>
                    <jvmarg value="-javaagent:${sealights.dir}/sl-test-listener.jar"/>
                    <jvmarg value="-Dsl.tokenFile=${sealights.dir}/sltoken.txt"/>
                    <jvmarg value="-Dsl.buildSessionIdFile=buildSessionId.txt"/>
                    <jvmarg value="-Dsl.testStage=Unit Tests"/>
                </fork>
            ...
</junitlauncher>

Sample integration into an existing ANT project

In order to keep backward compatibility, you can use the ant:if condition to execute Sealights commands according to a boolean.
In the sample below, you’ll be required to add -Dsealights=true to your ANT command in order to enable the agents.

The sample below does not contain the command themselves for clarity. Please replace the <echo> lines with commands explained in previous sections.

<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 -- Add JVM arg</echo>
		<echo>Regular</echo>
  	</target>

</project>

Here is a comparison of executions with and without the sealigths parameter set.

  • No labels