Questo è un esempio di SampleSubsystem.java.
SampleSubsystem.java
package test;
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;
/**
* Sottosistema del motore RPT di esempio
*/
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); // Consente l'attesa per la visualizzazione di un elemento sulla coda
}
/*
* Le azioni entrano nel sottosistema per il servizio mediante una chiamata a enqueue().
* Un'azione può richiamare un riferimento al sottosistema mediante il metodo IKAction
* getSubsystem().
*
* @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);
}
/*
* Messaggio al sottosistema per l'arresto.
*
* @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(); // Informa sullo stato del sottosistema del motore
client = null;
// Se non è necessario effettuare alcune operazione, attendere
updateJob("Idle");
client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);
// Questa operazione del sottosistema rimarrà in contatto con un attributo dell'azione
if (client != null) {
updateJob("Servicing " + client.getName()); // Good for debugging
client.setServiced();
dispatch(client); // L'azione lascia il sottosistema
}
}
}
}