@Override
 protected void specificStop() {
   Node n = (Node) getNodeValue();
   if (n != null) {
     n.stop();
   }
 }
Example #2
0
  /**
   * Ensure that a new DiameterErrorEvent is thrown if unable to send the request after a redirect.
   *
   * @throws Throwable
   */
  @Test
  public void testRedirectBad() throws Throwable {
    Node server2 = null;
    try {
      TestDiameterHandler redirectHandler =
          new TestDiameterHandler() {

            @Override
            public void doHandle(DiameterMessage message) throws Throwable {
              DiameterServletAnswer uda;
              DiameterServletRequest request = (DiameterServletRequest) message;

              assertEquals(true, message.isRequest());
              assertEquals(Sh.UDR, request.getCommand());
              uda = request.createAnswer(Common.DIAMETER_REDIRECT_INDICATION);
              uda.add(Common.REDIRECT_HOST, "aaa://invalid");
              uda.send();
            }
          };
      _server.setHandler(redirectHandler);
      _server.start();

      TestDiameterHandler clientHandler =
          new TestDiameterHandler() {
            @Override
            public void doHandle(DiameterMessage message) throws Throwable {}
          };
      _client.setHandler(clientHandler);
      _client.start();

      waitPeerOpened();

      newUdr().send();
      redirectHandler.assertDone();
      clientHandler.assertDone(0);
      assertEquals(1, clientHandler.waitNoAnswer());
    } finally {
      if (server2 != null) server2.stop();
    }
  }
Example #3
0
 @After
 public void tearDown() throws Exception {
   _server.stop();
   _client.stop();
 }
Example #4
0
  public void testRedirect(final int port, final List<String> redirectHosts) throws Throwable {
    Node server2 = null;
    try {
      TestDiameterHandler redirectHandler =
          new TestDiameterHandler() {

            @Override
            public void doHandle(DiameterMessage message) throws Throwable {
              DiameterServletAnswer uda;
              DiameterServletRequest request = (DiameterServletRequest) message;

              assertEquals(true, message.isRequest());
              assertEquals(Sh.UDR, request.getCommand());
              uda = request.createAnswer(Common.DIAMETER_REDIRECT_INDICATION);
              for (String uri : redirectHosts) uda.add(Common.REDIRECT_HOST, uri);
              uda.send();
            }
          };
      _server.setHandler(redirectHandler);
      _server.start();

      server2 = new Node(port);
      server2.getConnectors()[0].setHost("127.0.0.1");
      server2.setIdentity("localhost");
      TestDiameterHandler serverHandler =
          new TestDiameterHandler() {

            @Override
            public void doHandle(DiameterMessage message) throws Throwable {
              DiameterServletAnswer uda;
              DiameterServletRequest request = (DiameterServletRequest) message;

              assertEquals(true, message.isRequest());
              assertEquals(Sh.UDR, request.getCommand());
              assertEquals(request.getApplicationId(), Sh.SH_APPLICATION_ID.getId());
              assertEquals(request.getDestinationHost(), "server");
              uda = request.createAnswer(Common.DIAMETER_SUCCESS);
              uda.send();
            }
          };
      server2.setHandler(serverHandler);
      server2.start();

      TestDiameterHandler clientHandler =
          new TestDiameterHandler() {

            @Override
            public void doHandle(DiameterMessage message) throws Throwable {
              DiameterServletAnswer uda = (DiameterServletAnswer) message;

              assertFalse(message.isRequest());
              assertEquals(Sh.UDA, uda.getCommand());
              assertEquals(Common.DIAMETER_SUCCESS, uda.getResultCode());
              assertEquals(uda.getApplicationId(), Sh.SH_APPLICATION_ID.getId());
            }
          };
      _client.setHandler(clientHandler);
      _client.start();

      waitPeerOpened();

      newUdr().send();
      redirectHandler.assertDone();
      clientHandler.assertDone();
    } finally {
      if (server2 != null) server2.stop();
    }
  }