zk

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

Branch: refs/heads/ignite-zk
Commit: c556b16028e74a087b1343eaf59da086a4d9a408
Parents: adf7717
Author: sboikov <[email protected]>
Authored: Fri Dec 8 10:21:21 2017 +0300
Committer: sboikov <[email protected]>
Committed: Fri Dec 8 10:21:21 2017 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/internal/IgnitionEx.java  | 74 ++++++++++++++++++++
 1 file changed, 74 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c556b160/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index d84f8a9..0202b1b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -44,6 +44,8 @@ import java.util.logging.Handler;
 import javax.management.JMException;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import org.apache.curator.test.InstanceSpec;
+import org.apache.curator.test.TestingCluster;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
@@ -101,6 +103,7 @@ import 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
 import org.apache.ignite.spi.deployment.local.LocalDeploymentSpi;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import 
org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder;
+import org.apache.ignite.spi.discovery.zk.ZookeeperDiscoverySpi;
 import org.apache.ignite.spi.eventstorage.NoopEventStorageSpi;
 import org.apache.ignite.spi.failover.always.AlwaysFailoverSpi;
 import org.apache.ignite.spi.indexing.noop.NoopIndexingSpi;
@@ -152,6 +155,67 @@ import static 
org.apache.ignite.plugin.segmentation.SegmentationPolicy.RESTART_J
  * GridConfiguration cfg = new GridConfiguration();
  */
 public class IgnitionEx {
+    /** */
+    // TODO ZK
+    public static volatile boolean TEST_ZK = 
IgniteSystemProperties.getBoolean("TEST_ZK", false);
+
+    /** */
+    public static TestingCluster zkCluster;
+
+    synchronized static void startZk() {
+        if (TEST_ZK && zkCluster == null) {
+            System.out.println("Start ZK cluster for tests");
+
+            zkCluster = createTestingCluster(1);
+
+            try {
+                System.setProperty("zookeeper.forceSync", "false");
+                zkCluster.start();
+
+                System.out.println("ZK cluster started: " + 
zkCluster.getConnectString());
+            }
+            catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private static TestingCluster createTestingCluster(int instances) {
+        String tmpDir = System.getProperty("java.io.tmpdir");
+
+        List<InstanceSpec> specs = new ArrayList<>();
+
+        for (int i = 0; i < instances; i++) {
+            File file = new File(tmpDir, "apacheIgniteTestZk-" + i);
+
+            if (file.isDirectory())
+                deleteRecursively0(file);
+            else {
+                if (!file.mkdirs())
+                    throw new IgniteException("Failed to create directory for 
test Zookeeper server: " + file.getAbsolutePath());
+            }
+
+
+            specs.add(new InstanceSpec(file, -1, -1, -1, true, -1, -1, 500));
+        }
+
+        return new TestingCluster(specs);
+    }
+
+    private static void deleteRecursively0(File file) {
+        File[] files = file.listFiles();
+
+        if (files == null)
+            return;
+
+        for (File f : files) {
+            if (f.isDirectory())
+                deleteRecursively0(f);
+            else
+                f.delete();
+        }
+    }
+
     /** Default configuration path relative to Ignite home. */
     public static final String DFLT_CFG = "config/default-config.xml";
 
@@ -2221,6 +2285,16 @@ public class IgnitionEx {
 
             initializeDataStorageConfiguration(myCfg);
 
+            if (TEST_ZK) {
+                startZk();
+
+                ZookeeperDiscoverySpi zkSpi = new ZookeeperDiscoverySpi();
+
+                zkSpi.setZkConnectionString(zkCluster.getConnectString());
+
+                myCfg.setDiscoverySpi(zkSpi);
+            }
+
             return myCfg;
         }
 

Reply via email to