http://git-wip-us.apache.org/repos/asf/ignite/blob/5d4987a9/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java index 1b7fe2b..d2cb710 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java @@ -537,7 +537,7 @@ public abstract class CacheContinuousQueryFailoverAbstractSelfTest extends GridC Affinity<Object> aff = grid(i).affinity(null); - Map<Integer, Long> act = grid(i).cachex(null).context().topology().updateCounters(); + Map<Integer, Long> act = grid(i).cachex(null).context().topology().updateCounters(false); for (Map.Entry<Integer, Long> e : updCntrs.entrySet()) { if (aff.mapPartitionToPrimaryAndBackups(e.getKey()).contains(grid(i).localNode()))
http://git-wip-us.apache.org/repos/asf/ignite/blob/5d4987a9/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java index 1ce98a5..043208c 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java @@ -49,6 +49,7 @@ import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.events.DiscoveryEvent; import org.apache.ignite.events.Event; import org.apache.ignite.events.EventType; +import org.apache.ignite.internal.GridComponent; import org.apache.ignite.internal.IgniteEx; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.IgniteKernal; @@ -114,6 +115,12 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { /** */ private GridStringLogger strLog; + /** */ + private CacheConfiguration[] ccfgs; + + /** */ + private boolean client; + /** * @throws Exception If fails. */ @@ -152,7 +159,10 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { cfg.setDiscoverySpi(spi); - cfg.setCacheConfiguration(); + if (ccfgs != null) + cfg.setCacheConfiguration(ccfgs); + else + cfg.setCacheConfiguration(); cfg.setIncludeEventTypes(EVT_TASK_FAILED, EVT_TASK_FINISHED, EVT_JOB_MAPPED); @@ -194,9 +204,8 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { } else if (gridName.contains("testPingInterruptedOnNodeFailedPingingNode")) cfg.setFailureDetectionTimeout(30_000); - else if (gridName.contains("testNoRingMessageWorkerAbnormalFailureNormalNode")) { + else if (gridName.contains("testNoRingMessageWorkerAbnormalFailureNormalNode")) cfg.setFailureDetectionTimeout(3_000); - } else if (gridName.contains("testNoRingMessageWorkerAbnormalFailureSegmentedNode")) { cfg.setFailureDetectionTimeout(6_000); @@ -205,6 +214,8 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { else if (gridName.contains("testNodeShutdownOnRingMessageWorkerFailureFailedNode")) cfg.setGridLogger(strLog = new GridStringLogger()); + cfg.setClientMode(client); + return cfg; } @@ -1961,6 +1972,63 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { } /** + * @throws Exception If failed. + */ + public void testDuplicatedDiscoveryDataRemoved() throws Exception { + try { + TestDiscoveryDataDuplicateSpi.checkNodeAdded = false; + TestDiscoveryDataDuplicateSpi.checkClientNodeAddFinished = false; + TestDiscoveryDataDuplicateSpi.fail = false; + + ccfgs = new CacheConfiguration[5]; + + for (int i = 0; i < ccfgs.length; i++) { + CacheConfiguration ccfg = new CacheConfiguration(); + + ccfg.setName(i == 0 ? null : ("static-cache-" + i)); + + ccfgs[i] = ccfg; + } + + TestDiscoveryDataDuplicateSpi spi = new TestDiscoveryDataDuplicateSpi(); + + nodeSpi.set(spi); + + startGrid(0); + + for (int i = 0; i < 5; i++) { + nodeSpi.set(new TestDiscoveryDataDuplicateSpi()); + + startGrid(i + 1); + } + + client = true; + + Ignite clientNode = startGrid(6); + + assertTrue(clientNode.configuration().isClientMode()); + + CacheConfiguration ccfg = new CacheConfiguration(); + ccfg.setName("c1"); + + clientNode.createCache(ccfg); + + client = false; + + nodeSpi.set(new TestDiscoveryDataDuplicateSpi()); + + startGrid(7); + + assertTrue(TestDiscoveryDataDuplicateSpi.checkNodeAdded); + assertTrue(TestDiscoveryDataDuplicateSpi.checkClientNodeAddFinished); + assertFalse(TestDiscoveryDataDuplicateSpi.fail); + } + finally { + stopAllGrids(); + } + } + + /** * @param nodeName Node name. * @throws Exception If failed. */ @@ -2015,6 +2083,66 @@ public class TcpDiscoverySelfTest extends GridCommonAbstractTest { } } + /** + * + */ + private static class TestDiscoveryDataDuplicateSpi extends TcpDiscoverySpi { + /** */ + static volatile boolean fail; + + /** */ + static volatile boolean checkNodeAdded; + + /** */ + static volatile boolean checkClientNodeAddFinished; + + /** {@inheritDoc} */ + @Override protected void writeToSocket(Socket sock, OutputStream out, + TcpDiscoveryAbstractMessage msg, + long timeout) throws IOException, IgniteCheckedException { + if (msg instanceof TcpDiscoveryNodeAddedMessage) { + Map<UUID, Map<Integer, byte[]>> discoData = ((TcpDiscoveryNodeAddedMessage)msg).oldNodesDiscoveryData(); + + checkDiscoData(discoData, msg); + } + else if (msg instanceof TcpDiscoveryNodeAddFinishedMessage) { + Map<UUID, Map<Integer, byte[]>> discoData = ((TcpDiscoveryNodeAddFinishedMessage)msg).clientDiscoData(); + + checkDiscoData(discoData, msg); + } + + super.writeToSocket(sock, out, msg, timeout); + } + + /** + * @param discoData Discovery data. + * @param msg Message. + */ + private void checkDiscoData(Map<UUID, Map<Integer, byte[]>> discoData, TcpDiscoveryAbstractMessage msg) { + if (discoData != null && discoData.size() > 1) { + int cnt = 0; + + for (Map.Entry<UUID, Map<Integer, byte[]>> e : discoData.entrySet()) { + Map<Integer, byte[]> map = e.getValue(); + + if (map.containsKey(GridComponent.DiscoveryDataExchangeType.CACHE_PROC.ordinal())) + cnt++; + } + + if (cnt > 1) { + fail = true; + + log.error("Expect cache data only from one node, but actually: " + cnt); + } + + if (msg instanceof TcpDiscoveryNodeAddedMessage) + checkNodeAdded = true; + else if (msg instanceof TcpDiscoveryNodeAddFinishedMessage) + checkClientNodeAddFinished = true; + } + } + } + /** * http://git-wip-us.apache.org/repos/asf/ignite/blob/5d4987a9/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java index dc412a9..ffb0539 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.processors.cache.CacheConfigurationLeakTest; import org.apache.ignite.internal.processors.cache.CacheDhtLocalPartitionAfterRemoveSelfTest; import org.apache.ignite.internal.processors.cache.CacheEnumOperationsSingleNodeTest; import org.apache.ignite.internal.processors.cache.CacheEnumOperationsTest; +import org.apache.ignite.internal.processors.cache.CacheExchangeMessageDuplicatedStateTest; import org.apache.ignite.internal.processors.cache.CrossCacheTxRandomOperationsTest; import org.apache.ignite.internal.processors.cache.GridCacheAtomicMessageCountSelfTest; import org.apache.ignite.internal.processors.cache.GridCacheFinishPartitionsSelfTest; @@ -262,6 +263,8 @@ public class IgniteCacheTestSuite2 extends TestSuite { suite.addTest(new TestSuite(IgniteNoCustomEventsOnNodeStart.class)); + suite.addTest(new TestSuite(CacheExchangeMessageDuplicatedStateTest.class)); + return suite; } }
