You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by dj...@apache.org on 2018/05/17 06:47:25 UTC

[4/8] gora git commit: -Remove empty lines. -Implement tests within DataStoreTestBase and DataStoreTestUtil. -Fix size() implementation for MemStore, Accumulo, Solr, JCache and OrientDB.

-Remove empty lines.
-Implement tests within DataStoreTestBase and DataStoreTestUtil.
-Fix size() implementation for MemStore, Accumulo, Solr, JCache and OrientDB.

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

Branch: refs/heads/master
Commit: 8d99c0554f4dcd620489eefd7963bce4d0a89dab
Parents: eb49374
Author: dev <ca...@gmail.com>
Authored: Tue May 1 00:49:33 2018 -0500
Committer: dev <ca...@gmail.com>
Committed: Tue May 1 00:49:33 2018 -0500

----------------------------------------------------------------------
 .../gora/accumulo/query/AccumuloResult.java     |  3 +-
 .../gora/accumulo/store/AccumuloStoreTest.java  | 27 +++++++
 .../gora/avro/query/DataFileAvroResult.java     |  1 -
 .../org/apache/gora/memory/store/MemStore.java  |  4 +-
 .../main/java/org/apache/gora/query/Result.java |  2 +-
 .../apache/gora/store/DataStoreTestBase.java    | 48 +++++++++++
 .../apache/gora/store/DataStoreTestUtil.java    | 85 +++++++++++++++++++-
 .../gora/dynamodb/query/DynamoDBResult.java     |  1 -
 .../gora/hbase/query/HBaseScannerResult.java    |  1 -
 .../apache/gora/hbase/store/TestHBaseStore.java | 24 +++++-
 .../apache/gora/jcache/query/JCacheResult.java  |  5 +-
 .../gora/mongodb/store/TestMongoStore.java      | 14 +++-
 .../gora/orientdb/query/OrientDBResult.java     |  5 +-
 .../org/apache/gora/solr/query/SolrResult.java  |  4 +-
 14 files changed, 209 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-accumulo/src/main/java/org/apache/gora/accumulo/query/AccumuloResult.java
----------------------------------------------------------------------
diff --git a/gora-accumulo/src/main/java/org/apache/gora/accumulo/query/AccumuloResult.java b/gora-accumulo/src/main/java/org/apache/gora/accumulo/query/AccumuloResult.java
index 7c208f8..217a0c3 100644
--- a/gora-accumulo/src/main/java/org/apache/gora/accumulo/query/AccumuloResult.java
+++ b/gora-accumulo/src/main/java/org/apache/gora/accumulo/query/AccumuloResult.java
@@ -53,7 +53,7 @@ public class AccumuloResult<K,T extends PersistentBase> extends ResultBase<K,T>
   public AccumuloResult(DataStore<K,T> dataStore, Query<K,T> query, Scanner scanner) {
     super(dataStore, query);
     
-    if (this.limit > -1) {
+    if (this.limit > 0) {
       scanner.setBatchSize((int) this.limit);
     }
     iterator = new RowIterator(scanner.iterator());
@@ -98,5 +98,4 @@ public class AccumuloResult<K,T extends PersistentBase> extends ResultBase<K,T>
   public int size() {
     return (int) this.limit;
   }
-  
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-accumulo/src/test/java/org/apache/gora/accumulo/store/AccumuloStoreTest.java
----------------------------------------------------------------------
diff --git a/gora-accumulo/src/test/java/org/apache/gora/accumulo/store/AccumuloStoreTest.java b/gora-accumulo/src/test/java/org/apache/gora/accumulo/store/AccumuloStoreTest.java
index f8b7526..54f5519 100644
--- a/gora-accumulo/src/test/java/org/apache/gora/accumulo/store/AccumuloStoreTest.java
+++ b/gora-accumulo/src/test/java/org/apache/gora/accumulo/store/AccumuloStoreTest.java
@@ -24,9 +24,13 @@ import org.apache.gora.examples.generated.WebPage;
 import org.apache.gora.store.DataStore;
 import org.apache.gora.store.DataStoreFactory;
 import org.apache.gora.store.DataStoreTestBase;
+import static org.apache.gora.store.DataStoreTestBase.log;
+import org.apache.gora.store.DataStoreTestUtil;
+import static org.apache.gora.store.DataStoreTestUtil.testResultSize;
 import org.apache.hadoop.conf.Configuration;
 import org.junit.Before;
 import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * Tests extending {@link org.apache.gora.store.DataStoreTestBase}
@@ -57,4 +61,27 @@ public class AccumuloStoreTest extends DataStoreTestBase {
   @Override
   public void testDeleteByQueryFields() throws IOException {
   }
+  
+  @Test
+  @Ignore("Accumulo does not support Result#size() without limit set")
+  @Override
+  public void testResultSize() throws Exception {
+  }
+  
+  @Test
+  @Ignore("Accumulo does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeStartKey() throws Exception {
+  }
+  
+  @Ignore("Accumulo does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeEndKey() throws Exception {
+  }
+  
+  @Test
+  @Ignore("Accumulo does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeKeyRange() throws Exception {
+  }
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-core/src/main/java/org/apache/gora/avro/query/DataFileAvroResult.java
----------------------------------------------------------------------
diff --git a/gora-core/src/main/java/org/apache/gora/avro/query/DataFileAvroResult.java b/gora-core/src/main/java/org/apache/gora/avro/query/DataFileAvroResult.java
index 089f692..0adeb90 100644
--- a/gora-core/src/main/java/org/apache/gora/avro/query/DataFileAvroResult.java
+++ b/gora-core/src/main/java/org/apache/gora/avro/query/DataFileAvroResult.java
@@ -86,5 +86,4 @@ public class DataFileAvroResult<K, T extends PersistentBase> extends ResultBase<
   public int size() {
     return (int) (end - start);
   }
-  
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
----------------------------------------------------------------------
diff --git a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
index e1fe7f2..6f1b3e2 100644
--- a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
+++ b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
@@ -92,7 +92,9 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> {
 
     @Override
     public int size() {
-      return map.navigableKeySet().size();
+      int totalSize = map.navigableKeySet().size();
+      int intLimit = (int)this.limit;
+      return intLimit > 0 && totalSize>intLimit ? intLimit : totalSize;
     }
   }
 

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-core/src/main/java/org/apache/gora/query/Result.java
----------------------------------------------------------------------
diff --git a/gora-core/src/main/java/org/apache/gora/query/Result.java b/gora-core/src/main/java/org/apache/gora/query/Result.java
index d1ead9a..6854d89 100644
--- a/gora-core/src/main/java/org/apache/gora/query/Result.java
+++ b/gora-core/src/main/java/org/apache/gora/query/Result.java
@@ -96,7 +96,7 @@ public interface Result<K, T extends Persistent> {
 
   void close() throws IOException;
   /**
-   * Returns the number items the result has.
+   * Returns the number of items the result has.
    *
    * @return the number of items
    */

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
----------------------------------------------------------------------
diff --git a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
index 2de6a41..625df39 100644
--- a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
+++ b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
@@ -358,4 +358,52 @@ public abstract class DataStoreTestBase {
     log.info("test method: testGetPartitions");
     DataStoreTestUtil.testGetPartitions(webPageStore);
   }
+  
+  @Test
+  public void testResultSize() throws Exception {
+    log.info("test method: testResultSize");
+    DataStoreTestUtil.testResultSizeWebPages(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeStartKey() throws Exception {
+    log.info("test method: testResultSizeStartKey");
+    DataStoreTestUtil.testResultSizeWebPagesStartKey(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeEndKey() throws Exception {
+    log.info("test method: testResultSizeEndKey");
+    DataStoreTestUtil.testResultSizeWebPagesEndKey(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeKeyRange() throws Exception {
+    log.info("test method: testResultSizeKeyRange");
+    DataStoreTestUtil.testResultSizeWebPagesKeyRange(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeWithLimit() throws Exception {
+    log.info("test method: testResultSizeWithLimit");
+    DataStoreTestUtil.testResultSizeWebPagesWithLimit(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeStartKeyWithLimit() throws Exception {
+    log.info("test method: testResultSizeStartKeyWithLimit");
+    DataStoreTestUtil.testResultSizeWebPagesStartKeyWithLimit(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeEndKeyWithLimit() throws Exception {
+    log.info("test method: testResultSizeEndKeyWithLimit");
+    DataStoreTestUtil.testResultSizeWebPagesEndKeyWithLimit(webPageStore);
+  }
+  
+  @Test
+  public void testResultSizeKeyRangeWithLimit() throws Exception {
+    log.info("test method: testResultSizeKeyRangeWithLimit");
+    DataStoreTestUtil.testResultSizeWebPagesKeyRangeWithLimit(webPageStore);
+  }
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
----------------------------------------------------------------------
diff --git a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
index b6e3d7c..5a38df4 100644
--- a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
+++ b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
@@ -814,7 +814,7 @@ public class DataStoreTestUtil {
         if(setEndKeys)
           query.setEndKey(sortedUrls.get(j));
         Result<String, WebPage> result = query.execute();
-
+        
         int r=0;
         while(result.next()) {
           WebPage page = result.get();
@@ -1209,4 +1209,87 @@ public class DataStoreTestUtil {
     return fieldNames;
   }
   
+  public static void testResultSize(DataStore<String, WebPage> store,
+      boolean setStartKeys, boolean setEndKeys, boolean setLimit)
+  throws Exception {
+    createWebPageData(store);
+
+    //create sorted set of urls
+    List<String> sortedUrls = new ArrayList<>();
+    Collections.addAll(sortedUrls, URLS);
+    Collections.sort(sortedUrls);
+
+    //try all ranges
+    for(int i=0; i<sortedUrls.size(); i++) {
+      for(int j=i; j<sortedUrls.size(); j++) {
+        Query<String, WebPage> query = store.newQuery();
+        if(setStartKeys)
+          query.setStartKey(sortedUrls.get(i));
+        if(setEndKeys)
+          query.setEndKey(sortedUrls.get(j));
+        int expectedLength = (setEndKeys ? j+1: sortedUrls.size()) -
+                             (setStartKeys ? i: 0);
+        if (setLimit){
+          //limit half of the expected results
+          int limit = expectedLength/2;
+          if (limit > 0){
+            query.setLimit(limit);
+          } else {
+            continue;
+          }
+        }
+        Result<String, WebPage> result = query.execute();
+        int size = result.size();
+        int r=0;
+        while(result.next()) {
+          r++;
+        }
+        assertEquals(r, size);
+        if(!setEndKeys)
+          break;
+      }
+      if(!setStartKeys)
+        break;
+    }
+  }
+  
+  public static void testResultSizeWebPages(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, false, false, false);
+  }
+  
+  public static void testResultSizeWebPagesStartKey(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, true, false, false);
+  }
+  
+  public static void testResultSizeWebPagesEndKey(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, false, false, false);
+  }
+  
+  public static void testResultSizeWebPagesKeyRange(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, true, true, false);
+  }
+  
+  public static void testResultSizeWebPagesWithLimit(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, false, false, true);
+  }
+  
+  public static void testResultSizeWebPagesStartKeyWithLimit(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, true, false, true);
+  }
+  
+  public static void testResultSizeWebPagesEndKeyWithLimit(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, false, false, true);
+  }
+  
+  public static void testResultSizeWebPagesKeyRangeWithLimit(DataStore<String, WebPage> store)
+  throws Exception {
+    testResultSize(store, true, true, true);
+  }
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/query/DynamoDBResult.java
----------------------------------------------------------------------
diff --git a/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/query/DynamoDBResult.java b/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/query/DynamoDBResult.java
index c191880..61810e4 100644
--- a/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/query/DynamoDBResult.java
+++ b/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/query/DynamoDBResult.java
@@ -88,5 +88,4 @@ public class DynamoDBResult<K, T extends Persistent> extends ResultWSBase<K, T>
   public int size() {
     return dynamoDBResultSet.size();
   }
-
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-hbase/src/main/java/org/apache/gora/hbase/query/HBaseScannerResult.java
----------------------------------------------------------------------
diff --git a/gora-hbase/src/main/java/org/apache/gora/hbase/query/HBaseScannerResult.java b/gora-hbase/src/main/java/org/apache/gora/hbase/query/HBaseScannerResult.java
index ce4ea51..72a64fa 100644
--- a/gora-hbase/src/main/java/org/apache/gora/hbase/query/HBaseScannerResult.java
+++ b/gora-hbase/src/main/java/org/apache/gora/hbase/query/HBaseScannerResult.java
@@ -74,5 +74,4 @@ public class HBaseScannerResult<K, T extends PersistentBase> extends HBaseResult
   public int size() {
     return (int) this.limit;
   }
-  
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
----------------------------------------------------------------------
diff --git a/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java b/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
index c79588a..b4440be 100644
--- a/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
+++ b/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
@@ -245,5 +245,27 @@ public class TestHBaseStore extends DataStoreTestBase {
     exceptionalConf.set("gora.hbase.mapping.file","gora-hbase-mapping-mismatch.xml");
     DataStoreFactory.createDataStore(HBaseStore.class, String.class, WebPage.class, exceptionalConf);
   }
-
+  
+  @Test
+  @Ignore("HBase does not support Result#size() without limit set")
+  @Override
+  public void testResultSize() throws Exception {
+  }
+  
+  @Test
+  @Ignore("HBase does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeStartKey() throws Exception {
+  }
+  
+  @Ignore("HBase does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeEndKey() throws Exception {
+  }
+  
+  @Test
+  @Ignore("HBase does not support Result#size() without limit set")
+  @Override
+  public void testResultSizeKeyRange() throws Exception {
+  }
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-jcache/src/main/java/org/apache/gora/jcache/query/JCacheResult.java
----------------------------------------------------------------------
diff --git a/gora-jcache/src/main/java/org/apache/gora/jcache/query/JCacheResult.java b/gora-jcache/src/main/java/org/apache/gora/jcache/query/JCacheResult.java
index 0eba8f1..6048e12 100644
--- a/gora-jcache/src/main/java/org/apache/gora/jcache/query/JCacheResult.java
+++ b/gora-jcache/src/main/java/org/apache/gora/jcache/query/JCacheResult.java
@@ -84,7 +84,8 @@ public class JCacheResult<K, T extends PersistentBase> extends ResultBase<K, T>
 
   @Override
   public int size() {
-    return cacheKeySet.size();
+    int totalSize = cacheKeySet.size();
+    int intLimit = (int)this.limit;
+    return intLimit > 0 && totalSize>intLimit ? intLimit : totalSize;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore.java
----------------------------------------------------------------------
diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore.java
index 9deb906..824cc9a 100644
--- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore.java
+++ b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore.java
@@ -65,7 +65,19 @@ public abstract class TestMongoStore extends DataStoreTestBase {
   public void testQueryKeyRange() throws Exception {
     // Skip until GORA-66 is fixed: need better semantic for end/start keys
   }
-
+  
+  @Ignore("Skip until GORA-66 is fixed: need better semantic for end/start keys")
+  @Override
+  public void testResultSizeKeyRange() throws Exception {
+    // Skip until GORA-66 is fixed: need better semantic for end/start keys
+  }
+  
+  @Ignore("Skip until GORA-66 is fixed: need better semantic for end/start keys")
+  @Override
+  public void testResultSizeKeyRangeWithLimit() throws Exception {
+    // Skip until GORA-66 is fixed: need better semantic for end/start keys
+  }
+  
   @Ignore("MongoStore doesn't support 3 types union field yet")
   @Override
   public void testGet3UnionField() throws Exception {

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-orientdb/src/main/java/org/apache/gora/orientdb/query/OrientDBResult.java
----------------------------------------------------------------------
diff --git a/gora-orientdb/src/main/java/org/apache/gora/orientdb/query/OrientDBResult.java b/gora-orientdb/src/main/java/org/apache/gora/orientdb/query/OrientDBResult.java
index c0bf7e5..3d6a3e1 100644
--- a/gora-orientdb/src/main/java/org/apache/gora/orientdb/query/OrientDBResult.java
+++ b/gora-orientdb/src/main/java/org/apache/gora/orientdb/query/OrientDBResult.java
@@ -102,7 +102,8 @@ public class OrientDBResult<K, T extends PersistentBase> extends ResultBase<K, T
 
   @Override
   public int size() {
-    return size;
+    int totalSize = size;
+    int intLimit = (int)this.limit;
+    return intLimit > 0 && totalSize>intLimit ? intLimit : totalSize;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/gora/blob/8d99c055/gora-solr/src/main/java/org/apache/gora/solr/query/SolrResult.java
----------------------------------------------------------------------
diff --git a/gora-solr/src/main/java/org/apache/gora/solr/query/SolrResult.java b/gora-solr/src/main/java/org/apache/gora/solr/query/SolrResult.java
index e4f3c69..8524c87 100644
--- a/gora-solr/src/main/java/org/apache/gora/solr/query/SolrResult.java
+++ b/gora-solr/src/main/java/org/apache/gora/solr/query/SolrResult.java
@@ -127,6 +127,8 @@ public class SolrResult<K, T extends PersistentBase> extends ResultBase<K, T> {
 
   @Override
   public int size() {
-    return list.size();
+    int totalSize = list.size();
+    int intLimit = (int)this.limit;
+    return intLimit > 0 && totalSize>intLimit ? intLimit : totalSize;
   }
 }