You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/03/02 09:11:36 UTC

[17/19] ignite git commit: ignite-1232 Improved test.

ignite-1232 Improved test.


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

Branch: refs/heads/ignite-1232
Commit: 0bf14f09aa7f7099fc4b4dfbe9d8c74db221f824
Parents: 71286d7
Author: sboikov <sb...@gridgain.com>
Authored: Wed Mar 2 10:08:13 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Mar 2 11:02:01 2016 +0300

----------------------------------------------------------------------
 ...niteCrossCachesDistributedJoinQueryTest.java | 142 ++++++++++++-------
 1 file changed, 93 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0bf14f09/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCrossCachesDistributedJoinQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCrossCachesDistributedJoinQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCrossCachesDistributedJoinQueryTest.java
index 648a4c7..dbe339c 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCrossCachesDistributedJoinQueryTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCrossCachesDistributedJoinQueryTest.java
@@ -28,23 +28,18 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ThreadLocalRandom;
-import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.QueryEntity;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.cache.query.annotations.QuerySqlField;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.util.lang.GridAbsPredicateX;
-import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T4;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
-import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
@@ -168,12 +163,14 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
      * @param personCacheType Person cache type.
      * @param accountCacheType Account cache type.
      * @param orgCacheType Organization cache type.
+     * @throws Exception If failed.
      */
     private void checkDistributedCrossCacheJoin(final TestCacheType personCacheType,
         final TestCacheType accountCacheType,
         final TestCacheType orgCacheType) throws Exception {
-        info("Checking distributed cross cache join [personCache=" + personCacheType + ", accCache=" + accountCacheType
-            + ", orgCache=" + orgCacheType + "]");
+        info("Checking distributed cross cache join [personCache=" + personCacheType +
+            ", accCache=" + accountCacheType +
+            ", orgCache=" + orgCacheType + "]");
 
         Collection<TestCacheType> cacheTypes = new ArrayList<TestCacheType>() {{
             add(personCacheType);
@@ -182,7 +179,13 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         }};
 
         for (TestCacheType type : cacheTypes) {
-            CacheConfiguration cc = cacheConfiguration(type.cacheName, type.cacheMode, type.backups);
+            CacheConfiguration cc = cacheConfiguration(type.cacheName,
+                type.cacheMode,
+                type.backups,
+                type == accountCacheType,
+                type == personCacheType,
+                type == orgCacheType
+            );
 
             ignite(0).getOrCreateCache(cc);
 
@@ -209,32 +212,36 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
             for (Organization org : data.orgs)
                 orgCache.put(org.id, org);
 
+            List<String> cacheNames = new ArrayList<>();
+
+            cacheNames.add(personCacheType.cacheName);
+            cacheNames.add(orgCacheType.cacheName);
+            cacheNames.add(accountCacheType.cacheName);
+
             for (int i = 0; i < NODES; i++) {
                 log.info("Test node: " + i);
 
-                checkPersonAccountsJoin(orgCache, data.accountsCntForPerson, accCache.getName(), personCache.getName());
+                for (String cacheName : cacheNames) {
+                    IgniteCache cache = ignite(i).cache(cacheName);
+
+                    log.info("Use cache: " + cache.getName());
 
-                checkOrganizationPersonsJoin(accCache, data.personsCntAtOrg,
-                    orgCacheType.cacheName, personCacheType.cacheName);
+                    checkPersonAccountsJoin(cache,
+                        data.accountsCntForPerson,
+                        accCache.getName(),
+                        personCache.getName());
+
+                    checkOrganizationPersonsJoin(cache,
+                        data.personsCntAtOrg,
+                        orgCacheType.cacheName,
+                        personCacheType.cacheName);
+                }
             }
         }
         finally {
             ignite(0).destroyCache(accountCacheType.cacheName);
             ignite(0).destroyCache(personCacheType.cacheName);
             ignite(0).destroyCache(orgCacheType.cacheName);
-
-            assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicateX() {
-                @Override public boolean applyx() throws IgniteCheckedException {
-                    for (int i = 0; i < NODES; i++) {
-                        if (grid(i).cache(accountCacheType.cacheName) != null
-                            || grid(i).cache(personCacheType.cacheName) != null
-                            || grid(i).cache(orgCacheType.cacheName) != null)
-                            return false;
-                    }
-
-                    return true;
-                }
-            }, 10_000));
         }
     }
 
@@ -253,7 +260,7 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         Collection<Person> persons = new ArrayList<>();
         Collection<Account> accounts = new ArrayList<>();
 
-        final int ORG_CNT = 1;
+        final int ORG_CNT = 10;
 
         for (int id = 0; id < ORG_CNT; id++)
             orgs.add(new Organization(id, "org-" + id));
@@ -262,7 +269,7 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         Set<Integer> accountIds = new HashSet<>();
 
         for (int orgId = 0; orgId < ORG_CNT; orgId++) {
-            int personsCnt = ThreadLocalRandom.current().nextInt(100);
+            int personsCnt = ThreadLocalRandom.current().nextInt(20);
 
             for (int p = 0; p < personsCnt; p++) {
                 int personId = ThreadLocalRandom.current().nextInt(10, 10_000);
@@ -292,18 +299,26 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         }
 
         return new Data(orgs, persons, accounts, personsCntAtOrg, accountsCntForPerson);
-
     }
 
     /**
+     * @param cacheName Cache name.
      * @param cacheMode Cache mode.
      * @param backups Number of backups.
+     * @param accountIdx Account index flag.
+     * @param personIdx Person index flag.
+     * @param orgIdx Organization index flag.
      * @return Cache configuration.
      */
-    private CacheConfiguration cacheConfiguration(String cacheName, CacheMode cacheMode, int backups) {
+    private CacheConfiguration cacheConfiguration(String cacheName,
+        CacheMode cacheMode,
+        int backups,
+        boolean accountIdx,
+        boolean personIdx,
+        boolean orgIdx) {
         CacheConfiguration ccfg = new CacheConfiguration();
 
-        ccfg.setName(String.valueOf(cacheName));
+        ccfg.setName(cacheName);
 
         ccfg.setCacheMode(cacheMode);
 
@@ -312,25 +327,39 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
 
         ccfg.setWriteSynchronizationMode(FULL_SYNC);
 
-        QueryEntity account = new QueryEntity();
-        account.setKeyType(Integer.class.getName());
-        account.setValueType(Account.class.getName());
-        account.addQueryField("personId", Integer.class.getName(), null);
+        List<QueryEntity> entities = new ArrayList<>();
+
+        if (accountIdx) {
+            QueryEntity account = new QueryEntity();
+            account.setKeyType(Integer.class.getName());
+            account.setValueType(Account.class.getName());
+            account.addQueryField("personId", Integer.class.getName(), null);
+
+            entities.add(account);
+        }
+
+        if (personIdx) {
+            QueryEntity person = new QueryEntity();
+            person.setKeyType(Integer.class.getName());
+            person.setValueType(Person.class.getName());
+            person.addQueryField("orgId", Integer.class.getName(), null);
+            person.addQueryField("id", Integer.class.getName(), null);
+            person.addQueryField("name", String.class.getName(), null);
 
-        QueryEntity person = new QueryEntity();
-        person.setKeyType(Integer.class.getName());
-        person.setValueType(Person.class.getName());
-        person.addQueryField("orgId", Integer.class.getName(), null);
-        person.addQueryField("id", Integer.class.getName(), null);
-        person.addQueryField("name", String.class.getName(), null);
+            entities.add(person);
+        }
 
-        QueryEntity org = new QueryEntity();
-        org.setKeyType(Integer.class.getName());
-        org.setValueType(Organization.class.getName());
-        org.addQueryField("id", Integer.class.getName(), null);
-        org.addQueryField("name", String.class.getName(), null);
+        if (orgIdx) {
+            QueryEntity org = new QueryEntity();
+            org.setKeyType(Integer.class.getName());
+            org.setValueType(Organization.class.getName());
+            org.addQueryField("id", Integer.class.getName(), null);
+            org.addQueryField("name", String.class.getName(), null);
 
-        ccfg.setQueryEntities(F.asList(account, person, org));
+            entities.add(org);
+        }
+
+        ccfg.setQueryEntities(entities);
 
         return ccfg;
     }
@@ -338,8 +367,12 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
     /**
      * @param cache Cache.
      * @param cnts Organizations per person counts.
+     * @param orgCacheName Organization cache name.
+     * @param personCacheName Person cache name.
      */
-    private void checkOrganizationPersonsJoin(IgniteCache cache, Map<Integer, Integer> cnts, String orgCacheName,
+    private void checkOrganizationPersonsJoin(IgniteCache cache,
+        Map<Integer, Integer> cnts,
+        String orgCacheName,
         String personCacheName) {
         SqlFieldsQuery qry = new SqlFieldsQuery("select o.name, p.name " +
             "from \"" + orgCacheName + "\".Organization o, \"" + personCacheName + "\".Person p " +
@@ -373,8 +406,12 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
     /**
      * @param cache Cache.
      * @param cnts Accounts per person counts.
+     * @param accCacheName Account cache name.
+     * @param personCacheName Person cache name.
      */
-    private void checkPersonAccountsJoin(IgniteCache cache, Map<Integer, Integer> cnts, String accCacheName,
+    private void checkPersonAccountsJoin(IgniteCache cache,
+        Map<Integer, Integer> cnts,
+        String accCacheName,
         String personCacheName) {
         SqlFieldsQuery qry1 = new SqlFieldsQuery("select p.name " +
             "from \"" + personCacheName + "\".Person p, \"" + accCacheName + "\".Account a " +
@@ -388,8 +425,6 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
 
         qry2.setDistributedJoins(true);
 
-        Ignite ignite = (Ignite)cache.unwrap(Ignite.class);
-
         long total = 0;
 
         for (Map.Entry<Integer, Integer> e : cnts.entrySet()) {
@@ -527,6 +562,10 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         @QuerySqlField
         private int personId;
 
+        /**
+         * @param id ID.
+         * @param personId Person ID.
+         */
         Account(int id, int personId) {
             this.id = id;
             this.personId = personId;
@@ -548,6 +587,11 @@ public class IgniteCrossCachesDistributedJoinQueryTest extends GridCommonAbstrac
         @QuerySqlField
         String name;
 
+        /**
+         * @param id ID.
+         * @param orgId Organization ID.
+         * @param name Name.
+         */
         public Person(int id, int orgId, String name) {
             this.id = id;
             this.orgId = orgId;