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