package com.activequant; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.junit.BeforeClass; import com.activequant.domainmodel.ETransportType; import com.activequant.domainmodel.TimeStamp; import com.activequant.interfaces.transport.IPublisher; import com.activequant.messages.AQMessages.BaseMessage; import com.activequant.messages.Marshaller; import com.activequant.messages.MessageFactory2; import com.activequant.server.components.UDPRelay; import com.activequant.transport.memory.InMemoryTransportFactory; /** * Unit test for our UDP relay for Fabian. */ public class UDPTest extends TestCase { /** * Create the test case * * @param testName * name of the test case */ public UDPTest(String testName) { super(testName); } class UdpEchoServer implements Runnable { static final int BUFFERSIZE = 256; public void run() { System.out.println("Starting local relay"); DatagramSocket sock; DatagramPacket pack = new DatagramPacket(new byte[BUFFERSIZE], BUFFERSIZE); try { sock = new DatagramSocket(54321); } catch (SocketException e) { System.out.println(e); return; } // echo back everything while (true) { try { sock.receive(pack); // System.out.println("===PacketDump======"); for (int i = 0; i < pack.getData().length; i++) { System.out.print(pack.getData()[i] + " "); } System.out.println("\n========="); // System.out.println("Received from: " + pack.getAddress() + ":" + pack.getPort()); // let's send it back ... pack.setPort(12345); sock.send(pack); } catch (IOException ioe) { System.out.println(ioe); } } } } // public void setUp() throws InterruptedException { Thread t = new Thread(new UdpEchoServer()); t.setDaemon(true); t.start(); // let's give it some time to sleep. Thread.sleep(100); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(UDPTest.class); } @org.junit.Test public void testUDPRelay() throws Exception { // InMemoryTransportFactory t = new InMemoryTransportFactory(); UDPRelay ur = new UDPRelay(t,"localhost", 54321, 12345); // // let's create some test messages. Marshaller m = new Marshaller(); MessageFactory2 mf = new MessageFactory2(); BaseMessage vs = mf.valueSet(new TimeStamp(), "STATE", "1", "M", "100.0"); IPublisher p = t.getPublisher(ETransportType.STATE, "1"); p.send(vs.toByteArray()); // Thread.sleep(100); vs = mf.valueSet(new TimeStamp(), "STATE", "1", "V", "100.0"); p.send(vs.toByteArray()); Thread.sleep(5000); // // } }