Este é um exemplo de 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;
/**
* Subsistema do Mecanismo RPT de Amostra
*/
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); // Permite aguardar que algo apareça na fila
}
/*
* As ações entram no subsistema para serviço por meio de uma chamada para enqueue().
* Uma ação pode obter uma referência ao subsistema utilizando o método 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);
}
/*
* Mensagem para o subsistema parar.
*
* @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 que o subsistema do mecanismo está em funcionamento
client = null;
// Se não houver nada para fazer, aguarde trabalho
updateJob("Idle");
client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);
// Este trabalho do subsistema será tocar um atributo da ação
if (client != null) {
updateJob("Servicing " + client.getName()); // Ideal para depurar
client.setServiced();
dispatch(client); // Ação atendida deixa o subsistema
}
}
}
}