http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java new file mode 100644 index 0000000..232db9e --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java @@ -0,0 +1,126 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.roundrobin; + +import org.apache.ignite.cluster.*; +import org.apache.ignite.compute.*; +import org.apache.ignite.events.*; +import org.apache.ignite.lang.*; +import org.gridgain.grid.*; +import org.gridgain.testframework.*; +import org.gridgain.testframework.junits.spi.*; + +import java.util.*; + +import static org.apache.ignite.events.IgniteEventType.*; + +/** + * Tests round robin load balancing SPI. + */ +@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest + extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { + /** {@inheritDoc} */ + @Override protected void spiConfigure(RoundRobinLoadBalancingSpi spi) throws Exception { + super.spiConfigure(spi); + + spi.setPerTask(true); + } + + /** {@inheritDoc} */ + @Override protected GridSpiTestContext initSpiContext() throws Exception { + GridSpiTestContext spiCtx = super.initSpiContext(); + + spiCtx.createLocalNode(); + spiCtx.createRemoteNodes(10); + + return spiCtx; + } + + /** + * @throws Exception If test failed. + */ + @SuppressWarnings({"ObjectEquality"}) + public void testMultipleNodes() throws Exception { + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); + + // Initialize. + getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); + + List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses)); + + // Check the round-robin actually did circle. + for (int i = 0; i < allNodes.size(); i++) { + ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); + + assert orderedNodes.get(i) == node.id(); + } + + // Double-check. + for (int i = 0; i < allNodes.size(); i++) { + ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); + + assert orderedNodes.get(i) == node.id(); + } + } + + /** + * @throws Exception If test failed. + */ + @SuppressWarnings({"ObjectEquality"}) + public void testMultipleTasks() throws Exception { + ComputeTaskSession ses1 = new GridTestTaskSession(IgniteUuid.randomUuid()); + ComputeTaskSession ses2 = new GridTestTaskSession(IgniteUuid.randomUuid()); + + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + // Initialize. + getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); + getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); + + List<UUID> orderedNodes1 = getSpi().getNodeIds(ses1); + List<UUID> orderedNodes2 = getSpi().getNodeIds(ses2); + + assert orderedNodes1 != orderedNodes2; + + // Check the round-robin actually did circle. + for (int i = 0; i < allNodes.size(); i++) { + ClusterNode node1 = getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); + + assert orderedNodes1.get(i) == node1.id(); + + ClusterNode node2 = getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); + + assert orderedNodes2.get(i) == node2.id(); + + assert orderedNodes1.get(i) == orderedNodes2.get(i); + } + + // Double-check. + for (int i = 0; i < allNodes.size(); i++) { + ClusterNode node1 = getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); + + assert orderedNodes1.get(i) == node1.id(); + + ClusterNode node2 = getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); + + assert orderedNodes2.get(i) == node2.id(); + + assert orderedNodes1.get(i) == orderedNodes2.get(i); + } + + getSpiContext().triggerEvent(new IgniteTaskEvent( + null, null, EVT_TASK_FINISHED, ses1.getId(), null, null, false, null)); + getSpiContext().triggerEvent(new IgniteTaskEvent( + null, null, EVT_TASK_FAILED, ses2.getId(), null, null, false, null)); + } +}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java new file mode 100644 index 0000000..a46b75f --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java @@ -0,0 +1,121 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.roundrobin; + +import org.apache.ignite.cluster.*; +import org.apache.ignite.compute.*; +import org.apache.ignite.events.*; +import org.apache.ignite.lang.*; +import org.gridgain.grid.*; +import org.gridgain.testframework.*; +import org.gridgain.testframework.junits.spi.*; + +import java.util.*; + +import static org.apache.ignite.events.IgniteEventType.*; +import static org.apache.ignite.spi.loadbalancing.roundrobin.GridRoundRobinTestUtils.*; + +/** + * Tests round robin load balancing. + */ +@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest + extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { + /** + * @return Per-task configuration parameter. + */ + @GridSpiTestConfig + public boolean getPerTask() { + return false; + } + + /** {@inheritDoc} */ + @Override protected GridSpiTestContext initSpiContext() throws Exception { + GridSpiTestContext spiCtx = super.initSpiContext(); + + spiCtx.createLocalNode(); + spiCtx.createRemoteNodes(10); + + return spiCtx; + } + + /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + assert !getSpi().isPerTask() : "Invalid SPI configuration."; + } + + /** + * @throws Exception If test failed. + */ + public void testMultipleNodes() throws Exception { + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + ComputeTaskSession ses = new GridTestTaskSession(); + + List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses)); + + assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size()); + + checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); + } + + /** + * @throws Exception If test failed. + */ + public void testMultipleTaskSessions() throws Exception { + ComputeTaskSession ses1 = new GridTestTaskSession(IgniteUuid.randomUuid()); + ComputeTaskSession ses2 = new GridTestTaskSession(IgniteUuid.randomUuid()); + + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + List<UUID> orderedNodes = getSpi().getNodeIds(ses1); + + assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size()); + + checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses1, ses2); + + getSpiContext().triggerEvent(new IgniteTaskEvent( + null, null, EVT_TASK_FINISHED, ses1.getId(), null, null, false, null)); + getSpiContext().triggerEvent(new IgniteTaskEvent( + null, null, EVT_TASK_FAILED, ses2.getId(), null, null, false, null)); + } + + /** + * @throws Exception If test failed. + */ + public void testBalancingOneNode() throws Exception { + ComputeTaskSession ses = new GridTestTaskSession(); + + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + List<ClusterNode> balancedNode = Arrays.asList(allNodes.get(0)); + + ClusterNode firstNode = getSpi().getBalancedNode(ses, balancedNode, new GridTestJob()); + ClusterNode secondNode = getSpi().getBalancedNode(ses, balancedNode, new GridTestJob()); + + assertEquals(firstNode, secondNode); + } + + /** */ + public void testNodeNotInTopology() { + ComputeTaskSession ses = new GridTestTaskSession(); + + ClusterNode node = new GridTestNode(UUID.randomUUID()); + + List<ClusterNode> notInTop = Arrays.asList(node); + + try { + getSpi().getBalancedNode(ses, notInTop, new GridTestJob()); + } + catch (GridException e) { + assertTrue(e.getMessage().contains("Task topology does not have alive nodes")); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java new file mode 100644 index 0000000..6aa1c92 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java @@ -0,0 +1,23 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.roundrobin; + +import org.gridgain.grid.spi.*; +import org.gridgain.testframework.junits.spi.*; + +/** + * Tests correct start of {@link RoundRobinLoadBalancingSpi}. + */ +@SuppressWarnings({"JUnitTestCaseWithNoTests"}) +@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "LoadBalancing SPI") +public class GridRoundRobinLoadBalancingSpiStartStopSelfTest + extends GridSpiStartStopAbstractTest<RoundRobinLoadBalancingSpi> { + // No configs. +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java new file mode 100644 index 0000000..3a148ed --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java @@ -0,0 +1,98 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.roundrobin; + +import org.apache.ignite.cluster.*; +import org.apache.ignite.compute.*; +import org.apache.ignite.lang.*; +import org.gridgain.grid.*; +import org.gridgain.testframework.*; +import org.gridgain.testframework.junits.spi.*; + +import java.util.*; + +import static org.apache.ignite.spi.loadbalancing.roundrobin.GridRoundRobinTestUtils.*; + +/** + * Tests round robin load balancing with topology changes. + */ +@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest + extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { + /** + * @return Per-task configuration parameter. + */ + @GridSpiTestConfig + public boolean getPerTask() { return false; } + + /** {@inheritDoc} */ + @Override protected GridSpiTestContext initSpiContext() throws Exception { + GridSpiTestContext spiCtx = super.initSpiContext(); + + spiCtx.createLocalNode(); + spiCtx.createRemoteNodes(10); + + return spiCtx; + } + + /** + * @throws Exception If failed. + */ + public void testTopologyChange() throws Exception { + ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); + + // Warm up. + List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); + + List<UUID> orderedNodes = getSpi().getNodeIds(ses); + + checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); + + // Remove node. + UUID doomed = orderedNodes.get(0); + + if (getSpiContext().localNode().id().equals(doomed)) + doomed = orderedNodes.get(1); + + getSpiContext().removeNode(doomed); + + assertTrue(allNodes.remove(new GridTestNode(doomed))); + + orderedNodes = getSpi().getNodeIds(ses); + + assertFalse("Balancer uses removed node", orderedNodes.contains(doomed)); + + checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); + + // Add node. + ClusterNode newNode = new GridTestNode(UUID.randomUUID()); + + getSpiContext().addNode(newNode); + + assertTrue(allNodes.add(newNode)); + + // Check that new node was added to balancing. + boolean foundNewNode = false; + + for (int i = 0; i < allNodes.size(); i++) { + ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); + if (newNode.id().equals(node.id())) { + foundNewNode = true; + break; + } + } + + assertTrue("Balancer doesn't use added node", foundNewNode); + + orderedNodes = getSpi().getNodeIds(ses); + + checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java new file mode 100644 index 0000000..fc3fbc4 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java @@ -0,0 +1,95 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.roundrobin; + +import org.apache.ignite.cluster.*; +import org.apache.ignite.compute.*; +import org.gridgain.grid.*; + +import java.util.*; + +import static org.junit.Assert.*; + +/** + * Helper class for balancer tests. + */ +class GridRoundRobinTestUtils { + /** + * Performs two full cycles by round robin routine for check correct order. + * + * @param spi Load balancing SPI. + * @param allNodes Topology nodes. + * @param orderedNodes Balancing nodes. + * @param ses Task session. + * @throws GridException If balancer failed. + */ + static void checkCyclicBalancing(RoundRobinLoadBalancingSpi spi, List<ClusterNode> allNodes, + List<UUID> orderedNodes, ComputeTaskSession ses) throws GridException { + + ClusterNode firstNode = spi.getBalancedNode(ses, allNodes, new GridTestJob()); + + int startIdx = firstBalancedNodeIndex(firstNode, orderedNodes); + + // Two full cycles by round robin routine. + for (int i = 0; i < allNodes.size() * 2; i++) { + int actualIdx = (startIdx + i + 1) % allNodes.size(); + + ClusterNode nextNode = spi.getBalancedNode(ses, allNodes, new GridTestJob()); + + assertEquals("Balancer returns node out of order", nextNode.id(), orderedNodes.get(actualIdx)); + } + } + + /** + * Performs two full cycles by round robin routine for check correct order. + * Switches between two task sessions by turns. + * + * @param spi Load balancing SPI. + * @param allNodes Topology nodes. + * @param orderedNodes Balancing nodes. + * @param ses1 First task session. + * @param ses2 Second task session. + * @throws GridException If balancer failed. + */ + static void checkCyclicBalancing(RoundRobinLoadBalancingSpi spi, List<ClusterNode> allNodes, + List<UUID> orderedNodes, ComputeTaskSession ses1, ComputeTaskSession ses2) throws GridException { + + ClusterNode firstNode = spi.getBalancedNode(ses1, allNodes, new GridTestJob()); + + int startIdx = firstBalancedNodeIndex(firstNode, orderedNodes); + + // Two full cycles by round robin routine. + for (int i = 0; i < allNodes.size() * 2; i++) { + int actualIdx = (startIdx + i + 1) % allNodes.size(); + + ClusterNode nextNode = spi.getBalancedNode(i % 2 == 0 ? ses1 : ses2, allNodes, new GridTestJob()); + + assertEquals("Balancer returns node out of order", nextNode.id(), orderedNodes.get(actualIdx)); + } + } + + /** + * @param firstNode First node which was return by balancer. + * @param orderedNodes Balancing nodes. + * @return Index of first node which was return by balancer. + */ + static int firstBalancedNodeIndex(ClusterNode firstNode, List<UUID> orderedNodes) { + int startIdx = -1; + + for (int i = 0; i < orderedNodes.size(); i++) { + if (firstNode.id() == orderedNodes.get(i)) + startIdx = i; + } + + assertTrue("Can't find position of first balanced node", startIdx >= 0); + + return startIdx; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/package.html b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/package.html new file mode 100644 index 0000000..5cad80a --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/package.html @@ -0,0 +1,15 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- + @html.file.header + _________ _____ __________________ _____ + __ ____/___________(_)______ /__ ____/______ ____(_)_______ + _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ +--> +<html> +<body> + <!-- Package description. --> + Contains internal tests or test related classes and interfaces. +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java new file mode 100644 index 0000000..ec55882 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java @@ -0,0 +1,26 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.weightedrandom; + +import org.gridgain.testframework.junits.spi.*; + +/** + * + */ +@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridWeightedRandomLoadBalancingSpiConfigSelfTest extends + GridSpiAbstractConfigTest<WeightedRandomLoadBalancingSpi> { + /** + * @throws Exception If failed. + */ + public void testNegativeConfig() throws Exception { + checkNegativeSpiProperty(new WeightedRandomLoadBalancingSpi(), "nodeWeight", 0); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java new file mode 100644 index 0000000..3658582 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java @@ -0,0 +1,58 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.weightedrandom; + +import org.apache.ignite.cluster.*; +import org.gridgain.grid.*; +import org.gridgain.testframework.*; +import org.gridgain.testframework.junits.spi.*; +import java.util.*; + +/** + * Weighted random load balancing SPI. + */ +@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridWeightedRandomLoadBalancingSpiSelfTest extends + GridSpiAbstractTest<WeightedRandomLoadBalancingSpi> { + /** + * @throws Exception If failed. + */ + @SuppressWarnings({"ObjectEquality"}) + public void testSingleNode() throws Exception { + List<ClusterNode> nodes = Collections.singletonList((ClusterNode)new GridTestNode(UUID.randomUUID())); + + ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); + + assert nodes.contains(node); + + // Verify that same instance is returned every time. + ClusterNode balancedNode = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); + + assert node == balancedNode; + } + + /** + * @throws Exception If failed. + */ + public void testMultipleNodes() throws Exception { + List<ClusterNode> nodes = new ArrayList<>(); + + for (int i = 0; i < 10; i++) + nodes.add(new GridTestNode(UUID.randomUUID())); + + // Seal it. + nodes = Collections.unmodifiableList(nodes); + + ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); + + assert node != null; + assert nodes.contains(node); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java new file mode 100644 index 0000000..c05a33e --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java @@ -0,0 +1,23 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.weightedrandom; + +import org.gridgain.grid.spi.*; +import org.gridgain.testframework.junits.spi.*; + +/** + * Wighted random load balancing SPI start-stop test. + */ +@SuppressWarnings({"JUnitTestCaseWithNoTests"}) +@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "LoadBalancing SPI") +public class GridWeightedRandomLoadBalancingSpiStartStopSelfTest extends + GridSpiStartStopAbstractTest<WeightedRandomLoadBalancingSpi> { + // No configs. +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java new file mode 100644 index 0000000..835c163 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java @@ -0,0 +1,73 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.spi.loadbalancing.weightedrandom; + +import org.apache.ignite.cluster.*; +import org.apache.ignite.lang.*; +import org.gridgain.grid.*; +import org.gridgain.grid.util.typedef.internal.*; +import org.gridgain.testframework.*; +import org.gridgain.testframework.junits.spi.*; +import java.util.*; + +import static org.apache.ignite.spi.loadbalancing.weightedrandom.WeightedRandomLoadBalancingSpi.*; + +/** + * {@link WeightedRandomLoadBalancingSpi} self test. + */ +@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") +public class GridWeightedRandomLoadBalancingSpiWeightedSelfTest + extends GridSpiAbstractTest<WeightedRandomLoadBalancingSpi> { + /** + * @return {@code True} if node weights should be considered. + */ + @GridSpiTestConfig + public boolean getUseWeights() { + return true; + } + + /** + * @throws Exception If test failed. + */ + public void testWeights() throws Exception { + List<ClusterNode> nodes = new ArrayList<>(); + + for (int i = 0; i < 10; i++) { + GridTestNode node = new GridTestNode(UUID.randomUUID()); + + node.addAttribute(U.spiAttribute(getSpi(), NODE_WEIGHT_ATTR_NAME), i + 1); + + nodes.add(node); + } + + // Seal it. + nodes = Collections.unmodifiableList(nodes); + + int[] cnts = new int[10]; + + // Invoke load balancer a large number of times, so statistics won't lie. + for (int i = 0; i < 100000; i++) { + ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), nodes, + new GridTestJob()); + + int weight = (Integer)node.attribute(U.spiAttribute(getSpi(), NODE_WEIGHT_ATTR_NAME)); + + // Increment number of times a node was picked. + cnts[weight - 1]++; + } + + for (int i = 0; i < cnts.length - 1; i++) { + assert cnts[i] < cnts[i + 1] : "Invalid node counts for index [idx=" + i + ", cnts[i]=" + cnts[i] + + ", cnts[i+1]=" + cnts[i + 1] + ']'; + } + + info("Node counts: " + Arrays.toString(cnts)); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/package.html b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/package.html new file mode 100644 index 0000000..5cad80a --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/weightedrandom/package.html @@ -0,0 +1,15 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- + @html.file.header + _________ _____ __________________ _____ + __ ____/___________(_)______ /__ ____/______ ____(_)_______ + _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ +--> +<html> +<body> + <!-- Package description. --> + Contains internal tests or test related classes and interfaces. +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/kernal/GridMultipleSpisSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridMultipleSpisSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridMultipleSpisSelfTest.java index ba5e3b0..3585fc5 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridMultipleSpisSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/GridMultipleSpisSelfTest.java @@ -19,7 +19,7 @@ import org.gridgain.grid.*; import org.apache.ignite.spi.checkpoint.sharedfs.*; import org.apache.ignite.spi.failover.*; import org.apache.ignite.spi.failover.always.*; -import org.gridgain.grid.spi.loadbalancing.roundrobin.*; +import org.apache.ignite.spi.loadbalancing.roundrobin.*; import org.gridgain.testframework.junits.common.*; import java.util.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/kernal/managers/GridManagerStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/managers/GridManagerStopSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/managers/GridManagerStopSelfTest.java index d682e4e..9209a34 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/managers/GridManagerStopSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/managers/GridManagerStopSelfTest.java @@ -35,7 +35,7 @@ import org.apache.ignite.spi.discovery.tcp.*; import org.apache.ignite.spi.eventstorage.*; import org.apache.ignite.spi.eventstorage.memory.*; import org.apache.ignite.spi.failover.always.*; -import org.gridgain.grid.spi.loadbalancing.roundrobin.*; +import org.apache.ignite.spi.loadbalancing.roundrobin.*; import org.gridgain.grid.spi.swapspace.*; import org.gridgain.grid.spi.swapspace.file.*; import org.gridgain.testframework.junits.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiConfigSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiConfigSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiConfigSelfTest.java deleted file mode 100644 index 8e080e8..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiConfigSelfTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.adaptive; - -import org.gridgain.testframework.junits.spi.*; - -/** - * - */ -@GridSpiTest(spi = AdaptiveLoadBalancingSpi.class, group = "LoadBalancing SPI") -public class GridAdaptiveLoadBalancingSpiConfigSelfTest - extends GridSpiAbstractConfigTest<AdaptiveLoadBalancingSpi> { - /** - * @throws Exception If failed. - */ - public void testNegativeConfig() throws Exception { - checkNegativeSpiProperty(new AdaptiveLoadBalancingSpi(), "loadProbe", null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiMultipleNodeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiMultipleNodeSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiMultipleNodeSelfTest.java deleted file mode 100644 index 33e1a18..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiMultipleNodeSelfTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.adaptive; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; -import java.util.*; - -/** - * Tests adaptive load balancing SPI. - */ -@GridSpiTest(spi = AdaptiveLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridAdaptiveLoadBalancingSpiMultipleNodeSelfTest extends GridSpiAbstractTest<AdaptiveLoadBalancingSpi> { - /** */ - private static final int RMT_NODE_CNT = 10; - - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext ctx = super.initSpiContext(); - - for (int i = 0; i < RMT_NODE_CNT; i++) { - GridTestNode node = new GridTestNode(UUID.randomUUID()); - - node.setAttribute("load", (double)(i + 1)); - - ctx.addNode(node); - } - - return ctx; - } - - /** - * @return {@code True} if node weights should be considered. - */ - @GridSpiTestConfig - public AdaptiveLoadProbe getLoadProbe() { - return new AdaptiveLoadProbe() { - @Override public double getLoad(ClusterNode node, int jobsSentSinceLastUpdate) { - boolean isFirstTime = node.attribute("used") == null; - - assert isFirstTime ? jobsSentSinceLastUpdate == 0 : jobsSentSinceLastUpdate > 0; - - return (Double)node.attribute("load"); - } - }; - } - /** - * @throws Exception If failed. - */ - public void testWeights() throws Exception { - // Seal it. - List<ClusterNode> nodes = new ArrayList<>(getSpiContext().remoteNodes()); - - int[] cnts = new int[RMT_NODE_CNT]; - - // Invoke load balancer a large number of times, so statistics won't lie. - for (int i = 0; i < 50000; i++) { - GridTestNode node = (GridTestNode)getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), - nodes, new GridTestJob()); - - int idx = ((Double)node.attribute("load")).intValue() - 1; - - if (cnts[idx] == 0) - node.setAttribute("used", true); - - // Increment number of times a node was picked. - cnts[idx]++; - } - - info("Node counts: " + Arrays.toString(cnts)); - - for (int i = 0; i < cnts.length - 1; i++) { - assert cnts[i] > cnts[i + 1] : "Invalid node counts for index [idx=" + i + ", cnts[i]=" + cnts[i] + - ", cnts[i+1]=" + cnts[i + 1] + ']'; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiSelfTest.java deleted file mode 100644 index 8a3a2c5..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiSelfTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.adaptive; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; - -import java.util.*; - -/** - * Tests adaptive load balancing SPI. - */ -@GridSpiTest(spi = AdaptiveLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridAdaptiveLoadBalancingSpiSelfTest extends GridSpiAbstractTest<AdaptiveLoadBalancingSpi> { - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext ctx = super.initSpiContext(); - - ctx.setLocalNode(new GridTestNode(UUID.randomUUID())); - - return ctx; - } - - /** - * @return {@code True} if node weights should be considered. - */ - @GridSpiTestConfig - public AdaptiveLoadProbe getLoadProbe() { - return new AdaptiveLoadProbe() { - @Override public double getLoad(ClusterNode node, int jobsSentSinceLastUpdate) { - boolean isFirstTime = node.attribute("used") == null; - - assert isFirstTime ? jobsSentSinceLastUpdate == 0 : jobsSentSinceLastUpdate > 0; - - return (Double)node.attribute("load"); - } - }; - } - - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testSingleNodeZeroWeight() throws Exception { - GridTestNode node = (GridTestNode)getSpiContext().nodes().iterator().next(); - - node.addAttribute("load", 0d); - - List<ClusterNode> nodes = Collections.singletonList((ClusterNode)node); - - ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); - - GridTestNode pick1 = (GridTestNode)getSpi().getBalancedNode(ses, nodes, new GridTestJob()); - - pick1.setAttribute("used", true); - - assert nodes.contains(pick1); - - // Verify that same instance is returned every time. - ClusterNode pick2 = getSpi().getBalancedNode(ses, nodes, new GridTestJob()); - - assert pick1 == pick2; - } - - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testSingleNodeSameSession() throws Exception { - GridTestNode node = (GridTestNode)getSpiContext().nodes().iterator().next(); - - node.addAttribute("load", 1d); - - List<ClusterNode> nodes = Collections.singletonList((ClusterNode)node); - - ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); - - GridTestNode pick1 = (GridTestNode)getSpi().getBalancedNode(ses, nodes, new GridTestJob()); - - pick1.setAttribute("used", true); - - assert nodes.contains(pick1); - - // Verify that same instance is returned every time. - ClusterNode pick2 = getSpi().getBalancedNode(ses, nodes, new GridTestJob()); - - assert pick1 == pick2; - } - - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testSingleNodeDifferentSession() throws Exception { - GridTestNode node = (GridTestNode)getSpiContext().nodes().iterator().next(); - - node.addAttribute("load", 2d); - - List<ClusterNode> nodes = Collections.singletonList((ClusterNode)node); - - GridTestNode pick1 = (GridTestNode)getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), - nodes, new GridTestJob()); - - pick1.setAttribute("used", true); - - assert nodes.contains(pick1); - - // Verify that same instance is returned every time. - ClusterNode pick2 = getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), nodes, - new GridTestJob()); - - assert pick1 == pick2; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiStartStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiStartStopSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiStartStopSelfTest.java deleted file mode 100644 index 19876e7..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/GridAdaptiveLoadBalancingSpiStartStopSelfTest.java +++ /dev/null @@ -1,23 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.adaptive; - -import org.gridgain.grid.spi.*; -import org.gridgain.testframework.junits.spi.*; - -/** - * Adaptive load balancing SPI start-stop test. - */ -@SuppressWarnings({"JUnitTestCaseWithNoTests"}) -@GridSpiTest(spi = AdaptiveLoadBalancingSpi.class, group = "LoadBalancing SPI") -public class GridAdaptiveLoadBalancingSpiStartStopSelfTest extends - GridSpiStartStopAbstractTest<AdaptiveLoadBalancingSpi> { - // No configs. -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/package.html b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/package.html deleted file mode 100644 index 5cad80a..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/adaptive/package.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - @html.file.header - _________ _____ __________________ _____ - __ ____/___________(_)______ /__ ____/______ ____(_)_______ - _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ ---> -<html> -<body> - <!-- Package description. --> - Contains internal tests or test related classes and interfaces. -</body> -</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/package.html b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/package.html deleted file mode 100644 index 5cad80a..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/package.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - @html.file.header - _________ _____ __________________ _____ - __ ____/___________(_)______ /__ ____/______ ____(_)_______ - _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ ---> -<html> -<body> - <!-- Package description. --> - Contains internal tests or test related classes and interfaces. -</body> -</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingNotPerTaskMultithreadedSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingNotPerTaskMultithreadedSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingNotPerTaskMultithreadedSelfTest.java deleted file mode 100644 index ff420e7..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingNotPerTaskMultithreadedSelfTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; - -import java.util.*; -import java.util.concurrent.*; -import java.util.concurrent.atomic.*; - -/** - * Multithreaded tests for global load balancer. - */ -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridRoundRobinLoadBalancingNotPerTaskMultithreadedSelfTest - extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { - /** Thread count. */ - public static final int THREAD_CNT = 8; - - /** Per-thread iteration count. */ - public static final int ITER_CNT = 4_000_000; - - /** - * @return Per-task configuration parameter. - */ - @GridSpiTestConfig - public boolean getPerTask() { - return false; - } - - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext spiCtx = super.initSpiContext(); - - spiCtx.createLocalNode(); - spiCtx.createRemoteNodes(10); - - return spiCtx; - } - - /** {@inheritDoc} */ - @Override protected void beforeTest() throws Exception { - assert !getSpi().isPerTask() : "Invalid SPI configuration."; - } - - /** - * - * @throws Exception If failed. - */ - public void testMultipleTaskSessionsMultithreaded() throws Exception { - final RoundRobinLoadBalancingSpi spi = getSpi(); - - final List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - GridTestUtils.runMultiThreaded(new Callable<Object>() { - @Override public Object call() throws Exception { - ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); - - Map<UUID, AtomicInteger> nodeCnts = new HashMap<>(); - - for (int i = 1; i <= ITER_CNT; i++) { - ClusterNode node = spi.getBalancedNode(ses, allNodes, new GridTestJob()); - - if (!nodeCnts.containsKey(node.id())) - nodeCnts.put(node.id(), new AtomicInteger(1)); - else - nodeCnts.get(node.id()).incrementAndGet(); - } - - int predictCnt = ITER_CNT / allNodes.size(); - - // Consider +-20% is permissible spread for single node measure. - int floor = (int)(predictCnt * 0.8); - - double avgSpread = 0; - - for (ClusterNode n : allNodes) { - int curCnt = nodeCnts.get(n.id()).intValue(); - - avgSpread += Math.abs(predictCnt - curCnt); - - String msg = "Node stats [id=" + n.id() + ", cnt=" + curCnt + ", floor=" + floor + - ", predictCnt=" + predictCnt + ']'; - - info(msg); - - assertTrue(msg, curCnt >= floor); - } - - avgSpread /= allNodes.size(); - - avgSpread = 100.0 * avgSpread / predictCnt; - - info("Average spread for " + allNodes.size() + " nodes is " + avgSpread + " percents"); - - // Consider +-10% is permissible average spread for all nodes. - assertTrue("Average spread is too big: " + avgSpread, avgSpread <= 10); - - return null; - } - }, THREAD_CNT, "balancer-test-worker"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiLocalNodeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiLocalNodeSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiLocalNodeSelfTest.java deleted file mode 100644 index ab992cf..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiLocalNodeSelfTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.junits.spi.*; -import java.util.*; - -/** - * Tests Round Robin load balancing for single node. - */ -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI", triggerDiscovery = true) -public class GridRoundRobinLoadBalancingSpiLocalNodeSelfTest extends - GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testLocalNode() throws Exception { - assert getDiscoverySpi().getRemoteNodes().isEmpty(); - - ClusterNode locNode = getDiscoverySpi().getLocalNode(); - - ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), - Collections.singletonList(locNode), new GridTestJob()); - - assert node == locNode; - - // Double check. - node = getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), - Collections.singletonList(locNode), new GridTestJob()); - - assert node == locNode; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java deleted file mode 100644 index 0ab487f..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.events.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; - -import java.util.*; - -import static org.apache.ignite.events.IgniteEventType.*; - -/** - * Tests round robin load balancing SPI. - */ -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest - extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { - /** {@inheritDoc} */ - @Override protected void spiConfigure(RoundRobinLoadBalancingSpi spi) throws Exception { - super.spiConfigure(spi); - - spi.setPerTask(true); - } - - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext spiCtx = super.initSpiContext(); - - spiCtx.createLocalNode(); - spiCtx.createRemoteNodes(10); - - return spiCtx; - } - - /** - * @throws Exception If test failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testMultipleNodes() throws Exception { - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); - - // Initialize. - getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); - - List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses)); - - // Check the round-robin actually did circle. - for (int i = 0; i < allNodes.size(); i++) { - ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); - - assert orderedNodes.get(i) == node.id(); - } - - // Double-check. - for (int i = 0; i < allNodes.size(); i++) { - ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); - - assert orderedNodes.get(i) == node.id(); - } - } - - /** - * @throws Exception If test failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testMultipleTasks() throws Exception { - ComputeTaskSession ses1 = new GridTestTaskSession(IgniteUuid.randomUuid()); - ComputeTaskSession ses2 = new GridTestTaskSession(IgniteUuid.randomUuid()); - - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - // Initialize. - getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); - getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); - - List<UUID> orderedNodes1 = getSpi().getNodeIds(ses1); - List<UUID> orderedNodes2 = getSpi().getNodeIds(ses2); - - assert orderedNodes1 != orderedNodes2; - - // Check the round-robin actually did circle. - for (int i = 0; i < allNodes.size(); i++) { - ClusterNode node1 = getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); - - assert orderedNodes1.get(i) == node1.id(); - - ClusterNode node2 = getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); - - assert orderedNodes2.get(i) == node2.id(); - - assert orderedNodes1.get(i) == orderedNodes2.get(i); - } - - // Double-check. - for (int i = 0; i < allNodes.size(); i++) { - ClusterNode node1 = getSpi().getBalancedNode(ses1, allNodes, new GridTestJob()); - - assert orderedNodes1.get(i) == node1.id(); - - ClusterNode node2 = getSpi().getBalancedNode(ses2, allNodes, new GridTestJob()); - - assert orderedNodes2.get(i) == node2.id(); - - assert orderedNodes1.get(i) == orderedNodes2.get(i); - } - - getSpiContext().triggerEvent(new IgniteTaskEvent( - null, null, EVT_TASK_FINISHED, ses1.getId(), null, null, false, null)); - getSpiContext().triggerEvent(new IgniteTaskEvent( - null, null, EVT_TASK_FAILED, ses2.getId(), null, null, false, null)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java deleted file mode 100644 index 2d11283..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.events.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; - -import java.util.*; - -import static org.apache.ignite.events.IgniteEventType.*; -import static org.gridgain.grid.spi.loadbalancing.roundrobin.GridRoundRobinTestUtils.*; - -/** - * Tests round robin load balancing. - */ -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest - extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { - /** - * @return Per-task configuration parameter. - */ - @GridSpiTestConfig - public boolean getPerTask() { - return false; - } - - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext spiCtx = super.initSpiContext(); - - spiCtx.createLocalNode(); - spiCtx.createRemoteNodes(10); - - return spiCtx; - } - - /** {@inheritDoc} */ - @Override protected void beforeTest() throws Exception { - assert !getSpi().isPerTask() : "Invalid SPI configuration."; - } - - /** - * @throws Exception If test failed. - */ - public void testMultipleNodes() throws Exception { - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - ComputeTaskSession ses = new GridTestTaskSession(); - - List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses)); - - assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size()); - - checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); - } - - /** - * @throws Exception If test failed. - */ - public void testMultipleTaskSessions() throws Exception { - ComputeTaskSession ses1 = new GridTestTaskSession(IgniteUuid.randomUuid()); - ComputeTaskSession ses2 = new GridTestTaskSession(IgniteUuid.randomUuid()); - - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - List<UUID> orderedNodes = getSpi().getNodeIds(ses1); - - assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size()); - - checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses1, ses2); - - getSpiContext().triggerEvent(new IgniteTaskEvent( - null, null, EVT_TASK_FINISHED, ses1.getId(), null, null, false, null)); - getSpiContext().triggerEvent(new IgniteTaskEvent( - null, null, EVT_TASK_FAILED, ses2.getId(), null, null, false, null)); - } - - /** - * @throws Exception If test failed. - */ - public void testBalancingOneNode() throws Exception { - ComputeTaskSession ses = new GridTestTaskSession(); - - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - List<ClusterNode> balancedNode = Arrays.asList(allNodes.get(0)); - - ClusterNode firstNode = getSpi().getBalancedNode(ses, balancedNode, new GridTestJob()); - ClusterNode secondNode = getSpi().getBalancedNode(ses, balancedNode, new GridTestJob()); - - assertEquals(firstNode, secondNode); - } - - /** */ - public void testNodeNotInTopology() { - ComputeTaskSession ses = new GridTestTaskSession(); - - ClusterNode node = new GridTestNode(UUID.randomUUID()); - - List<ClusterNode> notInTop = Arrays.asList(node); - - try { - getSpi().getBalancedNode(ses, notInTop, new GridTestJob()); - } - catch (GridException e) { - assertTrue(e.getMessage().contains("Task topology does not have alive nodes")); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java deleted file mode 100644 index bc8baf8..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiStartStopSelfTest.java +++ /dev/null @@ -1,23 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.gridgain.grid.spi.*; -import org.gridgain.testframework.junits.spi.*; - -/** - * Tests correct start of {@link RoundRobinLoadBalancingSpi}. - */ -@SuppressWarnings({"JUnitTestCaseWithNoTests"}) -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "LoadBalancing SPI") -public class GridRoundRobinLoadBalancingSpiStartStopSelfTest - extends GridSpiStartStopAbstractTest<RoundRobinLoadBalancingSpi> { - // No configs. -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java deleted file mode 100644 index 54d9d49..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; - -import java.util.*; - -import static org.gridgain.grid.spi.loadbalancing.roundrobin.GridRoundRobinTestUtils.*; - -/** - * Tests round robin load balancing with topology changes. - */ -@GridSpiTest(spi = RoundRobinLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridRoundRobinLoadBalancingSpiTopologyChangeSelfTest - extends GridSpiAbstractTest<RoundRobinLoadBalancingSpi> { - /** - * @return Per-task configuration parameter. - */ - @GridSpiTestConfig - public boolean getPerTask() { return false; } - - /** {@inheritDoc} */ - @Override protected GridSpiTestContext initSpiContext() throws Exception { - GridSpiTestContext spiCtx = super.initSpiContext(); - - spiCtx.createLocalNode(); - spiCtx.createRemoteNodes(10); - - return spiCtx; - } - - /** - * @throws Exception If failed. - */ - public void testTopologyChange() throws Exception { - ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid()); - - // Warm up. - List<ClusterNode> allNodes = (List<ClusterNode>)getSpiContext().nodes(); - - List<UUID> orderedNodes = getSpi().getNodeIds(ses); - - checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); - - // Remove node. - UUID doomed = orderedNodes.get(0); - - if (getSpiContext().localNode().id().equals(doomed)) - doomed = orderedNodes.get(1); - - getSpiContext().removeNode(doomed); - - assertTrue(allNodes.remove(new GridTestNode(doomed))); - - orderedNodes = getSpi().getNodeIds(ses); - - assertFalse("Balancer uses removed node", orderedNodes.contains(doomed)); - - checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); - - // Add node. - ClusterNode newNode = new GridTestNode(UUID.randomUUID()); - - getSpiContext().addNode(newNode); - - assertTrue(allNodes.add(newNode)); - - // Check that new node was added to balancing. - boolean foundNewNode = false; - - for (int i = 0; i < allNodes.size(); i++) { - ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob()); - if (newNode.id().equals(node.id())) { - foundNewNode = true; - break; - } - } - - assertTrue("Balancer doesn't use added node", foundNewNode); - - orderedNodes = getSpi().getNodeIds(ses); - - checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java deleted file mode 100644 index 71b7744..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/GridRoundRobinTestUtils.java +++ /dev/null @@ -1,95 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.roundrobin; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.gridgain.grid.*; - -import java.util.*; - -import static org.junit.Assert.*; - -/** - * Helper class for balancer tests. - */ -class GridRoundRobinTestUtils { - /** - * Performs two full cycles by round robin routine for check correct order. - * - * @param spi Load balancing SPI. - * @param allNodes Topology nodes. - * @param orderedNodes Balancing nodes. - * @param ses Task session. - * @throws GridException If balancer failed. - */ - static void checkCyclicBalancing(RoundRobinLoadBalancingSpi spi, List<ClusterNode> allNodes, - List<UUID> orderedNodes, ComputeTaskSession ses) throws GridException { - - ClusterNode firstNode = spi.getBalancedNode(ses, allNodes, new GridTestJob()); - - int startIdx = firstBalancedNodeIndex(firstNode, orderedNodes); - - // Two full cycles by round robin routine. - for (int i = 0; i < allNodes.size() * 2; i++) { - int actualIdx = (startIdx + i + 1) % allNodes.size(); - - ClusterNode nextNode = spi.getBalancedNode(ses, allNodes, new GridTestJob()); - - assertEquals("Balancer returns node out of order", nextNode.id(), orderedNodes.get(actualIdx)); - } - } - - /** - * Performs two full cycles by round robin routine for check correct order. - * Switches between two task sessions by turns. - * - * @param spi Load balancing SPI. - * @param allNodes Topology nodes. - * @param orderedNodes Balancing nodes. - * @param ses1 First task session. - * @param ses2 Second task session. - * @throws GridException If balancer failed. - */ - static void checkCyclicBalancing(RoundRobinLoadBalancingSpi spi, List<ClusterNode> allNodes, - List<UUID> orderedNodes, ComputeTaskSession ses1, ComputeTaskSession ses2) throws GridException { - - ClusterNode firstNode = spi.getBalancedNode(ses1, allNodes, new GridTestJob()); - - int startIdx = firstBalancedNodeIndex(firstNode, orderedNodes); - - // Two full cycles by round robin routine. - for (int i = 0; i < allNodes.size() * 2; i++) { - int actualIdx = (startIdx + i + 1) % allNodes.size(); - - ClusterNode nextNode = spi.getBalancedNode(i % 2 == 0 ? ses1 : ses2, allNodes, new GridTestJob()); - - assertEquals("Balancer returns node out of order", nextNode.id(), orderedNodes.get(actualIdx)); - } - } - - /** - * @param firstNode First node which was return by balancer. - * @param orderedNodes Balancing nodes. - * @return Index of first node which was return by balancer. - */ - static int firstBalancedNodeIndex(ClusterNode firstNode, List<UUID> orderedNodes) { - int startIdx = -1; - - for (int i = 0; i < orderedNodes.size(); i++) { - if (firstNode.id() == orderedNodes.get(i)) - startIdx = i; - } - - assertTrue("Can't find position of first balanced node", startIdx >= 0); - - return startIdx; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/package.html b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/package.html deleted file mode 100644 index 5cad80a..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/roundrobin/package.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - @html.file.header - _________ _____ __________________ _____ - __ ____/___________(_)______ /__ ____/______ ____(_)_______ - _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ ---> -<html> -<body> - <!-- Package description. --> - Contains internal tests or test related classes and interfaces. -</body> -</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java deleted file mode 100644 index 40e24f3..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiConfigSelfTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.weightedrandom; - -import org.gridgain.testframework.junits.spi.*; - -/** - * - */ -@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridWeightedRandomLoadBalancingSpiConfigSelfTest extends - GridSpiAbstractConfigTest<WeightedRandomLoadBalancingSpi> { - /** - * @throws Exception If failed. - */ - public void testNegativeConfig() throws Exception { - checkNegativeSpiProperty(new WeightedRandomLoadBalancingSpi(), "nodeWeight", 0); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java deleted file mode 100644 index efc21ed..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiSelfTest.java +++ /dev/null @@ -1,58 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.weightedrandom; - -import org.apache.ignite.cluster.*; -import org.gridgain.grid.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; -import java.util.*; - -/** - * Weighted random load balancing SPI. - */ -@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridWeightedRandomLoadBalancingSpiSelfTest extends - GridSpiAbstractTest<WeightedRandomLoadBalancingSpi> { - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"ObjectEquality"}) - public void testSingleNode() throws Exception { - List<ClusterNode> nodes = Collections.singletonList((ClusterNode)new GridTestNode(UUID.randomUUID())); - - ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); - - assert nodes.contains(node); - - // Verify that same instance is returned every time. - ClusterNode balancedNode = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); - - assert node == balancedNode; - } - - /** - * @throws Exception If failed. - */ - public void testMultipleNodes() throws Exception { - List<ClusterNode> nodes = new ArrayList<>(); - - for (int i = 0; i < 10; i++) - nodes.add(new GridTestNode(UUID.randomUUID())); - - // Seal it. - nodes = Collections.unmodifiableList(nodes); - - ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(), nodes, new GridTestJob()); - - assert node != null; - assert nodes.contains(node); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java deleted file mode 100644 index 4c9b352..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiStartStopSelfTest.java +++ /dev/null @@ -1,23 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.weightedrandom; - -import org.gridgain.grid.spi.*; -import org.gridgain.testframework.junits.spi.*; - -/** - * Wighted random load balancing SPI start-stop test. - */ -@SuppressWarnings({"JUnitTestCaseWithNoTests"}) -@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "LoadBalancing SPI") -public class GridWeightedRandomLoadBalancingSpiStartStopSelfTest extends - GridSpiStartStopAbstractTest<WeightedRandomLoadBalancingSpi> { - // No configs. -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java deleted file mode 100644 index 289be66..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/GridWeightedRandomLoadBalancingSpiWeightedSelfTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.spi.loadbalancing.weightedrandom; - -import org.apache.ignite.cluster.*; -import org.apache.ignite.lang.*; -import org.gridgain.grid.*; -import org.gridgain.grid.util.typedef.internal.*; -import org.gridgain.testframework.*; -import org.gridgain.testframework.junits.spi.*; -import java.util.*; - -import static org.gridgain.grid.spi.loadbalancing.weightedrandom.WeightedRandomLoadBalancingSpi.*; - -/** - * {@link WeightedRandomLoadBalancingSpi} self test. - */ -@GridSpiTest(spi = WeightedRandomLoadBalancingSpi.class, group = "Load Balancing SPI") -public class GridWeightedRandomLoadBalancingSpiWeightedSelfTest - extends GridSpiAbstractTest<WeightedRandomLoadBalancingSpi> { - /** - * @return {@code True} if node weights should be considered. - */ - @GridSpiTestConfig - public boolean getUseWeights() { - return true; - } - - /** - * @throws Exception If test failed. - */ - public void testWeights() throws Exception { - List<ClusterNode> nodes = new ArrayList<>(); - - for (int i = 0; i < 10; i++) { - GridTestNode node = new GridTestNode(UUID.randomUUID()); - - node.addAttribute(U.spiAttribute(getSpi(), NODE_WEIGHT_ATTR_NAME), i + 1); - - nodes.add(node); - } - - // Seal it. - nodes = Collections.unmodifiableList(nodes); - - int[] cnts = new int[10]; - - // Invoke load balancer a large number of times, so statistics won't lie. - for (int i = 0; i < 100000; i++) { - ClusterNode node = getSpi().getBalancedNode(new GridTestTaskSession(IgniteUuid.randomUuid()), nodes, - new GridTestJob()); - - int weight = (Integer)node.attribute(U.spiAttribute(getSpi(), NODE_WEIGHT_ATTR_NAME)); - - // Increment number of times a node was picked. - cnts[weight - 1]++; - } - - for (int i = 0; i < cnts.length - 1; i++) { - assert cnts[i] < cnts[i + 1] : "Invalid node counts for index [idx=" + i + ", cnts[i]=" + cnts[i] + - ", cnts[i+1]=" + cnts[i + 1] + ']'; - } - - info("Node counts: " + Arrays.toString(cnts)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/package.html b/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/package.html deleted file mode 100644 index 5cad80a..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/spi/loadbalancing/weightedrandom/package.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - @html.file.header - _________ _____ __________________ _____ - __ ____/___________(_)______ /__ ____/______ ____(_)_______ - _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ ---> -<html> -<body> - <!-- Package description. --> - Contains internal tests or test related classes and interfaces. -</body> -</html> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b69a23cd/modules/core/src/test/java/org/gridgain/testsuites/GridSpiLoadBalancingSelfTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/testsuites/GridSpiLoadBalancingSelfTestSuite.java b/modules/core/src/test/java/org/gridgain/testsuites/GridSpiLoadBalancingSelfTestSuite.java index 21f89fb..80c2bff 100644 --- a/modules/core/src/test/java/org/gridgain/testsuites/GridSpiLoadBalancingSelfTestSuite.java +++ b/modules/core/src/test/java/org/gridgain/testsuites/GridSpiLoadBalancingSelfTestSuite.java @@ -10,9 +10,9 @@ package org.gridgain.testsuites; import junit.framework.*; -import org.gridgain.grid.spi.loadbalancing.adaptive.*; -import org.gridgain.grid.spi.loadbalancing.roundrobin.*; -import org.gridgain.grid.spi.loadbalancing.weightedrandom.*; +import org.apache.ignite.spi.loadbalancing.adaptive.*; +import org.apache.ignite.spi.loadbalancing.roundrobin.*; +import org.apache.ignite.spi.loadbalancing.weightedrandom.*; /** * Load balancing SPI self-test suite.