/** * @throws Exception If test failed. */ @Test public void testBothEmptyAttribute() 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(); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // 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; }
Serializable msg1 = getSpiContext().removeSentMessage(getSpiContext().localNode()); Serializable mgs2 = getSpiContext().removeSentMessage(rmtNode1); Serializable msg3 = getSpiContext().removeSentMessage(rmtNode2);
/** * @throws Exception If test failed. */ @Test public void testOnePassiveZeroActive() throws Exception { List<CollisionJobContext> waitCtxs = new ArrayList<>(1); // Add passive. Collections.addAll(waitCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); Collection<CollisionJobContext> activeCtxs = Collections.emptyList(); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Rejected. checkActivated((GridTestCollisionJobContext)waitCtxs.get(0)); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testOnePassiveOneActiveJobs() throws Exception { List<CollisionJobContext> waitCtxs = new ArrayList<>(1); // Add passive. Collections.addAll(waitCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); List<CollisionJobContext> activeCtxs = new ArrayList<>(1); // Add active. Collections.addAll(activeCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Active job. checkNoAction((GridTestCollisionJobContext)activeCtxs.get(0)); // Rejected. checkRejected((GridTestCollisionJobContext)waitCtxs.get(0), rmtNode); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testZeroPassiveOneActive() throws Exception { Collection<CollisionJobContext> empty = Collections.emptyList(); List<CollisionJobContext> activeCtxs = new ArrayList<>(1); // Add active. Collections.addAll(activeCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, empty)); // Active job. checkNoAction((GridTestCollisionJobContext)activeCtxs.get(0)); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testIsStealingOn() 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(); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpi().setStealingEnabled(true); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); // Message should not be sent to remote node because stealing is on assert msg != null; } }
/** * @throws Exception If test failed. */ @Test public void testIsStealingOff() 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(); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpi().setStealingEnabled(false); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); // Message should not be sent to remote node because stealing is off assert msg == null; }
/** * @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 testZeroPassiveZeroActive() throws Exception { Collection<CollisionJobContext> empty = Collections.emptyList(); getSpi().onCollision(new GridCollisionTestContext(empty, empty)); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); JobStealingRequest sentMsg = (JobStealingRequest)getSpiContext().getSentMessage(rmtNode); assert sentMsg != null; assert sentMsg.delta() == 1 : "Invalid sent message: " + sentMsg; Serializable msg = getSpiContext().removeSentMessage(rmtNode); 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 testTwoPassiveJobs() throws Exception { final List<CollisionJobContext> waitCtxs = new ArrayList<>(2); final List<CollisionJobContext> activeCtxs = new ArrayList<>(1); CI1<GridTestCollisionJobContext> lsnr = new CI1<GridTestCollisionJobContext>() { @Override public void apply(GridTestCollisionJobContext c) { if (waitCtxs.remove(c)) activeCtxs.add(c); } }; Collections.addAll(waitCtxs, new GridTestCollisionJobContext(createTaskSession(), 1, lsnr), new GridTestCollisionJobContext(createTaskSession(), 2, lsnr)); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(1)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Activated. checkActivated((GridTestCollisionJobContext)activeCtxs.get(0)); // Rejected. checkRejected((GridTestCollisionJobContext)waitCtxs.get(0), rmtNode); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testMultiplePassiveZeroActive() throws Exception { final List<CollisionJobContext> waitCtxs = new ArrayList<>(2); final List<CollisionJobContext> activeCtxs = new ArrayList<>(2); CI1<GridTestCollisionJobContext> lsnr = new CI1<GridTestCollisionJobContext>() { @Override public void apply(GridTestCollisionJobContext c) { if (waitCtxs.remove(c)) activeCtxs.add(c); } }; Collections.addAll(waitCtxs, new GridTestCollisionJobContext(createTaskSession(), 1, lsnr), new GridTestCollisionJobContext(createTaskSession(), 2, lsnr), new GridTestCollisionJobContext(createTaskSession(), 3, lsnr)); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); // Emulate message to steal 2 jobs. getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(2)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Make sure that one job got activated. checkActivated((GridTestCollisionJobContext)activeCtxs.get(0)); // Rejected. checkRejected((GridTestCollisionJobContext)waitCtxs.get(0), rmtNode); checkRejected((GridTestCollisionJobContext)waitCtxs.get(1), rmtNode); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testEmptyRemoteAttribute() throws Exception { List<CollisionJobContext> waitCtxs = Collections.emptyList(); Collection<CollisionJobContext> activeCtxs = Collections.emptyList(); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); 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)); // 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 not be sent to remote node at it does not have attribute assert msg == null; }
/** * @throws Exception If test failed. */ @Test public void testMultiplePassiveOneActive() throws Exception { List<CollisionJobContext> waitCtxs = new ArrayList<>(2); Collections.addAll(waitCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid()), new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid()), new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); Collection<CollisionJobContext> activeCtxs = new ArrayList<>(1); // Add active. Collections.addAll(activeCtxs, new GridTestCollisionJobContext(createTaskSession(), IgniteUuid.randomUuid())); ClusterNode rmtNode = F.first(getSpiContext().remoteNodes()); // Emulate message to steal 2 jobs. getSpiContext().triggerMessage(rmtNode, new JobStealingRequest(2)); getSpi().onCollision(new GridCollisionTestContext(activeCtxs, waitCtxs)); // Rejected. checkRejected((GridTestCollisionJobContext)waitCtxs.get(0), rmtNode); checkRejected((GridTestCollisionJobContext)waitCtxs.get(1), rmtNode); // Check no action. checkNoAction((GridTestCollisionJobContext)waitCtxs.get(2)); // Make sure that no message was sent. Serializable msg = getSpiContext().removeSentMessage(rmtNode); 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; }
Serializable msg = getSpiContext().removeSentMessage(rmtNode);