You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by ol...@apache.org on 2014/03/17 14:47:04 UTC

svn commit: r1578372 - in /incubator/sirona/trunk/server/store/cassandra/src: main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java

Author: olamy
Date: Mon Mar 17 13:47:03 2014
New Revision: 1578372

URL: http://svn.apache.org/r1578372
Log:
fix retrieving all path track entries for a trackingId

Modified:
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java
    incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java?rev=1578372&r1=1578371&r2=1578372&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/pathtracking/CassandraPathTrackingDataStore.java Mon Mar 17 13:47:03 2014
@@ -17,7 +17,6 @@
 
 package org.apache.sirona.cassandra.collector.pathtracking;
 
-import me.prettyprint.cassandra.serializers.IntegerSerializer;
 import me.prettyprint.cassandra.serializers.LongSerializer;
 import me.prettyprint.cassandra.serializers.StringSerializer;
 import me.prettyprint.hector.api.Keyspace;
@@ -108,7 +107,7 @@ public class CassandraPathTrackingDataSt
                 .addInsertion( id, family, column( "methodName", pathTrackingEntry.getMethodName() ) ) //
                 .addInsertion( id, family, column( "startTime", pathTrackingEntry.getStartTime() ) ) //
                 .addInsertion( id, family, column( "executionTime", pathTrackingEntry.getExecutionTime() ) ) //
-                // we force level as long to be able to do slice queries include filtering on level, startTime
+                    // we force level as long to be able to do slice queries include filtering on level, startTime
                 .addInsertion( id, family, column( "level", Long.valueOf( pathTrackingEntry.getLevel() ) ) ) //
                 .addInsertion( "PATH_TRACKING", markerFamilly, emptyColumn( id ) ) //
                 .execute();
@@ -128,7 +127,36 @@ public class CassandraPathTrackingDataSt
     @Override
     public Collection<PathTrackingEntry> retrieve( String trackingId )
     {
-        return null;
+        final QueryResult<OrderedRows<String, String, String>> cResult = //
+            HFactory.createRangeSlicesQuery( keyspace, //
+                                             StringSerializer.get(), //
+                                             StringSerializer.get(), //
+                                             StringSerializer.get() ) //
+                .setColumnNames( "trackingId", "nodeId", "className", "methodName", "startTime", "executionTime",
+                                 "level" ) //
+                .addEqualsExpression( "trackingId", trackingId ) //
+                .setColumnFamily( family ) //
+                .execute();
+
+        Set<PathTrackingEntry> entries = new TreeSet<PathTrackingEntry>( START_TIME_COMPARATOR );
+
+        OrderedRows<String, String, String> rows = cResult.get();
+
+        if ( rows == null )
+        {
+            return entries;
+        }
+
+        for ( Row<String, String, String> row : rows.getList() )
+        {
+            ColumnSlice<String, String> columnSlice = row.getColumnSlice();
+
+            PathTrackingEntry pathTrackingEntry = map( columnSlice );
+
+            entries.add( pathTrackingEntry );
+        }
+
+        return entries;
     }
 
     @Override
@@ -147,7 +175,7 @@ public class CassandraPathTrackingDataSt
 
         int size = cResult.get().getList().size();
 
-        Set<String> ids = new HashSet<String>();
+        Set<String> ids = new HashSet<String>( size );
 
         OrderedRows<String, String, Long> rows = cResult.get();
 

Modified: incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java?rev=1578372&r1=1578371&r2=1578372&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/local/PathTrackingDataStoreTest.java Mon Mar 17 13:47:03 2014
@@ -19,9 +19,9 @@ package org.apache.sirona.cassandra.loca
 import me.prettyprint.hector.api.Cluster;
 import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
 import org.apache.sirona.cassandra.CassandraBuilder;
+import org.apache.sirona.cassandra.collector.pathtracking.CassandraPathTrackingDataStore;
 import org.apache.sirona.cassandra.framework.CassandraRunner;
 import org.apache.sirona.cassandra.framework.CassandraTestInject;
-import org.apache.sirona.cassandra.collector.pathtracking.CassandraPathTrackingDataStore;
 import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.tracking.PathTrackingEntry;
 import org.junit.Assert;
@@ -38,7 +38,7 @@ import java.util.UUID;
 /**
  *
  */
-@RunWith(CassandraRunner.class)
+@RunWith( CassandraRunner.class )
 public class PathTrackingDataStoreTest
 {
 
@@ -48,15 +48,15 @@ public class PathTrackingDataStoreTest
 
     private final CassandraBuilder builder = IoCs.findOrCreateInstance( CassandraBuilder.class );
 
-    CassandraPathTrackingDataStore store;
+    CassandraPathTrackingDataStore thestore;
 
     protected CassandraPathTrackingDataStore getStore()
     {
-        if ( store != null )
+        if ( thestore != null )
         {
-            return store;
+            return thestore;
         }
-        return store = IoCs.findOrCreateInstance(
+        return thestore = IoCs.findOrCreateInstance(
             CassandraPathTrackingDataStore.class );// .processInstance( new CassandraPathTrackingDataStore() );
     }
 
@@ -120,12 +120,73 @@ public class PathTrackingDataStoreTest
             uuid = UUID.randomUUID().toString();
             ids.add( uuid );
             PathTrackingEntry second = new PathTrackingEntry( uuid, //
-                                           "nodeId", //
-                                           "org.au.beer.TheBest", //
-                                           "littlecreatures", //
-                                           twoDaysAgo.getTime().getTime(), //
-                                           12, //
-                                           1 );
+                                                              "nodeId", //
+                                                              "org.au.beer.TheBest", //
+                                                              "littlecreatures", //
+                                                              twoDaysAgo.getTime().getTime(), //
+                                                              12, //
+                                                              1 );
+
+            getStore().store( second );
+
+            Assert.assertFalse( getStore().retrieveAll().isEmpty() );
+
+            Assert.assertEquals( 2, getStore().retrieveAll().size() );
+
+            Calendar yesterday = Calendar.getInstance();
+            yesterday.add( Calendar.DATE, -1 );
+
+            Collection<String> trackingIds = getStore().retrieveTrackingIds( yesterday.getTime(), new Date() );
+
+            Assert.assertEquals( 1, trackingIds.size() );
+
+            Assert.assertEquals( first.getTrackingId(), trackingIds.iterator().next() );
+
+
+        }
+        finally
+        {
+            cluster.truncate( builder.getKeyspace(), builder.getPathTrackingColumFamily() );
+
+            Assert.assertTrue( getStore().retrieveAll().isEmpty() );
+
+            Assert.assertEquals( 0, getStore().retrieveAll().size() );
+
+        }
+    }
+
+
+    @Test
+    public void test_retrieve_tracking_path()
+        throws Exception
+    {
+
+        try
+        {
+            String firstuuid = UUID.randomUUID().toString();
+
+            PathTrackingEntry first = new PathTrackingEntry( firstuuid, //
+                                                             "nodeId", //
+                                                             "org.au.beer.TheBest", //
+                                                             "littlecreatures", //
+                                                             new Date().getTime(), //
+                                                             12, //
+                                                             1 );
+
+            getStore().store( first );
+
+            Calendar twoDaysAgo = Calendar.getInstance();
+            twoDaysAgo.add( Calendar.DATE, -2 );
+
+            String seconduuid = UUID.randomUUID().toString();
+
+            PathTrackingEntry second = new PathTrackingEntry( seconduuid, //
+                                                              "nodeId", //
+                                                              "org.au.beer.TheBest", //
+                                                              "littlecreatures", //
+                                                              twoDaysAgo.getTime().getTime(), //
+                                                              12, //
+                                                              1 );
 
             getStore().store( second );
 
@@ -133,17 +194,36 @@ public class PathTrackingDataStoreTest
 
             Assert.assertEquals( 2, getStore().retrieveAll().size() );
 
+            PathTrackingEntry third = new PathTrackingEntry( firstuuid, //
+                                                             "nodeId", //
+                                                             "org.au.beer.TheBest", //
+                                                             "littlecreatures", //
+                                                             new Date().getTime(), //
+                                                             23, //
+                                                             2 );
+
+            getStore().store( third );
+
+            Assert.assertFalse( getStore().retrieveAll().isEmpty() );
+
+            Assert.assertEquals( 2, getStore().retrieveAll().size() );
+
+            Assert.assertEquals( 2, getStore().retrieveAll().get( firstuuid ).size() );
+
             Calendar yesterday = Calendar.getInstance();
             yesterday.add( Calendar.DATE, -1 );
 
-            Collection<String> trackingIds = store.retrieveTrackingIds( yesterday.getTime(), new Date() );
+            Collection<String> trackingIds = getStore().retrieveTrackingIds( yesterday.getTime(), new Date() );
 
-            KeyspaceDefinition definition = cluster.describeKeyspace( builder.getKeyspace() );
 
             Assert.assertEquals( 1, trackingIds.size() );
 
             Assert.assertEquals( first.getTrackingId(), trackingIds.iterator().next() );
 
+            Collection<PathTrackingEntry> entries = getStore().retrieve( firstuuid );
+
+            Assert.assertEquals( 2, entries.size() );
+
 
         }
         finally