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()));
        }
    }    
}