Exemplo n.º 1
0
  @Test
  public void testTimeout() throws Throwable {
    // Log.getLog().setDebugEnabled(true);

    TestDiameterHandler serverHandler =
        new TestDiameterHandler() {

          @Override
          public void doHandle(DiameterMessage message) throws Throwable {
            Thread.sleep(300);
            ((DiameterServletRequest) message).createAnswer(Common.DIAMETER_SUCCESS).send();
          }
        };
    _server.setHandler(serverHandler);
    _server.start();

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

    waitPeerOpened();

    newUdr().send();
    assertEquals(1, clientHandler.waitNoAnswer());
    serverHandler.assertDone();
    Thread.sleep(150);
    clientHandler.assertDone(0);
    assertTrue(_peer.isOpen());
  }
Exemplo n.º 2
0
  @Test
  public void testDiameterFactory() throws Throwable {
    // Log.getLog().setDebugEnabled(true);

    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();
          }
        };
    _server.setHandler(serverHandler);
    _server.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(uda.getApplicationId(), Sh.SH_APPLICATION_ID.getId());
          }
        };
    _client.setHandler(clientHandler);
    _client.start();

    waitPeerOpened();

    DiameterFactory clientFactory = createFactory(_client);
    DiameterServletRequest udr =
        clientFactory.createRequest(null, Sh.SH_APPLICATION_ID, Sh.UDR, "server");

    udr.add(Common.DESTINATION_HOST, "server");
    udr.getAVPs().add(Sh.DATA_REFERENCE, DataReference.SCSCFName);
    AVP<AVPList> userIdentity = new AVP<AVPList>(Sh.USER_IDENTITY, new AVPList());
    userIdentity.getValue().add(Cx.PUBLIC_IDENTITY, "sip:[email protected]");
    udr.getAVPs().add(userIdentity);
    udr.getAVPs().add(Common.AUTH_SESSION_STATE, AuthSessionState.NO_STATE_MAINTAINED);
    udr.getSession();
    udr.send();
    serverHandler.assertDone();
    clientHandler.assertDone();
  }
Exemplo n.º 3
0
  @Test
  public void testUdr() throws Throwable {
    // Log.getLog().setDebugEnabled(true);

    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();
          }
        };
    _server.setHandler(serverHandler);
    _server.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();
    serverHandler.assertDone();
    clientHandler.assertDone();
  }
Exemplo n.º 4
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();
    }
  }
Exemplo n.º 5
0
  @Test
  public void testSession() throws Throwable {
    // Log.getLog().setDebugEnabled(true);

    TestDiameterHandler serverHandler =
        new TestDiameterHandler() {
          private String _sessionId;
          private DiameterSession _session;

          @Override
          public void doHandle(DiameterMessage message) throws Throwable {
            if (message instanceof DiameterServletAnswer) {
              assertEquals(Sh.PNA, message.getCommand());
              assertEquals(_sessionId, message.getSessionId());
              assertEquals(_session, message.getSession());
            } else {
              DiameterServletAnswer sna;
              DiameterServletRequest request = (DiameterServletRequest) message;

              assertEquals(true, message.isRequest());
              assertEquals(Sh.SNR, request.getCommand());
              assertEquals(request.getApplicationId(), Sh.SH_APPLICATION_ID.getId());
              assertEquals(request.getDestinationHost(), "server");
              sna = request.createAnswer(Common.DIAMETER_SUCCESS);
              _sessionId = request.getSessionId();
              assertNotNull(_sessionId);
              _session = request.getSession();
              assertNotNull(_session);
              sna.send();

              Thread.sleep(50);
              DiameterServletRequest pnr = _session.createRequest(Sh.PNR, true);
              pnr.send();
            }
          }
        };
    _server.setHandler(serverHandler);
    _server.start();

    TestDiameterHandler clientHandler =
        new TestDiameterHandler() {
          private String _sessionId;
          private DiameterSession _session;

          @Override
          public void doHandle(DiameterMessage message) throws Throwable {
            if (message instanceof DiameterServletAnswer) {
              DiameterServletAnswer sna = (DiameterServletAnswer) message;
              assertEquals(Sh.SNA, sna.getCommand());
              assertEquals(sna.getApplicationId(), Sh.SH_APPLICATION_ID.getId());
              _sessionId = sna.getSessionId();
              _session = sna.getSession();
              assertNotNull(_sessionId);
              assertNotNull(_session);
              assertEquals(_sessionId, sna.getRequest().getSessionId());
            } else {
              DiameterServletRequest pnr = (DiameterServletRequest) message;
              assertEquals(Sh.PNR, pnr.getCommand());
              assertEquals(_sessionId, pnr.getSessionId());
              assertEquals(_session, pnr.getSession());
              pnr.createAnswer(Common.DIAMETER_SUCCESS).send();
            }
          }
        };
    _client.setHandler(clientHandler);
    _client.start();

    waitPeerOpened();

    String id = _client.getSessionManager().newSessionId();
    DiameterRequest snr = new DiameterRequest(_client, Sh.SNR, Sh.SH_APPLICATION_ID.getId(), id);
    snr.add(Common.DESTINATION_REALM, "server");
    snr.add(Common.DESTINATION_HOST, "server");
    snr.add(Sh.DATA_REFERENCE, DataReference.SCSCFName);
    AVP<AVPList> userIdentity = new AVP<AVPList>(Sh.USER_IDENTITY, new AVPList());
    userIdentity.getValue().add(Cx.PUBLIC_IDENTITY, "sip:[email protected]");
    snr.getAVPs().add(userIdentity);
    snr.add(Common.AUTH_SESSION_STATE, AuthSessionState.NO_STATE_MAINTAINED);
    snr.getAVPs().add(Sh.SH_APPLICATION_ID.getAVP());

    snr.send();

    serverHandler.assertDone(2);
    clientHandler.assertDone(2);
  }
Exemplo n.º 6
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();
    }
  }