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,
