Repository: ignite
Updated Branches:
  refs/heads/ignite-zk 879f99930 -> 69aedc5b5


zk


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/69aedc5b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/69aedc5b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/69aedc5b

Branch: refs/heads/ignite-zk
Commit: 69aedc5b58d5c86908b5388873522151072ad0f2
Parents: 879f999
Author: sboikov <sboi...@gridgain.com>
Authored: Mon Dec 25 16:26:46 2017 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Mon Dec 25 16:26:46 2017 +0300

----------------------------------------------------------------------
 .../ZookeeperDiscoverySpiBasicTest.java         | 210 +++++++++++++++----
 1 file changed, 166 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/69aedc5b/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java
 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java
index 293eb87..b31555e 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java
@@ -136,6 +136,9 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     private boolean client;
 
     /** */
+    private static ThreadLocal<Boolean> clientThreadLoc = new ThreadLocal<>();
+
+    /** */
     private static ConcurrentHashMap<UUID, Map<Long, DiscoveryEvent>> evts = 
new ConcurrentHashMap<>();
 
     /** */
@@ -239,7 +242,12 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         cfg.setCacheConfiguration(ccfg);
 
-        cfg.setClientMode(client);
+        Boolean clientMode = clientThreadLoc.get();
+
+        if (clientMode != null)
+            cfg.setClientMode(clientMode);
+        else
+            cfg.setClientMode(client);
 
         if (userAttrs != null)
             cfg.setUserAttributes(userAttrs);
@@ -309,6 +317,20 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         return cfg;
     }
 
+    /**
+     * @param clientMode Client mode flag for started nodes.
+     */
+    private void clientMode(boolean clientMode) {
+        client = clientMode;
+    }
+
+    /**
+     * @param clientMode Client mode flag for nodes started from current 
thread.
+     */
+    private void clientModeThreadLocal(boolean clientMode) {
+        clientThreadLoc.set(clientMode);
+    }
+
     /** {@inheritDoc} */
     @Override protected void beforeTestsStarted() throws Exception {
         super.beforeTestsStarted();
@@ -489,7 +511,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     public void testNodeAddresses() throws Exception {
         startGridsMultiThreaded(3);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(3, 3);
 
@@ -514,7 +536,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     public void testSetConsistentId() throws Exception {
         startGridsMultiThreaded(3);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(3, 3);
 
@@ -541,7 +563,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGridsMultiThreaded(3);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(3, 3);
 
@@ -568,7 +590,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
             assertEquals(1, node.cluster().forServers().nodes().size());
         }
 
-        client = true;
+        clientMode(true);
 
         startGrid(1);
 
@@ -577,11 +599,11 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
             assertEquals(1, node.cluster().forServers().nodes().size());
         }
 
-        client = false;
+        clientMode(false);
 
         startGrid(2);
 
-        client = true;
+        clientMode(true);
 
         startGrid(3);
 
@@ -646,13 +668,13 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         checkTestSecuritySubject(1);
 
         {
-            client = false;
+            clientMode(false);
             checkStartFail(1);
 
-            client = true;
+            clientMode(true);
             checkStartFail(1);
 
-            client = false;
+            clientMode(false);
         }
 
         startGrid(2);
@@ -673,15 +695,15 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         checkStartFail(1);
 
-        client = false;
+        clientMode(false);
 
         startGrid(3);
 
-        client = true;
+        clientMode(true);
 
         startGrid(4);
 
-        client = false;
+        clientMode(false);
 
         startGrid(0);
 
@@ -690,7 +712,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         checkStartFail(1);
         checkStartFail(5);
 
-        client = true;
+        clientMode(true);
 
         checkStartFail(1);
         checkStartFail(5);
@@ -1207,6 +1229,41 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
+    public void testConcurrentStartWithClient() throws Exception {
+        final int NODES = 20;
+
+        for (int i = 0; i < 3; i++) {
+            info("Iteration: " + i);
+
+            final int srvIdx = ThreadLocalRandom.current().nextInt(NODES);
+
+            final AtomicInteger idx = new AtomicInteger();
+
+            GridTestUtils.runMultiThreaded(new Callable<Void>() {
+                @Override public Void call() throws Exception {
+                    int threadIdx = idx.getAndIncrement();
+
+                    clientModeThreadLocal(threadIdx == srvIdx || 
ThreadLocalRandom.current().nextBoolean());
+
+                    startGrid(threadIdx);
+
+                    return null;
+                }
+            }, NODES, "start-node");
+
+            waitForTopology(NODES);
+
+            stopAllGrids();
+
+            checkEventsConsistency();
+
+            evts.clear();
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testConcurrentStartStop1() throws Exception {
        concurrentStartStop(1);
     }
@@ -1482,7 +1539,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGrids(SRVS);
 
-        client = true;
+        clientMode(true);
 
         final int THREADS = 30;
 
@@ -1673,11 +1730,11 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testDeployService2() throws Exception {
-        client = false;
+        clientMode(false);
 
         startGrid(0);
 
-        client = true;
+        clientMode(true);
 
         startGrid(1);
 
@@ -1688,14 +1745,22 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testDeployService3() throws Exception {
-        client = true;
+        IgniteInternalFuture fut = GridTestUtils.runAsync(new Callable() {
+            @Override public Object call() throws Exception {
+                clientModeThreadLocal(true);
 
-        startGrid(0);
+                startGrid(0);
 
-        client = false;
+                return null;
+            }
+        }, "start-node");
+
+        clientModeThreadLocal(false);
 
         startGrid(1);
 
+        fut.get();
+
         grid(0).services(grid(0).cluster()).deployNodeSingleton("test", new 
GridCacheAbstractFullApiSelfTest.DummyServiceImpl());
     }
 
@@ -1747,7 +1812,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
             else
                 userAttrs = null;
 
-            client = i > 5;
+            clientMode(i > 5);
 
             startGrid(i);
         }
@@ -1822,7 +1887,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         startGrid(0);
 
         sesTimeout = 2000;
-        client = true;
+        clientMode(true);
         testSockNio = true;
 
         Ignite client = startGrid(1);
@@ -1841,14 +1906,14 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
      */
     public void testClientReconnectSessionExpire2() throws Exception {
         sesTimeout = 2000;
-        client = true;
+        clientMode(true);
         testSockNio = true;
 
         Ignite client0 = startGrid(0);
 
         reconnectClientNodes(log, Collections.singletonList(client0), null, 
true);
 
-        client = false;
+        clientMode(false);
 
         client0.configuration().getMarshaller().marshal(new 
DummyCallable(null));
 
@@ -1865,7 +1930,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGrids(SRVS);
 
-        client = true;
+        clientMode(true);
 
         startGrid(SRVS);
 
@@ -1890,7 +1955,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGrids(SRVS);
 
-        client = true;
+        clientMode(true);
 
         startGrid(SRVS);
 
@@ -2354,7 +2419,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGridsMultiThreaded(10);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(10, 5);
 
@@ -2380,7 +2445,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
                 // No-op.
             }
 
-            client = ThreadLocalRandom.current().nextBoolean();
+            clientMode(ThreadLocalRandom.current().nextBoolean());
 
             startGrid(nodeIdx++);
 
@@ -2423,7 +2488,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         startGrids(3);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(3, 2);
 
@@ -2521,7 +2586,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     public void testStartNoServers_FailOnTimeout() {
         joinTimeout = 3000;
 
-        client = true;
+        clientMode(true);
 
         long start = System.currentTimeMillis();
 
@@ -2564,7 +2629,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         IgniteInternalFuture<?> fut = GridTestUtils.runAsync(new 
Callable<Void>() {
             @Override public Void call() throws Exception {
-                client = true;
+                clientModeThreadLocal(true);
 
                 startGrid(0);
 
@@ -2576,7 +2641,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
         waitSpi(getTestIgniteInstanceName(0));
 
-        client = false;
+        clientModeThreadLocal(false);
 
         startGrid(1);
 
@@ -2621,7 +2686,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     private void disconnectOnServersLeft(int srvs, int clients) throws 
Exception {
         startGridsMultiThreaded(srvs);
 
-        client = true;
+        clientMode(true);
 
         startGridsMultiThreaded(srvs, clients);
 
@@ -2670,7 +2735,7 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
 
             evts.clear();
 
-            client = false;
+            clientMode(false);
 
             log.info("Restart servers.");
 
@@ -2687,22 +2752,37 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
-    public void testReconnectServersRestart() throws Exception {
-        startGrid(0);
+    public void testReconnectServersRestart_1() throws Exception {
+        reconnectServersRestart(1);
+    }
 
-        client = true;
+    /**
+     * @throws Exception If failed.
+     */
+    public void testReconnectServersRestart_2() throws Exception {
+        reconnectServersRestart(3);
+    }
+
+    /**
+     * @param srvs Number of server nodes in test.
+     * @throws Exception If failed.
+     */
+    private void reconnectServersRestart(int srvs) throws Exception {
+        startGridsMultiThreaded(srvs);
+
+        clientMode(true);
 
         final int CLIENTS = 10;
 
-        startGridsMultiThreaded(1, CLIENTS);
+        startGridsMultiThreaded(srvs, CLIENTS);
 
-        client = false;
+        clientMode(false);
 
         long stopTime = System.currentTimeMillis() + 30_000;
 
         ThreadLocalRandom rnd = ThreadLocalRandom.current();
 
-        final int NODES = 1 + CLIENTS;
+        final int NODES = srvs + CLIENTS;
 
         int iter = 0;
 
@@ -2712,9 +2792,13 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
             info("Test iteration [iter=" + iter++ + ", restarts=" + restarts + 
']');
 
             for (int i = 0; i < restarts; i++) {
-                stopGrid(getTestIgniteInstanceName(0), true, false);
+                GridTestUtils.runMultiThreaded(new IgniteInClosure<Integer>() {
+                    @Override public void apply(Integer threadIdx) {
+                        stopGrid(getTestIgniteInstanceName(threadIdx), true, 
false);
+                    }
+                }, srvs, "stop-server");
 
-                startGrid(0);
+                startGridsMultiThreaded(0, srvs);
             }
 
             final Ignite srv = ignite(0);
@@ -2736,6 +2820,42 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
+    public void testReconnectServersRestart_3() throws Exception {
+        startGrid(0);
+
+        clientMode(true);
+
+        startGridsMultiThreaded(10, 10);
+
+        stopGrid(getTestIgniteInstanceName(0), true, false);
+
+        final int srvIdx = ThreadLocalRandom.current().nextInt(10);
+
+        final AtomicInteger idx = new AtomicInteger();
+
+        info("Restart nodes.");
+
+        // Test concurrent start when there are disconnected nodes from 
previous cluster.
+        GridTestUtils.runMultiThreaded(new Callable<Void>() {
+            @Override public Void call() throws Exception {
+                int threadIdx = idx.getAndIncrement();
+
+                clientModeThreadLocal(threadIdx == srvIdx || 
ThreadLocalRandom.current().nextBoolean());
+
+                startGrid(threadIdx);
+
+                return null;
+            }
+        }, 10, "start-node");
+
+        waitForTopology(20);
+
+        evts.clear();
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testStartNoZk() throws Exception {
         stopZkCluster();
 
@@ -2781,11 +2901,11 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         for (int i = 0; i < 3; i++) {
             info("Iteration: " + i);
 
-            client = false;
+            clientMode(false);
 
             startGridsMultiThreaded(4);
 
-            client = true;
+            clientMode(true);
 
             startGridsMultiThreaded(4, 3);
 
@@ -2979,6 +3099,8 @@ public class ZookeeperDiscoverySpiBasicTest extends 
GridCommonAbstractTest {
         catch (Exception e) {
             error("Failed to delete DB files: " + e, e);
         }
+
+        clientThreadLoc.set(null);
     }
 
     /**

Reply via email to