/** * @throws Exception If test failed. */ @Test public void testSameAttribute() throws Exception { List<CollisionJobContext> waitCtxs = Collections.emptyList(); Collection<CollisionJobContext> activeCtxs = Collections.emptyList(); GridTestNode rmtNode = (GridTestNode)getSpiContext().remoteNodes().iterator().next(); rmtNode.setAttribute("useCollision", true); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); // Set up the same attribute and value as for remote node. getSpi().setStealingAttributes(F.asMap("useCollision", true)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Cleanup rmtNode.removeAttribute("useCollision"); // Set up the same attribute and value as for remote node. getSpi().setStealingAttributes(Collections.<String, Serializable>emptyMap()); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); // Message should be sent to remote node because it has the same // attributes. assert msg != null; }
/** * @throws Exception If test failed. */ @Test public void testEmptyLocalAttribute() throws Exception { // Collision SPI does not allow to send more than 1 message in a // certain period of time (see getMessageExpireTime() method). // Thus we have to wait for the message to be expired. Thread.sleep(50); List<CollisionJobContext> waitCtxs = Collections.emptyList(); Collection<CollisionJobContext> activeCtxs = Collections.emptyList(); GridTestNode rmtNode = (GridTestNode)F.first(getSpiContext().remoteNodes()); rmtNode.setAttribute("useCollision", true); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Cleanup. rmtNode.removeAttribute("useCollision"); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); // Message should be sent to remote node because it has the same // attributes. assert msg != null; }
/** * @throws Exception If test failed. */ @Test public void testDiffAttribute() throws Exception { List<CollisionJobContext> waitCtxs = Collections.emptyList(); Collection<CollisionJobContext> activeCtxs = Collections.emptyList(); GridTestNode rmtNode = (GridTestNode)F.first(getSpiContext().remoteNodes()); rmtNode.setAttribute("useCollision1", true); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); // Set up the same attribute and value as for remote node. getSpi().setStealingAttributes(F.asMap("useCollision2", true)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Cleanup rmtNode.removeAttribute("useCollision1"); // Set up the same attribute and value as for remote node. getSpi().setStealingAttributes(Collections.<String, Serializable>emptyMap()); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); // Message should be sent to remote node because it has the same // attributes. assert msg == null; }