Author: brandonwilliams
Date: Thu Sep  2 21:17:10 2010
New Revision: 992118

URL: http://svn.apache.org/viewvc?rev=992118&view=rev
Log:
avro: test get_indexed_slices.  Patch by brandonwilliams

Modified:
    cassandra/trunk/test/system/__init__.py
    cassandra/trunk/test/system/test_avro_standard.py

Modified: cassandra/trunk/test/system/__init__.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/system/__init__.py?rev=992118&r1=992117&r2=992118&view=diff
==============================================================================
--- cassandra/trunk/test/system/__init__.py (original)
+++ cassandra/trunk/test/system/__init__.py Thu Sep  2 21:17:10 2010
@@ -201,6 +201,12 @@ class AvroTester(BaseTester):
             'key_cache_size': 0
         })
 
+        keyspace1['cf_defs'].append({
+            'keyspace': 'Keyspace1',
+            'name': 'Indexed1',
+            'column_metadata': [{'name': 'birthdate', 'validation_class': 
'LongType', 'index_type': 'KEYS', 'index_name': 'birthdate'}],
+        })
+
         self.client.request('system_add_keyspace', {'ks_def': keyspace1})
         
         keyspace2 = dict()

Modified: cassandra/trunk/test/system/test_avro_standard.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_avro_standard.py?rev=992118&r1=992117&r2=992118&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_avro_standard.py (original)
+++ cassandra/trunk/test/system/test_avro_standard.py Thu Sep  2 21:17:10 2010
@@ -57,6 +57,9 @@ def _read_multi_key_column_count():
 def timestamp():
     return long(time() * 1e6)
 
+def i64(i):
+    return struct.pack('<d', i)
+
 class TestStandardOperations(AvroTester):
     """
     Operations on Standard column families
@@ -338,6 +341,37 @@ class TestStandardOperations(AvroTester)
         for e in counts:
             assert(e['count'] == 0)
 
+    def test_index_slice(self):
+        self.client.request('set_keyspace', {'keyspace': 'Keyspace1'})
+        cp = dict(column_family='Indexed1')
+        self.client.request('insert', dict(key='key1', column_parent=cp, 
column=dict(name='birthdate', value=i64(1), clock={'timestamp': 0}), 
consistency_level='ONE'))
+        self.client.request('insert', dict(key='key2', column_parent=cp, 
column=dict(name='birthdate', value=i64(2), clock={'timestamp': 0}), 
consistency_level='ONE'))
+        self.client.request('insert', dict(key='key2', column_parent=cp, 
column=dict(name='b', value=i64(2), clock={'timestamp': 0}), 
consistency_level='ONE'))
+        self.client.request('insert', dict(key='key3', column_parent=cp, 
column=dict(name='birthdate', value=i64(3), clock={'timestamp': 0}), 
consistency_level='ONE'))
+        self.client.request('insert', dict(key='key3', column_parent=cp, 
column=dict(name='b', value=i64(3), clock={'timestamp': 0}), 
consistency_level='ONE'))
+
+        # simple query on one index expression
+        sp = dict(slice_range=dict(start='', finish='', reversed=False, 
count=1000))
+        clause = dict(expressions=[dict(column_name='birthdate', op='EQ', 
value=i64(1))], start_key='', count=100)
+        result = self.client.request('get_indexed_slices', 
dict(column_parent=cp, index_clause=clause, column_predicate=sp, 
consistency_level='ONE'))
+        assert len(result) == 1, result
+        assert result[0]['key'] == 'key1'
+        assert len(result[0]['columns']) == 1, result[0]['columns']
+
+        # solo unindexed expression is invalid
+        clause = dict(expressions=[dict(column_name='b', op='EQ', 
value=i64(1))], start_key='', count=100)
+        avro_utils.assert_raises(AvroRemoteException,
+            self.client.request, 'get_indexed_slices', dict(column_parent=cp, 
index_clause=clause, column_predicate=sp, consistency_level='ONE'))
+
+        # but unindexed expression added to indexed one is ok
+        clause = dict(expressions=[dict(column_name='b', op='EQ', 
value=i64(3)),
+                                   dict(column_name='birthdate', op='EQ', 
value=i64(3))],
+                                   start_key='', count=100)
+        result = self.client.request('get_indexed_slices', 
dict(column_parent=cp, index_clause=clause, column_predicate=sp, 
consistency_level='ONE'))
+        assert len(result) == 1, result
+        assert result[0]['key'] == 'key3'
+        assert len(result[0]['columns']) == 2, result[0]['columns']
+
     def __get(self, key, cf, super_name, col_name, consistency_level='ONE'):
         """
         Given arguments for the key, column family, super column name,


Reply via email to