# ignite-537

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

Branch: refs/heads/ignite-718
Commit: 9837a4abdc87d81f7d640e413d7b47a782909203
Parents: d25627c
Author: sboikov <sboi...@gridgain.com>
Authored: Fri Apr 10 17:14:18 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Fri Apr 10 17:14:18 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/util/GridJavaProcess.java   |  38 ++++-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   4 +-
 .../cache/CacheConfigurationP2PTest.java        | 122 +++++++++++++++
 .../cache/CacheConfigurationP2PTestServer.java  |  63 ++++++++
 .../startcache/CacheConfigP2PStartClient.java   | 132 ----------------
 .../CacheConfigurationP2PTestClient.java        | 155 +++++++++++++++++++
 .../p2p/GridMultiJvmClassPathSelfTest.java      | 109 -------------
 7 files changed, 378 insertions(+), 245 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
index b90c4a9..d62e0b7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
@@ -82,7 +82,7 @@ public final class GridJavaProcess {
      */
     public static GridJavaProcess exec(Class cls, String params, @Nullable 
IgniteLogger log,
         @Nullable IgniteInClosure<String> printC, @Nullable GridAbsClosure 
procKilledC) throws Exception {
-        return exec(cls, params, log, printC, procKilledC, null, null);
+        return exec(cls.getCanonicalName(), params, log, printC, procKilledC, 
null, null);
     }
 
     /**
@@ -101,6 +101,25 @@ public final class GridJavaProcess {
     public static GridJavaProcess exec(Class cls, String params, @Nullable 
IgniteLogger log,
         @Nullable IgniteInClosure<String> printC, @Nullable GridAbsClosure 
procKilledC,
         @Nullable Collection<String> jvmArgs, @Nullable String cp) throws 
Exception {
+        return exec(cls.getCanonicalName(), params, log, printC, procKilledC, 
jvmArgs, cp);
+    }
+
+    /**
+     * Executes main() method of the given class in a separate system process.
+     *
+     * @param clsName Class with main() method to be run.
+     * @param params main() method parameters.
+     * @param printC Optional closure to be called each time wrapped process 
prints line to system.out or system.err.
+     * @param procKilledC Optional closure to be called when process 
termination is detected.
+     * @param log Log to use.
+     * @param jvmArgs JVM arguments to use.
+     * @param cp Additional classpath.
+     * @return Wrapper around {@link Process}
+     * @throws Exception If any problem occurred.
+     */
+    public static GridJavaProcess exec(String clsName, String params, 
@Nullable IgniteLogger log,
+        @Nullable IgniteInClosure<String> printC, @Nullable GridAbsClosure 
procKilledC,
+        @Nullable Collection<String> jvmArgs, @Nullable String cp) throws 
Exception {
         if (!(U.isLinux() || U.isMacOs() || U.isWindows()))
             throw new Exception("Your OS is not supported.");
 
@@ -111,7 +130,6 @@ public final class GridJavaProcess {
 
         String javaBin = System.getProperty("java.home") + File.separator + 
"bin" + File.separator + "java";
         String classpath = System.getProperty("java.class.path");
-        String clsName = cls.getCanonicalName();
 
         if (cp != null)
             classpath += System.getProperty("path.separator") + cp;
@@ -170,6 +188,22 @@ public final class GridJavaProcess {
     }
 
     /**
+     * Kills process using {@link Process#destroy()}.
+     */
+    public void killProcess() {
+        proc.destroy();
+
+        if (procKilledC != null)
+            procKilledC.apply();
+
+        U.interrupt(osGrabber);
+        U.interrupt(esGrabber);
+
+        U.join(osGrabber, log);
+        U.join(esGrabber, log);
+    }
+
+    /**
      * Returns pid of the java process.
      * Wrapped java class should print it's PID to system.out or system.err to 
make wrapper know about it.
      *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 21f1c97..7da004a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -5401,8 +5401,8 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
          * @param node Node.
          */
         public DiscoveryDeploymentClassLoader(TcpDiscoveryNode node) {
-            assert !node.isClient();
-            assert !node.id().equals(getLocalNodeId());
+            assert !node.isClient() : node;
+            assert !node.id().equals(getLocalNodeId()) : node;
 
             this.node = node;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
new file mode 100644
index 0000000..96b124c
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.concurrent.*;
+
+import static java.util.concurrent.TimeUnit.*;
+
+/**
+ *
+ */
+public class CacheConfigurationP2PTest extends GridCommonAbstractTest {
+    /** */
+    public static final String NODE_START_MSG = "Test external node started";
+
+    /** */
+    private static final String CLIENT_CLS_NAME =
+        
"org.apache.ignite.tests.p2p.startcache.CacheConfigurationP2PTestClient";
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testCacheConfigurationP2P() throws Exception {
+        final CountDownLatch srvsReadyLatch = new CountDownLatch(2);
+
+        final CountDownLatch clientReadyLatch = new CountDownLatch(1);
+
+        GridJavaProcess node1 = null;
+        GridJavaProcess node2 = null;
+        GridJavaProcess clientNode = null;
+
+        try {
+            node1 = GridJavaProcess.exec(
+                CacheConfigurationP2PTestServer.class.getName(), null,
+                log,
+                new CI1<String>() {
+                    @Override public void apply(String s) {
+                        info("Server node1: " + s);
+
+                        if (s.contains(NODE_START_MSG))
+                            srvsReadyLatch.countDown();
+                    }
+                },
+                null,
+                null,
+                null
+            );
+
+            node2 = GridJavaProcess.exec(
+                CacheConfigurationP2PTestServer.class.getName(), null,
+                log,
+                new CI1<String>() {
+                    @Override public void apply(String s) {
+                        info("Server node2: " + s);
+
+                        if (s.contains(NODE_START_MSG))
+                            srvsReadyLatch.countDown();
+                    }
+                },
+                null,
+                null,
+                null
+            );
+
+            assertTrue(srvsReadyLatch.await(60, SECONDS));
+
+            String str = U.getIgniteHome() + 
"/modules/extdata/p2p/target/classes/";
+
+            clientNode = GridJavaProcess.exec(
+                CLIENT_CLS_NAME, null,
+                log,
+                new CI1<String>() {
+                    @Override public void apply(String s) {
+                        info("Client node: " + s);
+
+                        if (s.contains(NODE_START_MSG))
+                            clientReadyLatch.countDown();
+                    }
+                },
+                null,
+                null,
+                str
+            );
+
+            assertTrue(clientReadyLatch.await(60, SECONDS));
+
+            int exitCode = clientNode.getProcess().waitFor();
+
+            assertEquals("Unexpected exit code", 0, exitCode);
+        }
+        finally {
+            if (node1 != null)
+                node1.killProcess();
+
+            if (node2 != null)
+                node2.killProcess();
+
+            if (clientNode != null)
+                clientNode.killProcess();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
new file mode 100644
index 0000000..490f951
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import org.apache.ignite.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class CacheConfigurationP2PTestServer {
+    /**
+     * @param args Arguments.
+     * @throws Exception If failed.
+     */
+    public static void main(String[] args) throws Exception {
+        System.out.println("Starting test server node.");
+
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        cfg.setPeerClassLoadingEnabled(true);
+
+        cfg.setLocalHost("127.0.0.1");
+
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
+
+        ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47509"));
+
+        disco.setIpFinder(ipFinder);
+
+        cfg.setDiscoverySpi(disco);
+
+        U.setWorkDirectory(null, U.getIgniteHome());
+
+        try (Ignite ignite = Ignition.start(cfg)) {
+            System.out.println(CacheConfigurationP2PTest.NODE_START_MSG);
+
+            U.sleep(Long.MAX_VALUE);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigP2PStartClient.java
----------------------------------------------------------------------
diff --git 
a/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigP2PStartClient.java
 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigP2PStartClient.java
deleted file mode 100644
index 1170175..0000000
--- 
a/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigP2PStartClient.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.tests.p2p.startcache;
-
-import org.apache.ignite.*;
-import org.apache.ignite.cache.query.annotations.*;
-import org.apache.ignite.configuration.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- *
- */
-public class CacheConfigP2PStartClient {
-    /**
-     * @param args Arguments.
-     * @throws Exception If failed.
-     */
-    public static void main(String[] args) throws Exception {
-        IgniteConfiguration cfg = new IgniteConfiguration();
-
-        try (Ignite ignite = Ignition.start(cfg)) {
-            int nodes = ignite.cluster().nodes().size();
-
-            if (nodes != 3)
-                throw new Exception("Unexpected nodes number: " + nodes);
-
-            CacheConfiguration<Integer, Organization1> ccfg1 = new 
CacheConfiguration<>();
-
-            ccfg1.setName("cache1");
-
-            ccfg1.setNodeFilter(new CacheAllNodesFilter());
-
-            ccfg1.setIndexedTypes(Integer.class, Organization1.class);
-
-            System.out.println("Create cache1.");
-
-            IgniteCache<Integer, Organization1> cache1 = 
ignite.createCache(ccfg1);
-
-            for (int i = 0; i < 500; i++)
-                cache1.put(i, new Organization1("org-" + i));
-
-            System.out.println("Sleep some time.");
-
-            Thread.sleep(5000); // Sleep some time to wait when connection of 
p2p loader is closed.
-
-            System.out.println("Create cache2.");
-
-            CacheConfiguration<Integer, Organization2> ccfg2 = new 
CacheConfiguration<>();
-
-            ccfg2.setName("cache2");
-
-            ccfg2.setIndexedTypes(Integer.class, Organization1.class);
-
-            IgniteCache<Integer, Organization2> cache2 = 
ignite.createCache(ccfg2);
-        }
-    }
-
-    /**
-     * Organization class.
-     */
-    private static class Organization1 implements Serializable {
-        /** Organization ID (indexed). */
-        @QuerySqlField(index = true)
-        private UUID id;
-
-        /** Organization name (indexed). */
-        @QuerySqlField(index = true)
-        private String name;
-
-        /**
-         * Create organization.
-         *
-         * @param name Organization name.
-         */
-        Organization1(String name) {
-            id = UUID.randomUUID();
-
-            this.name = name;
-        }
-
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return "Organization [id=" + id + ", name=" + name + ']';
-        }
-    }
-
-    /**
-     * Organization class.
-     */
-    private static class Organization2 implements Serializable {
-        /** Organization ID (indexed). */
-        @QuerySqlField(index = true)
-        private UUID id;
-
-        /** Organization name (indexed). */
-        @QuerySqlField(index = true)
-        private String name;
-
-        /**
-         * Create organization.
-         *
-         * @param name Organization name.
-         */
-        Organization2(String name) {
-            id = UUID.randomUUID();
-
-            this.name = name;
-        }
-
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return "Organization [id=" + id + ", name=" + name + ']';
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigurationP2PTestClient.java
----------------------------------------------------------------------
diff --git 
a/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigurationP2PTestClient.java
 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigurationP2PTestClient.java
new file mode 100644
index 0000000..0634e5f
--- /dev/null
+++ 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/CacheConfigurationP2PTestClient.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.tests.p2p.startcache;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cache.query.annotations.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ *
+ */
+public class CacheConfigurationP2PTestClient {
+    /**
+     * @param args Arguments.
+     * @throws Exception If failed.
+     */
+    public static void main(String[] args) throws Exception {
+        System.out.println("Starting test client node.");
+
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        cfg.setPeerClassLoadingEnabled(true);
+
+        cfg.setLocalHost("127.0.0.1");
+
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
+
+        ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47509"));
+
+        disco.setIpFinder(ipFinder);
+
+        cfg.setDiscoverySpi(disco);
+
+        U.setWorkDirectory(null, U.getIgniteHome());
+
+        try (Ignite ignite = Ignition.start(cfg)) {
+            System.out.println("Test external node started");
+
+            int nodes = ignite.cluster().nodes().size();
+
+            if (nodes != 3)
+                throw new Exception("Unexpected nodes number: " + nodes);
+
+            CacheConfiguration<Integer, Organization1> ccfg1 = new 
CacheConfiguration<>();
+
+            ccfg1.setName("cache1");
+
+            ccfg1.setNodeFilter(new CacheAllNodesFilter());
+
+            ccfg1.setIndexedTypes(Integer.class, Organization1.class);
+
+            System.out.println("Create cache1.");
+
+            IgniteCache<Integer, Organization1> cache1 = 
ignite.createCache(ccfg1);
+
+            for (int i = 0; i < 500; i++)
+                cache1.put(i, new Organization1("org-" + i));
+
+            System.out.println("Sleep some time.");
+
+            Thread.sleep(5000); // Sleep some time to wait when connection of 
p2p loader is closed.
+
+            System.out.println("Create cache2.");
+
+            CacheConfiguration<Integer, Organization2> ccfg2 = new 
CacheConfiguration<>();
+
+            ccfg2.setName("cache2");
+
+            ccfg2.setIndexedTypes(Integer.class, Organization1.class);
+
+            IgniteCache<Integer, Organization2> cache2 = 
ignite.createCache(ccfg2);
+        }
+    }
+
+    /**
+     * Organization class.
+     */
+    private static class Organization1 implements Serializable {
+        /** Organization ID (indexed). */
+        @QuerySqlField(index = true)
+        private UUID id;
+
+        /** Organization name (indexed). */
+        @QuerySqlField(index = true)
+        private String name;
+
+        /**
+         * Create organization.
+         *
+         * @param name Organization name.
+         */
+        Organization1(String name) {
+            id = UUID.randomUUID();
+
+            this.name = name;
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return "Organization [id=" + id + ", name=" + name + ']';
+        }
+    }
+
+    /**
+     * Organization class.
+     */
+    private static class Organization2 implements Serializable {
+        /** Organization ID (indexed). */
+        @QuerySqlField(index = true)
+        private UUID id;
+
+        /** Organization name (indexed). */
+        @QuerySqlField(index = true)
+        private String name;
+
+        /**
+         * Create organization.
+         *
+         * @param name Organization name.
+         */
+        Organization2(String name) {
+            id = UUID.randomUUID();
+
+            this.name = name;
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return "Organization [id=" + id + ", name=" + name + ']';
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9837a4ab/modules/spring/src/test/java/org/apache/ignite/p2p/GridMultiJvmClassPathSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/spring/src/test/java/org/apache/ignite/p2p/GridMultiJvmClassPathSelfTest.java
 
b/modules/spring/src/test/java/org/apache/ignite/p2p/GridMultiJvmClassPathSelfTest.java
deleted file mode 100644
index 00b61b1..0000000
--- 
a/modules/spring/src/test/java/org/apache/ignite/p2p/GridMultiJvmClassPathSelfTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.p2p;
-
-import org.apache.ignite.*;
-import org.apache.ignite.internal.util.*;
-import org.apache.ignite.internal.util.typedef.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.testframework.config.*;
-import org.apache.ignite.testframework.junits.common.*;
-
-import java.util.concurrent.*;
-
-/**
- * Test.
- */
-public class GridMultiJvmClassPathSelfTest extends GridCommonAbstractTest {
-    private static String START = "Start external node";
-
-    public static void main(String[] args) throws Exception {
-        U.setWorkDirectory(null, U.getIgniteHome());
-
-        // Tell our process PID to the wrapper.
-        X.println(GridJavaProcess.PID_MSG_PREFIX + U.jvmPid());
-
-        X.println("Java path: " + System.getProperty("java.class.path"));
-
-        try (Ignite ignite = 
Ignition.start("examples/config/example-ignite.xml")) {
-            X.println(START);
-            U.sleep(10000);
-        }
-    }
-    /**
-     * @throws Exception If failed.
-     */
-    public void testDifferentClassPath() throws Exception {
-        final CountDownLatch killedLatch = new CountDownLatch(2);
-
-        final CountDownLatch readyLatch = new CountDownLatch(2);
-
-        GridJavaProcess proc1 = GridJavaProcess.exec(
-            GridMultiJvmClassPathSelfTest.class, null,
-            log,
-            new CI1<String>() {
-                @Override public void apply(String s) {
-                    info("Process 1 prints: " + s);
-
-                    if (s.startsWith(START))
-                        readyLatch.countDown();
-                }
-            },
-            new CA() {
-                @Override public void apply() {
-                    info("Process 1 is killed");
-
-                    killedLatch.countDown();
-                }
-            },
-            null,
-            null
-        );
-
-        GridJavaProcess proc2 = GridJavaProcess.exec(
-            GridMultiJvmClassPathSelfTest.class, null,
-            log,
-            new CI1<String>() {
-                @Override public void apply(String s) {
-                    info("Process 2 prints: " + s);
-
-                    if (s.contains(START))
-                        readyLatch.countDown();
-                }
-            },
-            new CA() {
-                @Override public void apply() {
-                    info("Process 2 is killed");
-
-                    killedLatch.countDown();
-                }
-            },
-            null,
-            GridTestProperties.getProperty("p2p.uri.cls")
-        );
-
-        readyLatch.await();
-
-        try(Ignite ignite = 
Ignition.start("examples/config/example-ignite.xml")){
-            proc1.kill();
-            proc2.kill();
-
-            killedLatch.await();
-        }
-    }
-}

Reply via email to