Gravando seus Próprios Testes: Amostra 3
O código-fonte a seguir é o exemplo de um teste que mostra uma abordagem assíncrona à solicitação e processamento de dados.
/*
* Licensed Materials - Property of IBM
*
* 5724-H72, 5655-L82, 5724-L26, 5655R3600
*
* (c) Copyright IBM Corp. 2005, 2020
*
* Direitos Restritos para Usuários do Governo dos Estados Unidos - Uso, duplicação ou
* divulgação restritos pelo documento GSA ADP Schedule Contract com a IBM Corp.
*/
package com.ibm.mq.explorer.tests.sample;
/**
* Amostra de pseudocódigo demonstrando uma abordagem assíncrona para implementação de um
* Teste.
*/
public class QueuesTest extends WMQTest implements SomeListener {
/** Utilizado para armazenar resultados do teste. */
private ArrayList testresults = new ArrayList();
/**
* Utilizado para iniciar o teste.
* < p>
* @param callback - identificador para o mecanismo de teste que está executando o teste
* @param guimonitor - um identificador para o objeto que está monitorando o teste,
* fornecido para que o teste verifique periodicamente
* se o usuário tentou cancelar a execução do teste
*/
public void runTest(WMQTestEngine callback, IProgressMonitor guimonitor, MQExtObject[] contextObjects, TreeNode treenodeId) {
super.runTest(callback, guimonitor, contextObjects, treenodeId);
// Reconfigurar todos os armazenamentos de testes
testresults = new ArrayList();
// Inicializar a parte de barra de progresso da GUI utilizada para mostrar o progresso
// deste teste
guimonitor.beginTask(getTestName(), numqmgrs);
// Iniciar o teste!
// Enviar consulta
PseudoQueueManager qmgrHandle = pseudoGetQueueManager();
submitQmgrQuery(qmgrHandle, this, query);
// Observe que o método runTest foi concluído agora, mas o teste não terminou!
}
/**
* Utilizado para processar os resultados recebidos em resposta à consulta submetida por
* runTest.
* < p>
* @param objects - dados recebidos
*/
public void dataReponseReceived(ArrayList objects) {
// Analisar cada uma das respostas na coleta recebida na resposta
for ( int i = 0; i < objects.size(); i++ ) {
PseudoQueue nxtQueue = (PseudoQueue) objects.get(i);
analyseQueue(nxtQueue);
// Incrementar a barra de progresso da GUI utilizada para mostrar o progresso deste teste
getGUIMonitor().worked(1);
}
// Retornar os resultados concluídos
WMQTestResult[] finalresults = (WMQTestResult[]) testresults.toArray(new WMQTestResult[0]);
testComplete(finalresults);
}
/**
* Analisar a fila fornecida. Se forem encontrados problemas, será incluído
* um marcador de problemas na coleta de resultados do teste.
* < p>
* @param queue - fila a ser analisada
*/
private void analyseQueue(PseudoQueue queue) {
// Fazer alguma coisa
// Incluir um marcador de problema na coleta
if (problemFound) {
testresults.add(new WMQTestResult(IMarker.SEVERITY_WARNING,
"Foi encontrado um problema com "
+ queueName,
getQueueManagerName(queue),
getTestSubCategory()));
}
}
}