@Override protected void specificStop() { Node n = (Node) getNodeValue(); if (n != null) { n.stop(); } }
/** * 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(); } }
@After public void tearDown() throws Exception { _server.stop(); _client.stop(); }
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(); } }