Escribir sus propias pruebas: Ejemplo 3
El siguiente código fuente es un ejemplo de una prueba que muestra un enfoque asíncrono para solicitar datos y procesar datos.
/*
* Material bajo licencia - Propiedad de IBM
*
* 5724-H72, 5655-L82, 5724-L26, 5655R3600
*
* (c) Copyright IBM Corp. 2005, 2020
*
* Derechos restringidos a los usuarios de gobierno de EE.UU. -
* Utilización, duplicación o divulgación restringida por el
* GSA ADP Schedule Contract con IBM Corp.
*/
package com.ibm.mq.explorer.tests.sample;
/**
* Ejemplo de pseudocódigo que demuestra un enfoque asíncrono para implementar
* una Prueba.
*/
public class QueuesTest extends WMQTest implements SomeListener {
/** Se utiliza para almacenar resultados de la prueba. */
private ArrayList testresults = new ArrayList();
/**
* Se utiliza para iniciar la prueba.
* <p>
* @param callback manejador para el motor de pruebas que ejecuta la prueba
* @param guimonitor un manejador para el objeto que supervisa la prueba, que
* se proporciona para permitir que la prueba compruebe periódicamente
* si el usuario ha intentado cancelar la prueba en ejecución
*/
public void runTest(WMQTestEngine callback, IProgressMonitor guimonitor, MQExtObject[] contextObjects, TreeNode treenodeId) {
super.runTest(callback, guimonitor, contextObjects, treenodeId);
// restablecer todos los almacenes de pruebas
testresults = new ArrayList();
// inicializar la parte de barra de progreso de la GUI utilizada para mostrar el progreso
// de esta prueba
guimonitor.beginTask(getTestName(), numqmgrs);
// !iniciar la prueba!
// enviar consulta
PseudoQueueManager qmgrHandle = pseudoGetQueueManager();
submitQmgrQuery(qmgrHandle, this, query);
// observe que el método runTest ya ha finalizado, pero la prueba no ha terminado.
}
/**
* Se utiliza para procesar los resultados recibidos en respuesta a la
* consulta sometida por runTest.
* <p>
* @param objects datos recibidos
*/
public void dataReponseReceived(ArrayList objects) {
// analizar cada una de las respuestas de la colección recibida en la respuesta
for ( int i = 0; i < objects.size(); i++ ) {
PseudoQueue nxtQueue = (PseudoQueue) objects.get(i);
analyseQueue(nxtQueue);
// incrementar barra de progreso de GUI utilizada para mostrar el progreso de esta prueba
getGUIMonitor().worked(1);
}
// devolver los resultados completados
WMQTestResult[] finalresults = (WMQTestResult[]) testresults.toArray(new WMQTestResult[0]);
testComplete(finalresults);
}
/**
* Analizar la cola especificada. Si se encuentra algún problema potencial,
* se añade un indicador de problema a la colección testresults.
* <p>
* @param queue cola a analizar
*/
private void analyseQueue(PseudoQueue queue) {
// hacer algo
// añadir un indicador de problema a la colección
if (problemFound) {
testresults.add(new WMQTestResult(IMarker.SEVERITY_WARNING,
"Se ha encontrado un problema con "
+ queueName,
getQueueManagerName(queue),
getTestSubCategory()));
}
}
}