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