SampleSubsystem.java code sample
This is an example of SampleSubsystem.java.
SampleSubsystem.java
package customcode;
import com.ibm.rational.test.lt.kernel.action.IKAction;
import com.ibm.rational.test.lt.kernel.engine.impl.Queue;
import com.ibm.rational.test.lt.kernel.impl.KSubsystem;
/**
* Sample Test Performance Engine Subsystem
*/
public class SampleSubsystem extends KSubsystem {
private Queue sampleSubsystemQueue;
private boolean stopRequested = false;
private SampleAction client;
public SampleSubsystem(String name) {
super(name);
sampleSubsystemQueue = new Queue();
sampleSubsystemQueue.setBlocking(true); // Allows for waiting for something to appear on the queue
}
/*
* Actions enter the subsystem for service via a call to enqueue().
* An action can get a reference to the subystem using the IKAction
* getSubsystem() method.
*
* @see com.ibm.rational.test.lt.kernel.IKSubsystem#enqueue(com.ibm.rational.test.lt.kernel.action.IKAction)
*/
public void enqueue(IKAction action) {
sampleSubsystemQueue.enqueue(action);
}
/*
* Message to the subsystem to stop.
*
* @see com.ibm.rational.test.lt.kernel.IKSubsystem#shutdown()
*/
public void shutdown() {
stopRequested = true;
}
/*
* @see java.lang.Thread#run()
*/
public void run() {
while(!stopRequested) {
ringIn(); // Informs engine subsystem is healthy
client = null;
// If nothing to do wait for work
updateJob("Idle");
client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);
// This subsystem's work will be to touch an attribute of the action
if (client != null) {
updateJob("Servicing " + client.getName()); // Good for debugging
client.setServiced();
dispatch(client); // Serviced action leaves subsystem
}
}
}
}