# ignite-sprint-3 reverted ignoring disovery data exchange for daemon nodes 
(was done in 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/46d1369c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/46d1369c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/46d1369c

Branch: refs/heads/ignite-718
Commit: 46d1369c2fb17efec325793ced87276b8be98450
Parents: 5953786
Author: sboikov <semen.boi...@inria.fr>
Authored: Sat Apr 11 05:58:13 2015 +0300
Committer: sboikov <semen.boi...@inria.fr>
Committed: Sat Apr 11 06:53:57 2015 +0300

----------------------------------------------------------------------
 .../discovery/tcp/TcpClientDiscoverySpi.java    |   4 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  26 +--
 .../cache/CacheConfigurationP2PTest.java        | 122 -------------
 .../cache/CacheConfigurationP2PTestServer.java  |  63 -------
 .../CacheConfigurationP2PTestClient.java        |  75 ++------
 .../tests/p2p/startcache/Organization1.java     |  52 ++++++
 .../tests/p2p/startcache/Organization2.java     |  52 ++++++
 .../cache/CacheConfigurationP2PTest.java        | 177 +++++++++++++++++++
 .../cache/CacheConfigurationP2PTestServer.java  |  49 +++++
 .../IgniteCacheWithIndexingTestSuite.java       |   2 +
 10 files changed, 364 insertions(+), 258 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 312b940..2ab8e8f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -900,7 +900,7 @@ public class TcpClientDiscoverySpi extends 
TcpDiscoverySpiAdapter implements Tcp
 
                         Map<UUID, Map<Integer, byte[]>> dataMap = 
msg.oldNodesDiscoveryData();
 
-                        if (!locNode.isDaemon() && dataMap != null) {
+                        if (dataMap != null) {
                             for (Map.Entry<UUID, Map<Integer, byte[]>> entry : 
dataMap.entrySet())
                                 onExchange(newNodeId, entry.getKey(), 
entry.getValue(), null);
                         }
@@ -924,7 +924,7 @@ public class TcpClientDiscoverySpi extends 
TcpDiscoverySpiAdapter implements Tcp
 
                     Map<Integer, byte[]> data = msg.newNodeDiscoveryData();
 
-                    if (!locNode.isDaemon() && data != null)
+                    if (data != null)
                         onExchange(newNodeId, newNodeId, data, null);
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/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 e1b1a92..81c608a 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
@@ -2211,7 +2211,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
      * @param req Get class request.
      * @return Get class response.
      */
-    private TcpDiscoveryClassResponse 
processGetClassRequest(TcpDiscoveryClassRequest req) {
+    private TcpDiscoveryClassResponse 
processClassRequest(TcpDiscoveryClassRequest req) {
         assert !F.isEmpty(req.className()) : req;
 
         String rsrc = U.classNameToResourceName(req.className());
@@ -3722,7 +3722,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
 
                     Map<Integer, byte[]> data = msg.newNodeDiscoveryData();
 
-                    if (!locNode.isDaemon() && data != null)
+                    if (data != null)
                         onExchange(node.id(), node.id(), data, 
exchangeClassLoader(node, node.id()));
 
                     msg.addDiscoveryData(locNodeId, 
collectExchangeData(node.id()));
@@ -3793,7 +3793,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                 }
 
                 // Notify outside of synchronized block.
-                if (!locNode.isDaemon() && dataMap != null) {
+                if (dataMap != null) {
                     for (Map.Entry<UUID, Map<Integer, byte[]>> entry : 
dataMap.entrySet()) {
                         onExchange(node.id(),
                             entry.getKey(),
@@ -4594,7 +4594,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
 
                 Collection<ClusterNode> snapshot = 
hist.get(msg.topologyVersion());
 
-                if (!locNode.isDaemon() && lsnr != null && (spiState == 
CONNECTED || spiState == DISCONNECTING)) {
+                if (lsnr != null && (spiState == CONNECTED || spiState == 
DISCONNECTING)) {
                     assert msg.messageBytes() != null;
 
                     TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
@@ -4604,17 +4604,17 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                     try {
                         if (msgObj == null)
                             msgObj = marsh.unmarshal(msg.messageBytes(), 
customMessageClassLoader(node));
+
+                        
lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
+                            msg.topologyVersion(),
+                            node,
+                            snapshot,
+                            hist,
+                            msgObj);
                     }
                     catch (IgniteCheckedException e) {
-                        throw new IgniteSpiException("Failed to unmarshal 
discovery custom message.", e);
+                        U.error(log, "Failed to unmarshal discovery custom 
message.", e);
                     }
-
-                    
lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
-                        msg.topologyVersion(),
-                        node,
-                        snapshot,
-                        hist,
-                        msgObj);
                 }
             }
 
@@ -5091,7 +5091,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                             continue;
                         }
                         else if (msg instanceof TcpDiscoveryClassRequest) {
-                            TcpDiscoveryClassResponse res = 
processGetClassRequest((TcpDiscoveryClassRequest)msg);
+                            TcpDiscoveryClassResponse res = 
processClassRequest((TcpDiscoveryClassRequest) msg);
 
                             writeToSocket(sock, res);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/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
deleted file mode 100644
index 96b124c..0000000
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
+++ /dev/null
@@ -1,122 +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.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/46d1369c/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
deleted file mode 100644
index 490f951..0000000
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
+++ /dev/null
@@ -1,63 +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.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/46d1369c/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
index 0634e5f..be3f3bc 100644
--- 
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
@@ -18,13 +18,12 @@
 package org.apache.ignite.tests.p2p.startcache;
 
 import org.apache.ignite.*;
-import org.apache.ignite.cache.query.annotations.*;
+import org.apache.ignite.cache.query.*;
 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.*;
 
 /**
@@ -61,7 +60,7 @@ public class CacheConfigurationP2PTestClient {
 
             int nodes = ignite.cluster().nodes().size();
 
-            if (nodes != 3)
+            if (nodes != 4)
                 throw new Exception("Unexpected nodes number: " + nodes);
 
             CacheConfiguration<Integer, Organization1> ccfg1 = new 
CacheConfiguration<>();
@@ -79,6 +78,11 @@ public class CacheConfigurationP2PTestClient {
             for (int i = 0; i < 500; i++)
                 cache1.put(i, new Organization1("org-" + i));
 
+            SqlQuery<Integer, Organization1> qry1 = new 
SqlQuery<>(Organization1.class, "_key >= 0");
+
+            if (cache1.query(qry1).getAll().isEmpty())
+                throw new Exception("Query failed.");
+
             System.out.println("Sleep some time.");
 
             Thread.sleep(5000); // Sleep some time to wait when connection of 
p2p loader is closed.
@@ -89,67 +93,22 @@ public class CacheConfigurationP2PTestClient {
 
             ccfg2.setName("cache2");
 
-            ccfg2.setIndexedTypes(Integer.class, Organization1.class);
+            ccfg2.setIndexedTypes(Integer.class, Organization2.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;
-        }
+            for (int i = 0; i < 500; i++)
+                cache2.put(i, new Organization2("org-" + i));
 
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return "Organization [id=" + id + ", name=" + name + ']';
-        }
-    }
+            SqlQuery<Integer, Organization2> qry2 = new 
SqlQuery<>(Organization2.class, "_key >= 0");
 
-    /**
-     * 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;
-        }
+            if (cache2.query(qry2).getAll().isEmpty())
+                throw new Exception("Query failed.");
+
+            cache1.close();
 
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return "Organization [id=" + id + ", name=" + name + ']';
+            cache2.close();
         }
     }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization1.java
----------------------------------------------------------------------
diff --git 
a/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization1.java
 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization1.java
new file mode 100644
index 0000000..9c371f1
--- /dev/null
+++ 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization1.java
@@ -0,0 +1,52 @@
+/*
+ * 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.cache.query.annotations.*;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Organization class.
+ */
+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 "Organization1 [id=" + id + ", name=" + name + ']';
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization2.java
----------------------------------------------------------------------
diff --git 
a/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization2.java
 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization2.java
new file mode 100644
index 0000000..e44ce97
--- /dev/null
+++ 
b/modules/extdata/p2p/src/main/java/org/apache/ignite/tests/p2p/startcache/Organization2.java
@@ -0,0 +1,52 @@
+/*
+ * 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.cache.query.annotations.*;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Organization class.
+ */
+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 "Organization2 [id=" + id + ", name=" + name + ']';
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/46d1369c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
new file mode 100644
index 0000000..8f0f4ca
--- /dev/null
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTest.java
@@ -0,0 +1,177 @@
+/*
+ * 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.*;
+import org.apache.ignite.internal.util.lang.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.discovery.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.*;
+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";
+
+    /**
+     * @return Configuration.
+     */
+    static IgniteConfiguration createConfiguration() {
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        cfg.setPeerClassLoadingEnabled(true);
+
+        cfg.setLocalHost("127.0.0.1");
+
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        disco.setIpFinderCleanFrequency(1000);
+
+        TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
+
+        ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47509"));
+
+        disco.setIpFinder(ipFinder);
+
+        cfg.setDiscoverySpi(disco);
+
+        return cfg;
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testCacheConfigurationP2P() throws Exception {
+        try (Ignite ignite = Ignition.start(createConfiguration())) {
+            final CountDownLatch srvsReadyLatch = new CountDownLatch(2);
+
+            final CountDownLatch clientReadyLatch = new CountDownLatch(1);
+
+            GridJavaProcess node1 = null;
+            GridJavaProcess node2 = null;
+            GridJavaProcess clientNode = null;
+
+            Collection<String> jvmArgs = Arrays.asList("-ea", 
"-DIGNITE_QUIET=false");
+
+            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,
+                    jvmArgs,
+                    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,
+                    jvmArgs,
+                    null
+                );
+
+                assertTrue(srvsReadyLatch.await(60, SECONDS));
+
+                String cp = 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,
+                    jvmArgs,
+                    cp
+                );
+
+                assertTrue(clientReadyLatch.await(60, SECONDS));
+
+                int exitCode = clientNode.getProcess().waitFor();
+
+                assertEquals("Unexpected exit code", 0, exitCode);
+
+                node1.killProcess();
+                node2.killProcess();
+
+                final DiscoverySpi spi = 
ignite.configuration().getDiscoverySpi();
+
+                boolean wait = GridTestUtils.waitForCondition(new 
GridAbsPredicate() {
+                    @Override public boolean apply() {
+                        Map p2pLdrs = GridTestUtils.getFieldValue(spi, 
"p2pLdrs");
+
+                        log.info("p2pLdrs: " + p2pLdrs.size());
+
+                        return p2pLdrs.isEmpty();
+                    }
+                }, 10_000);
+
+                assertTrue(wait);
+            }
+            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/46d1369c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
new file mode 100644
index 0000000..738f7cb
--- /dev/null
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationP2PTestServer.java
@@ -0,0 +1,49 @@
+/*
+ * 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 = 
CacheConfigurationP2PTest.createConfiguration();
+
+        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/46d1369c/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
index ba6fe36..a2ccc82 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
@@ -46,6 +46,8 @@ public class IgniteCacheWithIndexingTestSuite extends 
TestSuite {
         suite.addTestSuite(CacheTtlOnheapAtomicLocalSelfTest.class);
         suite.addTestSuite(CacheTtlOnheapAtomicPartitionedSelfTest.class);
 
+        suite.addTestSuite(CacheConfigurationP2PTest.class);
+
         return suite;
     }
 }

Reply via email to