diff options
Diffstat (limited to 'src/test/java/pl/edu/mimuw/cloudatlas/agent')
-rw-r--r-- | src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/RemikTest.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/RemikTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/RemikTest.java new file mode 100644 index 0000000..8ac8bed --- /dev/null +++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/RemikTest.java @@ -0,0 +1,61 @@ +package pl.edu.mimuw.cloudatlas.agent.modules; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.HashMap; + +import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage; +import pl.edu.mimuw.cloudatlas.agent.messages.GetStateMessage; +import pl.edu.mimuw.cloudatlas.agent.messages.RequestStateMessage; +import pl.edu.mimuw.cloudatlas.agent.messages.ResponseMessage; +import pl.edu.mimuw.cloudatlas.agent.messages.StanikMessage; +import pl.edu.mimuw.cloudatlas.agent.messages.StateMessage; +import pl.edu.mimuw.cloudatlas.agent.MockExecutor; +import pl.edu.mimuw.cloudatlas.model.ValueTime; +import pl.edu.mimuw.cloudatlas.model.ZMI; + +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; + +public class RemikTest { + private Remik remik; + private MockExecutor executor; + + @Before + public void setupLocals() { + remik = new Remik(); + executor = new MockExecutor(remik); + } + + @Test + public void asksForStateOnStateRequest() throws Exception { + CompletableFuture<ResponseMessage> future = new CompletableFuture(); + RequestStateMessage message = new RequestStateMessage("", 0, future); + remik.handleTyped(message); + AgentMessage receivedMessage = (AgentMessage) executor.messagesToPass.take(); + assertEquals(ModuleType.STATE, receivedMessage.getDestinationModule()); + StanikMessage stanikMessage = (StanikMessage) receivedMessage; + assertEquals(StanikMessage.Type.GET_STATE, stanikMessage.getType()); + GetStateMessage getStateMessage = (GetStateMessage) stanikMessage; + assertEquals(ModuleType.RMI, getStateMessage.getRequestingModule()); + } + + @Test + public void completesFutureOnReceivedState() throws Exception { + CompletableFuture<ResponseMessage> future = new CompletableFuture(); + RequestStateMessage message = new RequestStateMessage("", 0, future); + remik.handleTyped(message); + + ZMI zmi = new ZMI(); + zmi.getAttributes().add("timestamp", new ValueTime(42l)); + StateMessage response = new StateMessage("", ModuleType.RMI, 0, 0, zmi, new HashMap()); + remik.handleTyped(response); + + ResponseMessage passedResponse = future.get(100, TimeUnit.MILLISECONDS); + assertNotNull(passedResponse); + assertEquals(ResponseMessage.Type.STATE, passedResponse.getType()); + StateMessage stateMessage = (StateMessage) passedResponse; + assertEquals(new ValueTime(42l), stateMessage.getZMI().getAttributes().get("timestamp")); + } +} |