package cz.cuni.mff.d3s.been.socketworks.twoway; import cz.cuni.mff.d3s.been.util.JsonException; import cz.cuni.mff.d3s.been.mq.MessagingException; import cz.cuni.mff.d3s.been.socketworks.SocketHandlerException; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.UUID; import static org.junit.Assert.assertEquals; /** * Test cases for {@link ReadReplyGuard} */ public class ReadReplyGuardTest { private String queueName; private ReadReplyHandlerFactory handlerFactory; private ReadReplyGuard guard; private Requestor requestor; private String request; private String reply; @Before public void setUp() throws MessagingException { queueName = UUID.randomUUID().toString(); handlerFactory = new TestHandlerFactory(); guard = ReadReplyGuard.create("localhost", handlerFactory); guard.listen(); requestor = Requestor.create(guard.getConnection()); request = "request"; reply = "reply"; } @After public void tearDown() throws MessagingException { requestor.close(); guard.terminate(); } @Test(timeout = 2000) public void testEmptyShutdown() { // just dry run without requesting anything } @Test(timeout = 2000) public void testRequestReply() throws InterruptedException, JsonException { final String reply = requestor.request(request); assertEquals(this.reply, reply); } //@Test public void testConcurrentRequests() throws InterruptedException { requestor.request(request); requestor.request(request); } // DUMMY REQUEST HANDLER IMPLEMENTATIONS class TestHandlerFactory implements ReadReplyHandlerFactory { @Override public ReadReplyHandler getHandler() { return new TestHandler(); } } class TestHandler implements ReadReplyHandler { @Override public String handle(String message) throws SocketHandlerException, InterruptedException { return reply; } @Override public void markAsRecyclable() { } } }