Mercurial > lbo > hg > clusterrpc-java
view src/test/java/net/borgac/clusterrpc/JeroMQExploratoryTest.java @ 3:c81cdb1b037d
More exploration tests
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 23 Sep 2016 19:19:18 +0200 |
parents | src/test/java/net/borgac/clusterrpc/JeroMQGeneral.java@9a19a94a5e74 |
children |
line wrap: on
line source
package net.borgac.clusterrpc; import java.util.LinkedList; import java.util.List; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.zeromq.ZMQ; /** * A unit test to explore how JeroMQ works. * * @author lbo */ public class JeroMQExploratoryTest { private static final String address = "inproc://jero-exploration"; private static final String routerAddress = "inproc://jero-exploration-router"; private final ZMQ.Context context; private ZMQ.Socket server, client; private ZMQ.Socket router, routerClient; public JeroMQExploratoryTest() { this.context = ZMQ.context(1); } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { server = context.socket(ZMQ.REP); server.bind(address); client = context.socket(ZMQ.REQ); client.connect(address); router = context.socket(ZMQ.ROUTER); router.bind(routerAddress); routerClient = context.socket(ZMQ.REQ); routerClient.connect(routerAddress); } @After public void tearDown() { server.close(); client.close(); router.close(); routerClient.close(); } @Test public void testReqRep() { client.send("Hello World"); String msg = server.recvStr(); Assert.assertEquals("Hello World", msg); } @Test public void testConcurrentReqRep() throws InterruptedException { Runnable serverThreadCode = () -> { String fromClient = server.recvStr(); Assert.assertEquals("from client", fromClient); server.send("from server"); }; Thread serverThread = new Thread(serverThreadCode); serverThread.start(); Thread.sleep(500); client.send("from client"); String fromServer = client.recvStr(); Assert.assertEquals("from server", fromServer); serverThread.join(); } @Test public void testRouter() throws InterruptedException { routerClient.disconnect(routerAddress); routerClient.setIdentity("id1".getBytes()); routerClient.connect(routerAddress); routerClient.send("Hello"); String id = new String(router.recv()); List<String> parts = new LinkedList<>(); while (router.hasReceiveMore()) { parts.add(router.recvStr()); } Assert.assertEquals(2, parts.size()); Assert.assertEquals("id1", id); Assert.assertEquals("", parts.get(0)); Assert.assertEquals("Hello", parts.get(1)); router.sendMore("id1"); router.sendMore(""); router.send("Hello back"); String reply = routerClient.recvStr(); Assert.assertEquals("Hello back", reply); } @Test public void testEncryption() { // No encryption D: } }