Author: mreutegg
Date: Tue Dec  5 11:32:36 2017
New Revision: 1817176

URL: http://svn.apache.org/viewvc?rev=1817176&view=rev
Log:
OAK-7028: MongoDocumentStore.getStats() implementation

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1817176&r1=1817175&r2=1817176&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 Tue Dec  5 11:32:36 2017
@@ -40,6 +40,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import com.google.common.base.Stopwatch;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
@@ -1347,7 +1348,7 @@ public class MongoDocumentStore implemen
      *
      * @return db level ReadPreference
      */
-    ReadPreference getConfiguredReadPreference(Collection collection){
+    <T extends Document> ReadPreference 
getConfiguredReadPreference(Collection<T> collection){
         return getDBCollection(collection).getReadPreference();
     }
 
@@ -1432,8 +1433,10 @@ public class MongoDocumentStore implemen
     @Nonnull
     @Override
     public Map<String, String> getStats() {
-        // TODO: OAK-7028
-        return Collections.emptyMap();
+        ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+        List<DBCollection> all = ImmutableList.of(nodes, clusterNodes, 
settings, journal);
+        all.forEach(c -> toMapBuilder(builder, c.getStats(), c.getName()));
+        return builder.build();
     }
 
     long getMaxDeltaForModTimeIdxSecs() {
@@ -1708,6 +1711,22 @@ public class MongoDocumentStore implemen
         return handleException(ex, collection, Collections.singleton(id));
     }
 
+    private static void toMapBuilder(ImmutableMap.Builder<String, String> 
builder,
+                                     BasicDBObject stats,
+                                     String prefix) {
+        stats.forEach((k, v) -> {
+            // exclude some verbose internals and status
+            if (!k.equals("wiredTiger") && !k.equals("indexDetails") && 
!k.equals("ok")) {
+                String key = prefix + "." + k;
+                if (v instanceof BasicDBObject) {
+                    toMapBuilder(builder, (BasicDBObject) v, key);
+                } else {
+                    builder.put(key, String.valueOf(v));
+                }
+            }
+        });
+    }
+
     private static class BulkUpdateResult {
 
         private final Set<String> failedUpdates;

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java?rev=1817176&r1=1817175&r2=1817176&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
 Tue Dec  5 11:32:36 2017
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.mongo;
 
+import java.util.Map;
+
 import com.mongodb.DB;
 
 import org.apache.jackrabbit.oak.plugins.document.AbstractMongoConnectionTest;
@@ -29,8 +31,10 @@ import org.apache.jackrabbit.oak.plugins
 import org.junit.Test;
 
 import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoUtils.hasIndex;
+import static org.hamcrest.Matchers.hasItem;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 /**
@@ -79,6 +83,15 @@ public class MongoDocumentStoreTest exte
         }
     }
 
+    @Test
+    public void getStats() throws Exception {
+        Map<String, String> info = 
mk.getNodeStore().getDocumentStore().getStats();
+        assertThat(info.keySet(), hasItem("nodes.count"));
+        assertThat(info.keySet(), hasItem("clusterNodes.count"));
+        assertThat(info.keySet(), hasItem("journal.count"));
+        assertThat(info.keySet(), hasItem("settings.count"));
+    }
+
     static final class TestStore extends MongoDocumentStore {
         TestStore(DB db, DocumentMK.Builder builder) {
             super(db, builder);


Reply via email to