Author: chetanm
Date: Tue Nov 24 09:47:19 2015
New Revision: 1716093

URL: http://svn.apache.org/viewvc?rev=1716093&view=rev
Log:
OAK-3654 - Integrate with Metrics for various stats collection

-- Made MetricRegistry access public so as to allow use in oak-run
-- Modified the ReadPropertyTest to provide config to enable Metric 
integration. This can be done via setting system property enableMetrics to true

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
    jackrabbit/oak/trunk/oak-run/pom.xml
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
    jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
 Tue Nov 24 09:47:19 2015
@@ -115,7 +115,7 @@ public class MetricStatisticsProvider im
         return getStats(name, StatsType.TIMER);
     }
 
-    MetricRegistry getRegistry() {
+    public MetricRegistry getRegistry() {
         return registry;
     }
 

Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Tue Nov 24 09:47:19 2015
@@ -394,6 +394,12 @@
       <version>1.1</version>
     </dependency>
 
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+      <version>3.1.0</version>
+    </dependency>
+
     <!-- Findbugs annotations -->
     <dependency>
       <groupId>com.google.code.findbugs</groupId>

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
 Tue Nov 24 09:47:19 2015
@@ -16,8 +16,30 @@
  */
 package org.apache.jackrabbit.oak.benchmark;
 
+import java.lang.management.ManagementFactory;
+import java.util.Collections;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.Session;
+import javax.management.MBeanServer;
+
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricFilter;
+import com.codahale.metrics.Slf4jReporter;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.fixture.JcrCreator;
+import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
+import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * {@code ReadPropertyTest} implements a performance test, which reads
@@ -25,7 +47,7 @@ import javax.jcr.Session;
  * third one, which does not exist.
  */
 public class ReadPropertyTest extends AbstractTest {
-
+    private final Logger log = LoggerFactory.getLogger(getClass());
     private Session session;
 
     private Node root;
@@ -54,4 +76,40 @@ public class ReadPropertyTest extends Ab
         session.save();
         session.logout();
     }
+
+    @Override
+    protected Repository[] createRepository(RepositoryFixture fixture) throws 
Exception {
+        if (fixture instanceof OakRepositoryFixture){
+            return ((OakRepositoryFixture)fixture).setUpCluster(1, new 
JcrCreator(){
+                @Override
+                public Jcr customize(Oak oak) {
+                    boolean enableMetrics = 
Boolean.getBoolean("enableMetrics");
+                    if (enableMetrics) {
+                        log.info("Enabling Metrics integration");
+                        MBeanServer server = 
ManagementFactory.getPlatformMBeanServer();
+                        ScheduledExecutorService executor =
+                                
MoreExecutors.getExitingScheduledExecutorService(new 
ScheduledThreadPoolExecutor(1));
+                        MetricStatisticsProvider statsProvider = new 
MetricStatisticsProvider(server, executor);
+                        oak.getWhiteboard().register(StatisticsProvider.class,
+                                statsProvider, Collections.emptyMap());
+
+                        final Slf4jReporter reporter = 
Slf4jReporter.forRegistry(statsProvider.getRegistry())
+                                
.outputTo(LoggerFactory.getLogger("org.apache.jackrabbit.oak.metrics"))
+                                .convertRatesTo(TimeUnit.SECONDS)
+                                .filter(new MetricFilter() {
+                                    @Override
+                                    public boolean matches(String name, Metric 
metric) {
+                                        return 
"SESSION_READ_DURATION".equals(name);
+                                    }
+                                })
+                                .convertDurationsTo(TimeUnit.MICROSECONDS)
+                                .build();
+                        reporter.start(30, TimeUnit.SECONDS);
+                    }
+                    return new Jcr(oak);
+                }
+            });
+        }
+        return super.createRepository(fixture);
+    }
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml Tue Nov 24 
09:47:19 2015
@@ -38,6 +38,9 @@
 
   <logger name="org.apache.jackrabbit.oak.plugins.tika" level="INFO"/>
 
+  <!-- Metrics Reporting-->
+  <logger name="org.apache.jackrabbit.oak.metrics" level="INFO"/>
+
   <logger 
name="org.apache.jackrabbit.oak.plugins.segment.file.tooling.ConsistencyChecker"
 level="DEBUG"/>
 
   <root level="warn">


Reply via email to