Platform Test Environment

     Previous  Next    Open TOC in new window    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Using the Unit Test Framework with the Platform Test Environment

Unit tests are a core part of any testing cycle. Data are input into the system and the results are retrieved from the system and compared to expected values, all programmatically. This chapter describes the PTE Unit Test Framework. It consists of:

 


Creating and Running the Unit Test

The Unit Test Framework allows you to create unit tests for the PTE easily. You implement your test class based on the abstract class WlngBaseTestCase and it manages the mechanics of using JMX and JMS to connect to the PTE for you. A test.properties file located in the same directory can be used to define commonly changed properties of the test.

Note: The WlngBaseTestCase class is located in <bea_home>/wlng_pds400/lib/wlng/pte_api.jar.

There are five basic steps to creating a unit test for the PTE:

  1. Create any necessary client or simulator modules for the PTE using the required SPI and XML configuration files
  2. Implement a test class based on the abstract class WlngBaseTestCase
  3. Provision Gatekeeper
  4. Start the Platform Test Environment and make sure the modules are correctly loaded
  5. Run the test class
  6. Note: The PTE should be running in Console (non-GUI) mode when you run your test. See Installing and Running the Platform Test Environment for more information on starting in Console mode.
    Figure 4-1 An SMS Unit Test Sequence


    An SMS Unit Test Sequence

The test sequence flow is as follows:

  1. The test client calls execute on the PTE’s Module Management MBean. The mechanics of the JMX call are taken care of by the base class.
  2. The MBean calls execute on the specified Module, in this case sendSMS. This request includes a request for delivery receipts.
  3. The sendSMS Module sends the request to Gatekeeper.
  4. Gatekeeper processes it and submits it to the network simulator module, in this case the SMPP module
  5. The simulator module returns a Delivery Receipt to Gatekeeper
  6. Gatekeeper sends the receipt on to the Notification module (which represents the client Web Service implementation)
  7. The test client retrieves the result of Gatekeeper’s submit from the SMPP simulator
  8. The test client retrieves the Delivery Receipt from the Notification module

 


The Example Unit Test

To help you understand more clearly how all this works, there is an example unit test, which tests the example communication service, using the example clients and simulator. In standard installations, it is located in <bea_home>/wlng_pds400/example/unit_test/src/com/bea/wlcp/wlng/pds/example. See Listing 4-1 below.

Listing 4-1 A Unit Test for the Example Communication Service
package com.bea.wlcp.wlng.et.example;
import com.bea.wlcp.wlng.et.api.WlngBaseTestCase;
import java.util.List;
import java.util.Map;
/**
 * This class illustrates how to use the Unit Test Framework to
 * test the Communication Service Example. A few things are assumed before
 * running this class:
 * - the Services Gatekeeper should be running and configured properly
 * - the CS example should be deployed and ready
 *
 * Note: this example uses also the wlngJmx to be able to access the Services Gatekeeper
 * MBeans to ask the CS example plugin to connect to the Netex simulator.
 *
 */
public class TestSendData extends WlngBaseTestCase {
  private static final String SEND_DATA_MBEAN = "com.bea.wlcp.wlng.pte:group=traffic,name=SendData";
  private static final String NETWORK_TRIGGERED_MBEAN = "com.bea.wlcp.wlng.pte:group=traffic,name=NetworkTriggered";
  private static final String NOTIF_MANAGER_MBEAN = "com.bea.wlcp.wlng.pte:group=client,name=NotificationManager";
  private static final String NOTIF_MBEAN = "com.bea.wlcp.wlng.pte:group=client,name=Notification";
  private static final String NETEX_SIMULATOR_MBEAN = "com.bea.wlcp.wlng.pte:group=netex,name=Simulator";
  private static final String EXAMPLE_PLUGIN_MBEAN =
          "com.bea.wlcp.wlng:AppName=es_example_nt#4.0," +
                  "InstanceName=example_netex_plugin," +
                  "Type=com.acompany.plugin.example.netex.management.ExampleMBean";
  public TestSendData() throws Exception {
  }
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    wlngJmx.open("localhost", 8001, "weblogic", "weblogic");
    start(NETEX_SIMULATOR_MBEAN);
  }
  @Override
  protected void tearDown() throws Exception {
    wlngJmx.close();
    stop(NETEX_SIMULATOR_MBEAN);
    super.tearDown();
  }
  public void testSendData() throws Exception {
    assertTrue(isRunning(NETEX_SIMULATOR_MBEAN));
    resetStatistics(NETEX_SIMULATOR_MBEAN);
    wlngJmx.invokeOperation(EXAMPLE_PLUGIN_MBEAN, "connect");
    String data = "Hello at " + System.currentTimeMillis();
    String to = "tel:1234";
    putParameter(SEND_DATA_MBEAN, "url", "http://localhost:8001/example/SendData");
    putParameter(SEND_DATA_MBEAN, "data.data", data);
    putParameter(SEND_DATA_MBEAN, "data.address", to);
    start(SESSION_MBEAN);
    assertTrue(isRunning(SESSION_MBEAN));
    execute(SEND_DATA_MBEAN);
    Thread.sleep(2000);
    stop(SESSION_MBEAN);
    Map<String,String> stats = listAllStatistics(NETEX_SIMULATOR_MBEAN);
    System.out.println("Simulator statistics: "+stats);
    assertEquals("MessageReceived", "1", stats.get("MessageReceived"));
    assertEquals("MessageSent", "0", stats.get("MessageSent"));
  }
  public void testSendNetworkTriggeredData() throws Exception {
    String data = "Hello at " + System.currentTimeMillis();
    String from = "tel:1234";
    String to = "tel:7878";
    String correlator = "1234567890";
    assertTrue(isRunning(NETEX_SIMULATOR_MBEAN));
    resetStatistics(NETEX_SIMULATOR_MBEAN);
    wlngJmx.invokeOperation(EXAMPLE_PLUGIN_MBEAN, "connect");
    start(SESSION_MBEAN);
    assertTrue(isRunning(SESSION_MBEAN));
    putParameter(NOTIF_MANAGER_MBEAN, "url", "http://localhost:8001/example/NotificationManager");
    putParameter(NOTIF_MANAGER_MBEAN, "start.address", "tel:7878");
    putParameter(NOTIF_MANAGER_MBEAN, "start.correlator", correlator);
    putParameter(NOTIF_MANAGER_MBEAN, "start.endpoint", "http://localhost:13444/axis/services/Notification");
    putParameter(NOTIF_MANAGER_MBEAN, "stop.correlator", correlator);
    start(NOTIF_MANAGER_MBEAN);
    start(NOTIF_MBEAN);
    putParameter(NETWORK_TRIGGERED_MBEAN, "data", data);
    putParameter(NETWORK_TRIGGERED_MBEAN, "fromAddress", from);
    putParameter(NETWORK_TRIGGERED_MBEAN, "toAddress", to);
    clearResults(NOTIF_MBEAN);
    execute(NETWORK_TRIGGERED_MBEAN);
    Thread.sleep(2000);
    stop(NOTIF_MBEAN);
    stop(NOTIF_MANAGER_MBEAN);
    stop(SESSION_MBEAN);
    Map<String,String> stats = listAllStatistics(NETEX_SIMULATOR_MBEAN);
    System.out.println("Simulator statistics: "+stats);
    assertEquals("MessageReceived", "0", stats.get("MessageReceived"));
    assertEquals("MessageSent", "1", stats.get("MessageSent"));
    List<Map<String,String>> results = listAllResults(NOTIF_MBEAN);
    System.out.println("Notification results: "+results);
    assertEquals("Correlator", correlator, results.get(0).get("Correlator"));
    assertEquals("From Address", from, results.get(0).get("From Address"));
    assertEquals("Data", data, results.get(0).get("Data"));
  }
}

  Back to Top       Previous  Next