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