// -------------------------------------------------------------------------- // Selftest package org.filemq; import static org.junit.Assert.*; import org.junit.Test; import org.zeromq.ZMQ; import org.zeromq.ZMQ.Socket; import org.zeromq.ZContext; public class TestFmqServer { @Test public void testFmqServer () { System.out.printf (" * fmq_server: "); ZContext ctx = new ZContext (); FmqServer self; Socket dealer = ctx.createSocket (ZMQ.DEALER); dealer.setReceiveTimeOut (2000); dealer.connect ("tcp://localhost:5670"); FmqMsg request, reply; // Run selftest using '' configuration self = new FmqServer (); assert (self != null); int port = self.bind ("tcp://*:5670"); assertEquals (port, 5670); request = new FmqMsg (FmqMsg.OHAI); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.SRSLY); reply.destroy (); request = new FmqMsg (FmqMsg.ICANHAZ); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.RTFM); reply.destroy (); request = new FmqMsg (FmqMsg.NOM); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.RTFM); reply.destroy (); request = new FmqMsg (FmqMsg.HUGZ); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.RTFM); reply.destroy (); self.destroy (); // Run selftest using 'anonymous.cfg' configuration self = new FmqServer (); assert (self != null); self.configure ("src/test/resources/anonymous.cfg"); port = self.bind ("tcp://*:5670"); assertEquals (port, 5670); request = new FmqMsg (FmqMsg.OHAI); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.OHAI_OK); reply.destroy (); request = new FmqMsg (FmqMsg.NOM); request.send (dealer); request = new FmqMsg (FmqMsg.HUGZ); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.HUGZ_OK); reply.destroy (); request = new FmqMsg (FmqMsg.YARLY); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.RTFM); reply.destroy (); self.destroy (); // Run selftest using 'server_test.cfg' configuration self = new FmqServer (); assert (self != null); self.configure ("src/test/resources/server_test.cfg"); port = self.bind ("tcp://*:5670"); assertEquals (port, 5670); request = new FmqMsg (FmqMsg.OHAI); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.ORLY); reply.destroy (); request = new FmqMsg (FmqMsg.YARLY); request.setMechanism ("PLAIN"); request.setResponse (FmqSasl.plainEncode ("guest", "guest")); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.OHAI_OK); reply.destroy (); request = new FmqMsg (FmqMsg.NOM); request.send (dealer); request = new FmqMsg (FmqMsg.HUGZ); request.send (dealer); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.HUGZ_OK); reply.destroy (); reply = FmqMsg.recv (dealer); assert (reply != null); assertEquals (reply.id (), FmqMsg.HUGZ); reply.destroy (); self.destroy (); ctx.destroy (); // No clean way to wait for a background thread to exit // Under valgrind this will randomly show as leakage // Reduce this by giving server thread time to exit try {Thread.sleep (200);} catch (Exception e) {}; System.out.printf ("OK\n"); } }