Eigene Tests schreiben: Beispiel 3
Der folgende Quellcode ist ein Beispiel für einen Test, der einen asynchronen Ansatz zur Datenabfrage und -verarbeitung zeigt.
/*
* Lizenziertes Material - Eigentum der IBM
*
* 5724-H72, 5655-L82, 5724-L26, 5655R3600
*
* (c) Copyright IBM Corp. 2005, 2020
*
*
*/
package com.ibm.mq.explorer.tests.sample;
/**
* Pseudocode-Beispiel, das einen asynchronen Ansatz zur Implementierung eines * Tests zeigt.
*/
public class QueuesTest extends WMQTest implements SomeListener {
/** Verwendet zur Speicherung von Testergebnissen. */
private ArrayList testresults = new ArrayList();
/**
* Verwendet zum Starten des Tests.
* <p>
* @param callback: Kennung für die ausführende Testengine
* @param guimonitor: Eine Kennung für das den Test überwachende Objekt, die es dem Test * ermöglicht, regelmäßig zu prüfen, ob der Benutzer versucht hat, den Test abzubrechen
*/
public void runTest(WMQTestEngine callback, IProgressMonitor guimonitor, MQExtObject[] contextObjects, TreeNode treenodeId) {
super.runTest(callback, guimonitor, contextObjects, treenodeId);
// Alle Testspeicher zurücksetzen
testresults = new ArrayList();
// Teil der grafischen Benutzerschnittstelle für die Fortschrittsleiste // initialisieren, die den Fortschritt dieses Tests anzeigt
guimonitor.beginTask(getTestName(), numqmgrs);
// Test starten!
// Abfrage senden
PseudoQueueManager qmgrHandle = pseudoGetQueueManager();
submitQmgrQuery(qmgrHandle, this, query);
// Beachten Sie, dass die Methode 'runTest' nun beendet ist, der Test aber noch nicht // abgeschlossen wurde!
}
/**
* Verwendet für die Verarbeitung von Ergebnissen, die durch die Abfrage von 'runTest' * empfangen wurden.
* <p>
* @param objects: Daten erhalten
*/
public void dataReponseReceived(ArrayList objects) {
// Analysieren aller Antworten in der Sammlung, die in der Antwort empfangen // wurden
for ( int i = 0; i < objects.size(); i++ ) {
PseudoQueue nxtQueue = (PseudoQueue) objects.get(i);
analyseQueue(nxtQueue);
// Fortschrittsanzeiger der grafischen Benutzeroberfläche erhöhen, der für // diesen Test verwendet wird
getGUIMonitor().worked(1);
}
// Die vervollständigten Ergebnisse zurückgeben
WMQTestResult[] finalresults = (WMQTestResult[]) testresults.toArray(new WMQTestResult[0]);
testComplete(finalresults);
}
/**
* Aktuelle Warteschlange analysieren. Falls mögliche Probleme gefunden werden, wird eine * Problemkennung der Sammlung 'testResults' hinzugefügt.
* <p>
* @param queue: Zu analysierende Warteschlange
*/
private void analyseQueue(PseudoQueue queue) {
// Etwas tun
// Hinzufügen einer Problemkennung zur Sammlung
if (problemFound) {
testresults.add(new WMQTestResult(IMarker.SEVERITY_WARNING,
"Problem gefunden bei "
+ queueName,
getQueueManagerName(queue),
getTestSubCategory()));
}
}
}