/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.transport.socket; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeMsg; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.INTEGRATION) public class EndPointDescriptionTest { private static final Logger s_logger = LoggerFactory.getLogger(EndPointDescriptionTest.class); private void testEndPoints(boolean bind) throws IOException { final AbstractServerSocketProcess server = new AbstractServerSocketProcess() { @Override protected void socketOpened(Socket socket) { } }; if (bind) { server.setBindAddress(InetAddress.getLocalHost()); } server.start(); final FudgeMsg serverEndPoint = server.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(serverEndPoint); s_logger.info("Server end point {}", serverEndPoint); final AbstractSocketProcess client = new AbstractSocketProcess() { @Override protected void socketOpened(Socket socket, BufferedOutputStream os, BufferedInputStream is) { } }; client.setInetAddress(InetAddress.getLocalHost()); client.setPortNumber(server.getPortNumber()); client.start(); final FudgeMsg clientEndPoint = client.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(clientEndPoint); s_logger.info("Client end point {} ", clientEndPoint); assertEquals(serverEndPoint.getString(SocketEndPointDescriptionProvider.TYPE_KEY), clientEndPoint.getString(SocketEndPointDescriptionProvider.TYPE_KEY)); assertEquals(serverEndPoint.getInt(SocketEndPointDescriptionProvider.PORT_KEY), clientEndPoint.getInt(SocketEndPointDescriptionProvider.PORT_KEY)); client.stop(); server.stop(); } public void testEndPointsBound() throws IOException { testEndPoints(true); } public void testEndPointsUnbound() throws IOException { testEndPoints(false); } public void testConnectToEndPoint() throws IOException { final AbstractServerSocketProcess server = new AbstractServerSocketProcess() { @Override protected void socketOpened(Socket socket) { } }; server.start(); final FudgeMsg serverEndPoint = server.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(serverEndPoint); s_logger.info("Server end point {}", serverEndPoint); final AbstractSocketProcess client = new AbstractSocketProcess() { @Override protected void socketOpened(Socket socket, BufferedOutputStream os, BufferedInputStream is) { } }; client.setServer(serverEndPoint); client.start(); final FudgeMsg clientEndPoint = client.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(clientEndPoint); s_logger.info("Client end point {} ", clientEndPoint); client.stop(); server.stop(); } public void testConnectToStaticEndPoint() throws IOException { final AbstractServerSocketProcess server = new AbstractServerSocketProcess() { @Override protected void socketOpened(Socket socket) { } }; server.start(); final SocketEndPointDescriptionProvider serverEndPointDescriptor = new SocketEndPointDescriptionProvider(); serverEndPointDescriptor.setAddress("localhost"); serverEndPointDescriptor.setPort(server.getPortNumber()); final FudgeMsg serverEndPoint = serverEndPointDescriptor.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(serverEndPoint); s_logger.info("Server end point {}", serverEndPoint); final AbstractSocketProcess client = new AbstractSocketProcess() { @Override protected void socketOpened(Socket socket, BufferedOutputStream os, BufferedInputStream is) { } }; client.setServer(serverEndPoint); client.start(); final FudgeMsg clientEndPoint = client.getEndPointDescription(FudgeContext.GLOBAL_DEFAULT); assertNotNull(clientEndPoint); s_logger.info("Client end point {} ", clientEndPoint); client.stop(); server.stop(); } }