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 2011/03/09 23:00:30 UTC

svn commit: r1080024 - /cassandra/trunk/test/system/test_cql.py

Author: eevans
Date: Wed Mar  9 22:00:30 2011
New Revision: 1080024

URL: http://svn.apache.org/viewvc?rev=1080024&view=rev
Log:
create column families of expected type (tests)

Patch by eevans for CASSANDRA-2027

Modified:
    cassandra/trunk/test/system/test_cql.py

Modified: cassandra/trunk/test/system/test_cql.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_cql.py?rev=1080024&r1=1080023&r2=1080024&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_cql.py (original)
+++ cassandra/trunk/test/system/test_cql.py Wed Mar  9 22:00:30 2011
@@ -20,50 +20,84 @@ def uuid1bytes_to_millis(uuidbytes):
     return (uuid.UUID(bytes=uuidbytes).get_time() / 10000) - 12219292800000L
 
 def load_sample(dbconn):
-    query = "UPDATE Standard1 SET ? = ?, ? = ? WHERE KEY = ?"
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardString1 WITH comparator = ascii
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardUtf82 WITH comparator = utf8
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardLongA WITH comparator = long
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardIntegerA WITH comparator = int
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardUUID WITH comparator = uuid
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardTimeUUID WITH comparator = timeuuid
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY StandardTimeUUIDValues WITH comparator = ascii
+            AND default_validation = timeuuid;
+    """)
+    dbconn.execute("""
+        CREATE COLUMNFAMILY IndexedA ('birthdate' long) WITH comparator = ascii
+            AND default_validation = ascii;
+    """)
+    dbconn.execute("CREATE INDEX ON IndexedA ('birthdate');")
+    
+    query = "UPDATE StandardString1 SET ? = ?, ? = ? WHERE KEY = ?"
     dbconn.execute(query, "ca1", "va1", "col", "val", "ka")
     dbconn.execute(query, "cb1", "vb1", "col", "val", "kb")
     dbconn.execute(query, "cc1", "vc1", "col", "val", "kc")
     dbconn.execute(query, "cd1", "vd1", "col", "val", "kd")
 
     dbconn.execute("""
-        UPDATE Standard2 SET u'%s' = 've1', 'col' = 'val' WHERE KEY = 'kd'
+        UPDATE StandardUtf82 SET u'%s' = 've1', 'col' = 'val' WHERE KEY = 'kd'
     """ % u'\xa9'.encode('utf8'))
     dbconn.execute("""
-        UPDATE Standard2 SET u'cf1' = 'vf1', 'col' = 'val' WHERE KEY = 'kd'
+        UPDATE StandardUtf82 SET u'cf1' = 'vf1', 'col' = 'val' WHERE KEY = 'kd'
     """)
 
     dbconn.execute("""
     BEGIN BATCH USING CONSISTENCY ONE
-     UPDATE StandardLong1 SET 1='1', 2='2', 3='3', 4L='4' WHERE KEY='aa';
-     UPDATE StandardLong1 SET 5='5', 6='6', 7='8', 9L='9' WHERE KEY='ab';
-     UPDATE StandardLong1 SET 9='9', 8='8', 7='7', 6L='6' WHERE KEY='ac';
-     UPDATE StandardLong1 SET 5='5', 4='4', 3='3', 2L='2' WHERE KEY='ad';
-     UPDATE StandardLong1 SET 1='1', 2='2', 3='3', 4L='4' WHERE KEY='ae';
-     UPDATE StandardLong1 SET 1='1', 2='2', 3='3', 4L='4' WHERE KEY='af';
-     UPDATE StandardLong1 SET 5='5', 6='6', 7='8', 9L='9' WHERE KEY='ag';
+     UPDATE StandardLongA SET 1='1', 2='2', 3='3', 4='4' WHERE KEY='aa';
+     UPDATE StandardLongA SET 5='5', 6='6', 7='8', 9='9' WHERE KEY='ab';
+     UPDATE StandardLongA SET 9='9', 8='8', 7='7', 6='6' WHERE KEY='ac';
+     UPDATE StandardLongA SET 5='5', 4='4', 3='3', 2='2' WHERE KEY='ad';
+     UPDATE StandardLongA SET 1='1', 2='2', 3='3', 4='4' WHERE KEY='ae';
+     UPDATE StandardLongA SET 1='1', 2='2', 3='3', 4='4' WHERE KEY='af';
+     UPDATE StandardLongA SET 5='5', 6='6', 7='8', 9='9' WHERE KEY='ag';
     APPLY BATCH
     """)
     
     dbconn.execute("""
     BEGIN BATCH USING CONSISTENCY ONE
-      UPDATE StandardInteger1 SET 10='a', 20='b', 30='c', 40='d' WHERE KEY='k1';
-      UPDATE StandardInteger1 SET 10='e', 20='f', 30='g', 40='h' WHERE KEY='k2';
-      UPDATE StandardInteger1 SET 10='i', 20='j', 30='k', 40='l' WHERE KEY='k3';
-      UPDATE StandardInteger1 SET 10='m', 20='n', 30='o', 40='p' WHERE KEY='k4';
-      UPDATE StandardInteger1 SET 10='q', 20='r', 30='s', 40='t' WHERE KEY='k5';
-      UPDATE StandardInteger1 SET 10='u', 20='v', 30='w', 40='x' WHERE KEY='k6';
-      UPDATE StandardInteger1 SET 10='y', 20='z', 30='A', 40='B' WHERE KEY='k7';
+      UPDATE StandardIntegerA SET 10='a', 20='b', 30='c', 40='d' WHERE KEY='k1';
+      UPDATE StandardIntegerA SET 10='e', 20='f', 30='g', 40='h' WHERE KEY='k2';
+      UPDATE StandardIntegerA SET 10='i', 20='j', 30='k', 40='l' WHERE KEY='k3';
+      UPDATE StandardIntegerA SET 10='m', 20='n', 30='o', 40='p' WHERE KEY='k4';
+      UPDATE StandardIntegerA SET 10='q', 20='r', 30='s', 40='t' WHERE KEY='k5';
+      UPDATE StandardIntegerA SET 10='u', 20='v', 30='w', 40='x' WHERE KEY='k6';
+      UPDATE StandardIntegerA SET 10='y', 20='z', 30='A', 40='B' WHERE KEY='k7';
     APPLY BATCH
     """)
 
     dbconn.execute("""
     BEGIN BATCH
-    UPDATE Indexed1 SET 'birthdate'=100, 'unindexed'=250 WHERE KEY='asmith';
-    UPDATE Indexed1 SET 'birthdate'=100, 'unindexed'=200 WHERE KEY='dozer';
-    UPDATE Indexed1 SET 'birthdate'=175, 'unindexed'=200 WHERE KEY='morpheus';
-    UPDATE Indexed1 SET 'birthdate'=150, 'unindexed'=250 WHERE KEY='neo';
-    UPDATE Indexed1 SET 'birthdate'=125, 'unindexed'=200 WHERE KEY='trinity';
+    UPDATE IndexedA SET 'birthdate'=100, 'unindexed'=250 WHERE KEY='asmith';
+    UPDATE IndexedA SET 'birthdate'=100, 'unindexed'=200 WHERE KEY='dozer';
+    UPDATE IndexedA SET 'birthdate'=175, 'unindexed'=200 WHERE KEY='morpheus';
+    UPDATE IndexedA SET 'birthdate'=150, 'unindexed'=250 WHERE KEY='neo';
+    UPDATE IndexedA SET 'birthdate'=125, 'unindexed'=200 WHERE KEY='trinity';
     APPLY BATCH
     """)
 
@@ -76,7 +110,7 @@ class TestCql(ThriftTester):
     def test_select_simple(self):
         "retrieve a column"
         conn = init()
-        r = conn.execute("SELECT 'ca1' FROM Standard1 WHERE KEY='ka'")
+        r = conn.execute("SELECT 'ca1' FROM StandardString1 WHERE KEY='ka'")
         assert r[0].key == 'ka'
         assert r[0].columns[0].name == 'ca1'
         assert r[0].columns[0].value == 'va1'
@@ -84,14 +118,18 @@ class TestCql(ThriftTester):
     def test_select_columns(self):
         "retrieve multiple columns"
         conn = init()
-        r = conn.execute("SELECT 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
+        r = conn.execute("""
+            SELECT 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
         assert "cd1" in [i.name for i in r[0].columns]
         assert "col" in [i.name for i in r[0].columns]
 
     def test_select_row_range(self):
         "retrieve a range of rows with columns"
         conn = init()
-        r = conn.execute("SELECT 4 FROM StandardLong1 WHERE KEY > 'ad' AND KEY < 'ag';")
+        r = conn.execute("""
+            SELECT 4 FROM StandardLongA WHERE KEY > 'ad' AND KEY < 'ag';
+        """)
         assert len(r) == 3
         assert r[0].key == "ad"
         assert r[1].key == "ae"
@@ -104,12 +142,13 @@ class TestCql(ThriftTester):
         "retrieve a limited range of rows with columns"
         conn = init()
         r = conn.execute("""
-            SELECT 1,5,9 FROM StandardLong1 WHERE KEY > 'aa' AND KEY < 'ag' LIMIT 3
+            SELECT 1,5,9 FROM StandardLongA WHERE KEY > 'aa'
+                    AND KEY < 'ag' LIMIT 3
         """)
         assert len(r) == 3
         
         r = conn.execute("""
-            SELECT 20,40 FROM StandardInteger1 WHERE KEY > 'k1'
+            SELECT 20,40 FROM StandardIntegerA WHERE KEY > 'k1'
                     AND KEY < 'k7' LIMIT 5
         """)
         assert len(r) == 5
@@ -119,13 +158,13 @@ class TestCql(ThriftTester):
     def test_select_columns_slice(self):
         "range of columns (slice) by row"
         conn = init()
-        r = conn.execute("SELECT 1..3 FROM StandardLong1 WHERE KEY = 'aa';")
+        r = conn.execute("SELECT 1..3 FROM StandardLongA WHERE KEY = 'aa';")
         assert len(r) == 1
         assert r[0].columns[0].value == "1"
         assert r[0].columns[1].value == "2"
         assert r[0].columns[2].value == "3"
         
-        r = conn.execute("SELECT 10..30 FROM StandardInteger1 WHERE KEY='k1'")
+        r = conn.execute("SELECT 10..30 FROM StandardIntegerA WHERE KEY='k1'")
         assert len(r) == 1
         assert r[0].columns[0].value == "a"
         assert r[0].columns[1].value == "b"
@@ -135,7 +174,7 @@ class TestCql(ThriftTester):
         "range of columns (slice) by row with limit"
         conn = init()
         r = conn.execute("""
-            SELECT FIRST 1 1..3 FROM StandardLong1 WHERE KEY = 'aa';
+            SELECT FIRST 1 1..3 FROM StandardLongA WHERE KEY = 'aa';
         """)
         assert len(r) == 1
         assert len(r[0].columns) == 1
@@ -145,7 +184,7 @@ class TestCql(ThriftTester):
         "range of columns (slice) by row reversed"
         conn = init()
         r = conn.execute("""
-            SELECT FIRST 2 REVERSED 3..1 FROM StandardLong1 WHERE KEY = 'aa';
+            SELECT FIRST 2 REVERSED 3..1 FROM StandardLongA WHERE KEY = 'aa';
         """)
         assert len(r) == 1, "%d != 1" % len(r)
         assert len(r[0].columns) == 2
@@ -155,13 +194,16 @@ class TestCql(ThriftTester):
     def test_error_on_multiple_key_by(self):
         "ensure multiple key-bys in where clause excepts"
         conn = init()
-        query = "SELECT 'col' FROM Standard1 WHERE KEY = 'ka' AND KEY = 'kb';"
-        assert_raises(CQLException, conn.execute, query)
+        assert_raises(CQLException, conn.execute, """
+            SELECT 'col' FROM StandardString1 WHERE KEY = 'ka' AND KEY = 'kb';
+        """)
 
     def test_index_scan_equality(self):
         "indexed scan where column equals value"
         conn = init()
-        r = conn.execute("SELECT 'birthdate' FROM Indexed1 WHERE 'birthdate' = 100")
+        r = conn.execute("""
+            SELECT 'birthdate' FROM IndexedA WHERE 'birthdate' = 100
+        """)
         assert len(r) == 2
         assert r[0].key == "asmith"
         assert r[1].key == "dozer"
@@ -172,7 +214,8 @@ class TestCql(ThriftTester):
         "indexed scan where a column is greater than a value"
         conn = init()
         r = conn.execute("""
-            SELECT 'birthdate' FROM Indexed1 WHERE 'birthdate' = 100 AND 'unindexed' > 200
+            SELECT 'birthdate' FROM IndexedA WHERE 'birthdate' = 100
+                    AND 'unindexed' > 200
         """)
         assert len(r) == 1
         assert r[0].key == "asmith"
@@ -181,7 +224,8 @@ class TestCql(ThriftTester):
         "indexed scan with a starting key"
         conn = init()
         r = conn.execute("""
-            SELECT 'birthdate' FROM Indexed1 WHERE 'birthdate' = 100 AND KEY > 'asmithZ'
+            SELECT 'birthdate' FROM IndexedA WHERE 'birthdate' = 100
+                    AND KEY > 'asmithZ'
         """)
         assert len(r) == 1
         assert r[0].key == "dozer"
@@ -189,7 +233,7 @@ class TestCql(ThriftTester):
     def test_no_where_clause(self):
         "empty where clause (range query w/o start key)"
         conn = init()
-        r = conn.execute("SELECT 'col' FROM Standard1 LIMIT 3")
+        r = conn.execute("SELECT 'col' FROM StandardString1 LIMIT 3")
         assert len(r) == 3
         assert r[0].key == "ka"
         assert r[1].key == "kb"
@@ -198,48 +242,62 @@ class TestCql(ThriftTester):
     def test_column_count(self):
         "getting a result count instead of results"
         conn = init()
-        r = conn.execute("SELECT COUNT(1..4) FROM StandardLong1 WHERE KEY = 'aa';")
+        r = conn.execute("""
+            SELECT COUNT(1..4) FROM StandardLongA WHERE KEY = 'aa';
+        """)
         assert r == 4, "expected 4 results, got %d" % (r and r or 0)
 
     def test_truncate_columnfamily(self):
         "truncating a column family"
         conn = init()
-        conn.execute('TRUNCATE Standard1;')
-        r = conn.execute("SELECT 'cd1' FROM Standard1 WHERE KEY = 'kd'")
+        conn.execute('TRUNCATE StandardString1;')
+        r = conn.execute("SELECT 'cd1' FROM StandardString1 WHERE KEY = 'kd'")
         assert len(r) == 0
 
     def test_delete_columns(self):
         "delete columns from a row"
         conn = init()
-        r = conn.execute("SELECT 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
+        r = conn.execute("""
+            SELECT 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
         assert "cd1" in [i.name for i in r[0].columns]
         assert "col" in [i.name for i in r[0].columns]
-        conn.execute("DELETE 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
-        r = conn.execute("SELECT 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
+        conn.execute("""
+            DELETE 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
+        r = conn.execute("""
+            SELECT 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
         assert len(r[0].columns) == 0
 
     def test_delete_columns_multi_rows(self):
         "delete columns from multiple rows"
         conn = init()
-        r = conn.execute("SELECT 'col' FROM Standard1 WHERE KEY = 'kc'")
+        r = conn.execute("SELECT 'col' FROM StandardString1 WHERE KEY = 'kc'")
         assert len(r[0].columns) == 1
-        r = conn.execute("SELECT 'col' FROM Standard1 WHERE KEY = 'kd'")
+        r = conn.execute("SELECT 'col' FROM StandardString1 WHERE KEY = 'kd'")
         assert len(r[0].columns) == 1
 
-        conn.execute("DELETE 'col' FROM Standard1 WHERE KEY IN ('kc', 'kd')")
-        r = conn.execute("SELECT 'col' FROM Standard1 WHERE KEY = 'kc'")
+        conn.execute("""
+            DELETE 'col' FROM StandardString1 WHERE KEY IN ('kc', 'kd')
+        """)
+        r = conn.execute("SELECT 'col' FROM StandardString1 WHERE KEY = 'kc'")
         assert len(r[0].columns) == 0
-        r = conn.execute("SELECT 'col' FROM Standard1 WHERE KEY = 'kd'")
+        r = conn.execute("SELECT 'col' FROM StandardString1 WHERE KEY = 'kd'")
         assert len(r[0].columns) == 0
 
     def test_delete_rows(self):
         "delete entire rows"
         conn = init()
-        r = conn.execute("SELECT 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
+        r = conn.execute("""
+            SELECT 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
         assert "cd1" in [i.name for i in r[0].columns]
         assert "col" in [i.name for i in r[0].columns]
-        conn.execute("DELETE FROM Standard1 WHERE KEY = 'kd'")
-        r = conn.execute("SELECT 'cd1', 'col' FROM Standard1 WHERE KEY = 'kd'")
+        conn.execute("DELETE FROM StandardString1 WHERE KEY = 'kd'")
+        r = conn.execute("""
+            SELECT 'cd1', 'col' FROM StandardString1 WHERE KEY = 'kd'
+        """)
         assert len(r[0].columns) == 0
         
     def test_create_keyspace(self):
@@ -321,7 +379,7 @@ class TestCql(ThriftTester):
         assert cfam.comparator_type == "org.apache.cassandra.db.marshal.LongType"
         
         # Column defs, defaults otherwise
-        conn.execute("CREATE COLUMNFAMILY NewCf4 ('a' int, 'b' int)")
+        conn.execute("CREATE COLUMNFAMILY NewCf4 ('a' int, 'b' int);")
         ksdef = thrift_client.describe_keyspace("CreateCFKeyspace")
         assert len(ksdef.cf_defs) == 4, \
             "expected 4 column families total, found %d" % len(ksdef.cf_defs)
@@ -381,30 +439,37 @@ class TestCql(ThriftTester):
         # Store and retrieve a timeuuid using it's hex-formatted string
         timeuuid = uuid.uuid1()
         conn.execute("""
-            UPDATE Standard2 SET timeuuid('%s') = 10 WHERE KEY = 'uuidtest'
+            UPDATE StandardTimeUUID SET timeuuid('%s') = 10
+                    WHERE KEY = 'uuidtest'
         """ % str(timeuuid))
         
         r = conn.execute("""
-            SELECT timeuuid('%s') FROM Standard2 WHERE KEY = 'uuidtest'
+            SELECT timeuuid('%s') FROM StandardTimeUUID WHERE KEY = 'uuidtest'
         """ % str(timeuuid))
         assert r[0].columns[0].name == timeuuid.bytes
         
         # Tests a node-side conversion from long to UUID.
         ms = uuid1bytes_to_millis(uuid.uuid1().bytes)
         conn.execute("""
-            UPDATE Standard2 SET 'id' = timeuuid(%d) WHERE KEY = 'uuidtest'
+            UPDATE StandardTimeUUIDValues SET 'id' = timeuuid(%d)
+                WHERE KEY = 'uuidtest'
         """ % ms)
         
-        r = conn.execute("SELECT 'id' FROM Standard2 WHERE KEY = 'uuidtest'")
+        r = conn.execute("""
+            SELECT 'id' FROM StandardTimeUUIDValues WHERE KEY = 'uuidtest'
+        """)
         assert uuid1bytes_to_millis(r[0].columns[0].value) == ms
         
         # Tests a node-side conversion from ISO8601 to UUID.
         conn.execute("""
-            UPDATE Standard2 SET 'id2' = timeuuid('2011-01-31 17:00:00-0000')
-                    WHERE KEY = 'uuidtest'
+            UPDATE StandardTimeUUIDValues
+            SET 'id2' = timeuuid('2011-01-31 17:00:00-0000') 
+            WHERE KEY = 'uuidtest'
         """)
         
-        r = conn.execute("SELECT 'id2' FROM Standard2 WHERE KEY = 'uuidtest'")
+        r = conn.execute("""
+            SELECT 'id2' FROM StandardTimeUUIDValues WHERE KEY = 'uuidtest'
+        """)
         # 2011-01-31 17:00:00-0000 == 1296493200000ms
         ms = uuid1bytes_to_millis(r[0].columns[0].value)
         assert ms == 1296493200000, \
@@ -412,20 +477,26 @@ class TestCql(ThriftTester):
 
         # Tests node-side conversion of empty term to UUID
         conn.execute("""
-            UPDATE Standard2 SET 'id3' = timeuuid() WHERE KEY = 'uuidtest'
+            UPDATE StandardTimeUUIDValues SET 'id3' = timeuuid()
+                    WHERE KEY = 'uuidtest'
         """)
         
-        r = conn.execute("SELECT 'id3' FROM Standard2 WHERE KEY = 'uuidtest'")
+        r = conn.execute("""
+            SELECT 'id3' FROM StandardTimeUUIDValues WHERE KEY = 'uuidtest'
+        """)
         ms = uuid1bytes_to_millis(r[0].columns[0].value)
         assert ((time.time() * 1e3) - ms) < 100, \
             "timeuuid() not within 100ms of now (UPDATE vs. SELECT)"
             
         # Tests node-side conversion of timeuuid("now") to UUID
         conn.execute("""
-            UPDATE Standard2 SET 'id4' = timeuuid('now') WHERE KEY = 'uuidtest'
+            UPDATE StandardTimeUUIDValues SET 'id4' = timeuuid('now')
+                    WHERE KEY = 'uuidtest'
         """)
         
-        r = conn.execute("SELECT 'id4' FROM Standard2 WHERE KEY = 'uuidtest'")
+        r = conn.execute("""
+            SELECT 'id4' FROM StandardTimeUUIDValues WHERE KEY = 'uuidtest'
+        """)
         ms = uuid1bytes_to_millis(r[0].columns[0].value)
         assert ((time.time() * 1e3) - ms) < 100, \
             "timeuuid(\"now\") not within 100ms of now (UPDATE vs. SELECT)"
@@ -436,9 +507,11 @@ class TestCql(ThriftTester):
         "store and retrieve lexical uuids"
         conn = init()
         uid = uuid.uuid4()
-        conn.execute("UPDATE Standard2 SET ? = 10 WHERE KEY = 'uuidtest'", uid)
+        conn.execute("UPDATE StandardUUID SET ? = 10 WHERE KEY = 'uuidtest'",
+                     uid)
         
-        r = conn.execute("SELECT ? FROM Standard2 WHERE KEY = 'uuidtest'", uid)
+        r = conn.execute("SELECT ? FROM StandardUUID WHERE KEY = 'uuidtest'",
+                         uid)
         assert r[0].columns[0].name == uid.bytes
         
         # TODO: slices of uuids from cf w/ LexicalUUIDType comparator