You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2010/06/17 21:59:29 UTC

svn commit: r955717 - in /cassandra/trunk: interface/cassandra.genavro src/java/org/apache/cassandra/avro/CassandraServer.java test/system/test_avro_server.py

Author: eevans
Date: Thu Jun 17 19:59:29 2010
New Revision: 955717

URL: http://svn.apache.org/viewvc?rev=955717&view=rev
Log:
get_count() for avro + system tests

Patch by eevans

Modified:
    cassandra/trunk/interface/cassandra.genavro
    cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
    cassandra/trunk/test/system/test_avro_server.py

Modified: cassandra/trunk/interface/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Thu Jun 17 19:59:29 2010
@@ -146,6 +146,16 @@ protocol Cassandra {
                                          ConsistencyLevel consistency_level)
     throws InvalidRequestException, UnavailableException, TimedOutException;
 
+    /**
+     * Returns the number of columns matching a predicate for a particular
+     * key, ColumnFamily, and optionally SuperColumn.
+     */
+    int get_count(bytes key,
+                  ColumnParent column_parent,
+                  SlicePredicate predicate,
+                  ConsistencyLevel consistency_level)
+    throws InvalidRequestException, UnavailableException, TimedOutException;
+
     void insert(bytes key,
                 ColumnParent column_parent,
                 Column column,

Modified: cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java Thu Jun 17 19:59:29 2010
@@ -320,6 +320,16 @@ public class CassandraServer implements 
     }
 
     @Override
+    public int get_count(ByteBuffer key, ColumnParent columnParent, SlicePredicate predicate, ConsistencyLevel consistencyLevel)
+    throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException
+    {
+        if (logger.isDebugEnabled())
+            logger.debug("get_count");
+        
+        return (int)get_slice(key, columnParent, predicate, consistencyLevel).size();
+    }
+
+    @Override
     public Void insert(ByteBuffer key, ColumnParent parent, Column column, ConsistencyLevel consistencyLevel)
     throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException
     {

Modified: cassandra/trunk/test/system/test_avro_server.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_avro_server.py?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_avro_server.py (original)
+++ cassandra/trunk/test/system/test_avro_server.py Thu Jun 17 19:59:29 2010
@@ -237,6 +237,33 @@ class TestRpcOperations(AvroTester):
         assert_columns_match(coscs[0]['column'], columns[2])
         assert_columns_match(coscs[3]['column'], columns[5])
 
+    def test_get_count(self):
+        "counting columns"
+        self.__set_keyspace('Keyspace1')
+
+        mutations = list()
+
+        for i in range(10):
+            mutation = {'column_or_supercolumn': {'column': new_column(i)}}
+            mutations.append(mutation)
+
+        mutation_params = dict()
+        map_entry = {'key': 'key1', 'mutations': {'Standard1': mutations}}
+        mutation_params['mutation_map'] = [map_entry]
+        mutation_params['consistency_level'] = 'ONE'
+
+        self.client.request('batch_mutate', mutation_params)
+
+        count_params = dict()
+        count_params['key'] = 'key1'
+        count_params['column_parent'] = {'column_family': 'Standard1'}
+        sr = {'start': '', 'finish': '', 'reversed': False, 'count': 1000}
+        count_params['predicate'] = {'slice_range': sr}
+        count_params['consistency_level'] = 'ONE'
+
+        num_columns = self.client.request('get_count', count_params)
+        assert(num_columns == 10), "expected 10 results, got %d" % num_columns
+
     def test_describe_keyspaces(self):
         "retrieving a list of all keyspaces"
         keyspaces = self.client.request('describe_keyspaces', {})