Test on All Applicable Agents
Situation
Send built artifacts to all Linux x86 32bit agents for testing. After test finishes, publish test reports on these agents to QuickBuild server.
Demonstration
To demonstrate this, two agents are set up at the demo site, with below grid user attributes:
arch=linux-x86-32
Our purpose is to run tests on all agents with this attribute. In our demonstration, agents matching this criteria are sea.pmease.com:8811 and sea.pmease.com:8812.
- Switch to the test configuration, and hit the run button.
- Change to overview page of latest build after build finishes, and you will see two set of test reports are published, one is for agent sea.pmease.com:8811 , and another is for agent sea.pmease.com:8822.
- The step status page of latest build also indicates that tests have been run on these two agents.
Resolution
Switch to steps page of the test configuration:
- The checkout step pulls project source code out of SCM.
- The build jar step produces build artifacts, which is a jar in this case.
- The test on all applicable agents step is a parallel composition step, and it will run all contained steps concurrently. It will also repeat child steps in a concurrent way if child steps are configured with repeating params.
- The test on agent step is a sequential composition step:
- This step is configured with a repeat param. The param name is set as agent , and param values is set as addresses of all build agents with attribute arch equals to linux-x86-32.
- This step is set to run on grid node with address equals to param agent . This is done through property node selection.
- This step is configured to fetch necessary test files from parent node (the node running parent step) to current node (the selected agent) through the property fetch input files.
- The above settings effectively makes the test on agent step running on all linux-x86-32 agents, and these agents will run this step concurrently since it is contained in a parallel composition step.
- The step test on agent contains two child steps, respectively run test and publish test reports . Since step test on agent is set to run on all applicable agents, these two child steps will also run on those agents to do the actual work. Specifically, the publish test reports step uses ${params.get("agent").replace(':', '
')}as report set name to group test reports by agents (character ':' is replaced with '' since this character is not allowed in report set name).