Saját tesztek írása: 3. minta
Az alábbi forráskód példa egy tesztre, amely az adatok kérésének és feldolgozásának egy aszinkron megközelítését mutatja be.
/*
* Engedélyköteles anyagok - Az IBM tulajdona
*
* 5724-H72, 5655-L82, 5724-L26, 5655R3600
*
* (c) Copyright IBM Corp. 2005, 2020
*
* USA kormányzati felhasználók korlátozott jogai - A használatot,
* másolást vagy közlést az IBM Corporation-nel kötött GSA ADP Schedule szerződés szabályozza.
*/
package com.ibm.mq.explorer.tests.sample;
/**
* Pszeudokód minta, amely aszinkron megközelítéssel mutatja be a megvalósítását egy
* tesztnek.
*/
public class QueuesTest extends WMQTest implements SomeListener {
/** Teszteredmények tárolására használt. */
private ArrayList testresults = new ArrayList();
/**
* A teszt elindítására használt.
* <p>
* @param callback azonosító a tesztet futtató teszt alrendszerhez
* @param guimonitor azonosító a tesztet megfigyelő objektumhoz,
* amely azt biztosítja, hogy a teszt rendszeres időközönként ellenőrizhesse,
* hogy a felhasználó megpróbálta-e visszavonni a teszt futását
*/
public void runTest(WMQTestEngine callback, IProgressMonitor guimonitor, MQExtObject[] contextObjects, TreeNode treenodeId) {
super.runTest(callback, guimonitor, contextObjects, treenodeId);
// összes teszt tároló alaphelyzetbe állítása
testresults = new ArrayList();
// A grafikus felület folyamatjelző részének inicializálása, amely
// a teszt előrehaladását jeleníti meg
guimonitor.beginTask(getTestName(), numqmgrs);
// teszt elindítása.
// lekérdezés elküldése
PseudoQueueManager qmgrHandle = pseudoGetQueueManager();
submitQmgrQuery(qmgrHandle, this, query);
// megjegyzés: a runTest metódus most befejeződött, de a tesztnek nincs vége.
}
/**
* A runTest által elküldött lekérdezésre válaszként kapott eredmények feldolgozásához
* használt.
* <p>
* @param objects fogadott adatok
*/
public void dataReponseReceived(ArrayList objects) {
// a válaszban kapott gyűjteményben lévő összes válasz elemzése
for ( int i = 0; i < objects.size(); i++ ) {
PseudoQueue nxtQueue = (PseudoQueue) objects.get(i);
analyseQueue(nxtQueue);
// a teszt előrehaladását megjelenítő GUI folyamatjelző növelése
getGUIMonitor().worked(1);
}
// a kész eredmények visszaadása
WMQTestResult[] finalresults = (WMQTestResult[]) testresults.toArray(new WMQTestResult[0]);
testComplete(finalresults);
}
/**
* Az adott sor elemzése. Ha a rendszer bármilyen potenciális problémát talál, akkor egy
* problémajelző kerül hozzáadásra a teszteredmény gyűjteményhez.
* <p>
* @param queue elemezni kívánt sor
*/
private void analyseQueue(PseudoQueue queue) {
// csináljon valamit
// problémajelző hozzáadása a gyűjteményhez
if (problemFound) {
testresults.add(new WMQTestResult(IMarker.SEVERITY_WARNING,
"A rendszer problémát talált ezzel: "
+ queueName,
getQueueManagerName(queue),
getTestSubCategory()));
}
}
}