You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by av...@apache.org on 2017/05/31 12:28:00 UTC
[14/27] ignite git commit: Fix flacky service deployment tests.
Fix flacky service deployment tests.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/075bcfca
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/075bcfca
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/075bcfca
Branch: refs/heads/ignite-5232-1.7.2
Commit: 075bcfca0ea22633be13cd02647e359ad6fdca16
Parents: 45b4d63
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Thu May 4 12:21:04 2017 +0300
Committer: Andrey V. Mashenkov <an...@gmail.com>
Committed: Thu May 4 12:21:04 2017 +0300
----------------------------------------------------------------------
.../GridServiceProcessorAbstractSelfTest.java | 17 ++++++
...ServiceProcessorMultiNodeConfigSelfTest.java | 46 ++++++++--------
.../GridServiceProcessorMultiNodeSelfTest.java | 56 +++++++++++---------
3 files changed, 68 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/075bcfca/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorAbstractSelfTest.java
index 0f79855..6d91f36 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorAbstractSelfTest.java
@@ -30,7 +30,9 @@ import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor;
+import org.apache.ignite.internal.util.lang.GridAbsPredicateX;
import org.apache.ignite.internal.util.typedef.CA;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.lang.IgniteFuture;
@@ -520,6 +522,21 @@ public abstract class GridServiceProcessorAbstractSelfTest extends GridCommonAbs
}
/**
+ * @param srvcName Service name
+ * @param expectedDeps Expected number of service deployments
+ *
+ */
+ protected boolean waitForDeployment(final String srvcName, final int expectedDeps) throws IgniteInterruptedCheckedException {
+ final Ignite g = randomGrid();
+
+ return GridTestUtils.waitForCondition(new GridAbsPredicateX() {
+ @Override public boolean applyx() {
+ return actualCount(srvcName, g.services().serviceDescriptors()) == expectedDeps;
+ }
+ }, 1500);
+ }
+
+ /**
* Counter service.
*/
protected interface CounterService {
http://git-wip-us.apache.org/repos/asf/ignite/blob/075bcfca/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeConfigSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeConfigSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeConfigSelfTest.java
index 9da62c0..c78bcaa 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeConfigSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeConfigSelfTest.java
@@ -22,7 +22,6 @@ import java.util.List;
import java.util.concurrent.CountDownLatch;
import org.apache.ignite.Ignite;
import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.util.lang.GridAbsPredicateX;
import org.apache.ignite.services.ServiceConfiguration;
import org.apache.ignite.testframework.GridTestUtils;
@@ -56,7 +55,6 @@ public class GridServiceProcessorMultiNodeConfigSelfTest extends GridServiceProc
/** {@inheritDoc} */
@Override protected ServiceConfiguration[] services() {
- List<ServiceConfiguration> cfgs = new ArrayList<>();
ServiceConfiguration cfg = new ServiceConfiguration();
@@ -65,6 +63,8 @@ public class GridServiceProcessorMultiNodeConfigSelfTest extends GridServiceProc
cfg.setTotalCount(1);
cfg.setService(new DummyService());
+ List<ServiceConfiguration> cfgs = new ArrayList<>();
+
cfgs.add(cfg);
cfg = new ServiceConfiguration();
@@ -202,43 +202,31 @@ public class GridServiceProcessorMultiNodeConfigSelfTest extends GridServiceProc
checkCount(name, g.services().serviceDescriptors(), nodeCount());
- int extraNodes = 2;
-
CountDownLatch latch = new CountDownLatch(1);
DummyService.exeLatch(name, latch);
+ int extraNodes = 2;
+
startExtraNodes(extraNodes);
try {
latch.await();
+ waitForDeployment(name, nodeCount() + 1);
+
checkCount(name, g.services().serviceDescriptors(), nodeCount() + 1);
}
finally {
stopExtraNodes(extraNodes);
}
- assertEquals(name, 1, DummyService.cancelled(name));
-
waitForDeployment(name, nodeCount());
- checkCount(name, g.services().serviceDescriptors(), nodeCount());
- }
-
- /**
- * @param srvcName Service name
- * @param expectedDeps Expected number of service deployments
- *
- */
- private boolean waitForDeployment(final String srvcName, final int expectedDeps) throws IgniteInterruptedCheckedException {
- final Ignite g = randomGrid();
+ // Service can be redeployed when nodes is stopping one-by-one.
+ assertEquals(0, DummyService.started(name) - DummyService.cancelled(name));
- return GridTestUtils.waitForCondition(new GridAbsPredicateX() {
- @Override public boolean applyx() {
- return actualCount(srvcName, g.services().serviceDescriptors()) == expectedDeps;
- }
- }, 1500);
+ checkCount(name, g.services().serviceDescriptors(), nodeCount());
}
/**
@@ -281,8 +269,12 @@ public class GridServiceProcessorMultiNodeConfigSelfTest extends GridServiceProc
try {
latch.await();
- assertEquals(name, newNodes, DummyService.started(name));
- assertEquals(name, 0, DummyService.cancelled(name));
+ waitForDeployment(name, nodeCount() + newNodes);
+
+ // Since we start extra nodes, there may be extra start and cancel events,
+ // so we check only the difference between start and cancel and
+ // not start and cancel events individually.
+ assertEquals(name, newNodes, DummyService.started(name) - DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), nodeCount() + newNodes);
}
@@ -314,8 +306,12 @@ public class GridServiceProcessorMultiNodeConfigSelfTest extends GridServiceProc
try {
latch.await();
- assertEquals(name, servers, DummyService.started(name));
- assertEquals(name, 0, DummyService.cancelled(name));
+ waitForDeployment(name, nodeCount() + servers);
+
+ // Since we start extra nodes, there may be extra start and cancel events,
+ // so we check only the difference between start and cancel and
+ // not start and cancel events individually.
+ assertEquals(name, servers, DummyService.started(name) - DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), nodeCount() + servers);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/075bcfca/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeSelfTest.java
index d133cf2..8ecceb9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorMultiNodeSelfTest.java
@@ -92,7 +92,7 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
// Store a cache key.
g.cache(CACHE_NAME).put(affKey, affKey.toString());
- String name = "serviceAffinityUpdateTopology";
+ final String name = "serviceAffinityUpdateTopology";
IgniteServices svcs = g.services().withAsync();
@@ -129,9 +129,7 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
Ignite client = startGrid("client", getConfiguration("client").setClientMode(true));
try {
- final int prestartedNodes = nodeCount() + 1;
-
- String name = "serviceOnEachNodeButClientUpdateTopology";
+ final String name = "serviceOnEachNodeButClientUpdateTopology";
Ignite g = randomGrid();
@@ -156,8 +154,8 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
// Ensure service is deployed
assertNotNull(client.services().serviceProxy(name, Service.class, false, 2000));
- TestCase.assertEquals(name, nodeCount(), DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ assertEquals(name, nodeCount(), DummyService.started(name));
+ assertEquals(name, 0, DummyService.cancelled(name));
int servers = 2;
int clients = 2;
@@ -171,12 +169,12 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
try {
latch.await();
- // Ensure service is deployed
- assertNotNull(grid(prestartedNodes + servers - 1)
- .services().serviceProxy(name, Service.class, false, 2000));
+ waitForDeployment(name, servers);
- TestCase.assertEquals(name, nodeCount() + servers, DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ // Since we start extra nodes, there may be extra start and cancel events,
+ // so we check only the difference between start and cancel and
+ // not start and cancel events individually.
+ assertEquals(name, nodeCount() + servers, DummyService.started(name) - DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), nodeCount() + servers);
}
@@ -197,7 +195,7 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
Ignite client = startGrid("client", getConfiguration("client").setClientMode(true));
try {
- String name = "serviceOnEachNodeUpdateTopology";
+ final String name = "serviceOnEachNodeUpdateTopology";
Ignite g = randomGrid();
@@ -231,8 +229,8 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
// Ensure service is deployed
assertNotNull(client.services().serviceProxy(name, Service.class, false, 2000));
- TestCase.assertEquals(name, prestartedNodes, DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ assertEquals(name, prestartedNodes, DummyService.started(name));
+ assertEquals(name, 0, DummyService.cancelled(name));
int servers = 2;
int clients = 2;
@@ -248,11 +246,13 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
try {
latch.await();
- // Ensure service is deployed
- assertNotNull(client.services().serviceProxy(name, Service.class, false, 2000));
+ waitForDeployment(name, prestartedNodes + extraNodes);
- TestCase.assertEquals(name, prestartedNodes + extraNodes, DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ // Since we start extra nodes, there may be extra start and cancel events,
+ // so we check only the difference between start and cancel and
+ // not start and cancel events individually.
+ assertEquals(name, prestartedNodes + extraNodes,
+ DummyService.started(name) - DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), prestartedNodes + extraNodes);
}
@@ -269,7 +269,7 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
* @throws Exception If failed.
*/
public void testDeployLimits() throws Exception {
- String name = "serviceWithLimitsUpdateTopology";
+ final String name = "serviceWithLimitsUpdateTopology";
Ignite g = randomGrid();
@@ -300,24 +300,28 @@ public class GridServiceProcessorMultiNodeSelfTest extends GridServiceProcessorA
latch.await();
- TestCase.assertEquals(name, nodeCount(), DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ assertEquals(name, nodeCount(), DummyService.started(name));
+ assertEquals(name, 0, DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), nodeCount());
- int extraNodes = 2;
-
latch = new CountDownLatch(1);
DummyService.exeLatch(name, latch);
- startExtraNodes(2);
+ int extraNodes = 2;
+
+ startExtraNodes(extraNodes);
try {
latch.await();
- TestCase.assertEquals(name, totalInstances, DummyService.started(name));
- TestCase.assertEquals(name, 0, DummyService.cancelled(name));
+ waitForDeployment(name, totalInstances);
+
+ // Since we start extra nodes, there may be extra start and cancel events,
+ // so we check only the difference between start and cancel and
+ // not start and cancel events individually.
+ assertEquals(name, totalInstances, DummyService.started(name) - DummyService.cancelled(name));
checkCount(name, g.services().serviceDescriptors(), totalInstances);
}