You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/04/24 10:51:59 UTC

camel git commit: CAMEL-9907: Camel-Infinispan: Exposing cache stats through producer

Repository: camel
Updated Branches:
  refs/heads/master 29e23c6ad -> 9cacca2e0


CAMEL-9907: Camel-Infinispan: Exposing cache stats through producer


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9cacca2e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9cacca2e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9cacca2e

Branch: refs/heads/master
Commit: 9cacca2e0d202f8561cf1dc1df36a89b44b2988e
Parents: 29e23c6
Author: Andrea Cosentino <an...@gmail.com>
Authored: Sun Apr 24 10:50:21 2016 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Sun Apr 24 10:50:21 2016 +0200

----------------------------------------------------------------------
 .../infinispan/InfinispanConstants.java         |  1 +
 .../infinispan/InfinispanOperation.java         |  7 ++++
 .../infinispan/InfinispanProducerTest.java      | 41 ++++++++++++++++++++
 3 files changed, 49 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9cacca2e/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
index d791968..8085219 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
@@ -52,6 +52,7 @@ public interface InfinispanConstants {
     String EVENT_DATA = "CamelInfinispanEventData";
     String QUERY = "CamelInfinispanOperationQuery";
     String QUERY_BUILDER = "CamelInfinispanQueryBuilder";
+    String STATS = "CamelInfinispanOperationStats";
 
     String CACHE_ENTRY_JOINING = "CacheEntryJoining";
     String CACHE_ENTRY_LEAVING = "CacheEntryLeaving";

http://git-wip-us.apache.org/repos/asf/camel/blob/9cacca2e/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
----------------------------------------------------------------------
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
index 7da8552..5f64c4b 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
@@ -23,6 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.component.infinispan.remote.InfinispanRemoteOperation;
 import org.apache.camel.util.ObjectHelper;
+import org.infinispan.Cache;
 import org.infinispan.commons.api.BasicCache;
 import org.infinispan.commons.util.concurrent.NotifyingFuture;
 import org.infinispan.query.dsl.Query;
@@ -299,6 +300,12 @@ public final class InfinispanOperation {
                 }
                 setResult(query.list(), message);
             }
+        }, STATS {
+            @Override
+            void execute(InfinispanConfiguration configuration, BasicCache<Object, Object> cache, Message message) {
+                LOGGER.warn("You'll need to enable statistics to obtain meaningful data from your cache");
+                setResult(((Cache) cache).getAdvancedCache().getStats(), message);
+            }
         };
 
         private static final Operation[] OPERATIONS = values();

http://git-wip-us.apache.org/repos/asf/camel/blob/9cacca2e/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
index b3f227d..10cdc83 100644
--- a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
+++ b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
@@ -24,7 +24,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.infinispan.util.Condition;
+import org.infinispan.Cache;
 import org.infinispan.commons.util.concurrent.NotifyingFuture;
+import org.infinispan.stats.Stats;
 import org.junit.Test;
 
 import static org.apache.camel.component.infinispan.util.Wait.waitFor;
@@ -930,6 +932,43 @@ public class InfinispanProducerTest extends InfinispanTestSupport {
         assertTrue(fut.isDone());
         assertTrue(currentCache().isEmpty());
     }
+    
+    @Test
+    public void statsOperation() throws Exception {
+        ((Cache) currentCache()).getAdvancedCache().getStats().setStatisticsEnabled(true); 
+        template.send("direct:start", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(InfinispanConstants.KEY, KEY_ONE);
+                exchange.getIn().setHeader(InfinispanConstants.VALUE, VALUE_ONE);
+                exchange.getIn().setHeader(InfinispanConstants.OPERATION, InfinispanConstants.PUT);
+            }
+        });
+
+        Object value = currentCache().get(KEY_ONE);
+        assertEquals(VALUE_ONE, value.toString());
+        
+        template.send("direct:start", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(InfinispanConstants.KEY, KEY_TWO);
+                exchange.getIn().setHeader(InfinispanConstants.VALUE, VALUE_TWO);
+                exchange.getIn().setHeader(InfinispanConstants.OPERATION, InfinispanConstants.PUT);
+            }
+        });
+
+        value = currentCache().get(KEY_TWO);
+        assertEquals(VALUE_TWO, value.toString());
+        
+        Exchange exchange;
+        exchange = template.send("direct:stats", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+            }
+        });
+        Stats resultStats = exchange.getIn().getHeader(InfinispanConstants.RESULT, Stats.class);
+        assertEquals(2L, resultStats.getTotalNumberOfEntries());
+    }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
@@ -968,6 +1007,8 @@ public class InfinispanProducerTest extends InfinispanTestSupport {
                         .to("infinispan://localhost?cacheContainer=#cacheContainer&command=REMOVEASYNC");
                 from("direct:clearasync")
                         .to("infinispan://localhost?cacheContainer=#cacheContainer&command=CLEARASYNC");
+                from("direct:stats")
+                        .to("infinispan://localhost?cacheContainer=#cacheContainer&command=STATS");
             }
         };
     }