Adding test for python-438

This commit is contained in:
GregBestland
2015-11-24 11:34:57 -06:00
parent e9ac05b549
commit 4e42780f30
2 changed files with 39 additions and 2 deletions

View File

@@ -392,6 +392,10 @@ class BasicKeyspaceUnitTestCase(unittest.TestCase):
def function_table_name(self):
return self._testMethodName.lower()
@property
def keyspace_table_name(self):
return "{0}.{1}".format(self.keyspace_name, self._testMethodName.lower())
@classmethod
def drop_keyspace(cls):
execute_with_long_wait_retry(cls.session, "DROP KEYSPACE {0}".format(cls.ks_name))

View File

@@ -22,7 +22,7 @@ except ImportError:
from cassandra import ConsistencyLevel
from cassandra.query import (PreparedStatement, BoundStatement, SimpleStatement,
BatchStatement, BatchType, dict_factory)
BatchStatement, BatchType, dict_factory, TraceUnavailable)
from cassandra.cluster import Cluster
from cassandra.policies import HostDistance
@@ -138,6 +138,40 @@ class QueryTests(BasicSharedKeyspaceUnitTestCase):
self.assertIsNotNone(client_ip, "Client IP was not set in trace with C* >= 2.2")
self.assertTrue(pat.match(client_ip), "Client IP from trace did not match the expected value")
def test_incomplete_query_trace(self):
"""
Tests to ensure that partial tracing works.
Creates a table and runs an insert. Then attempt a query with tracing enabled. After the query is run we delete the
duration information associated with the trace, and attempt to populate the tracing information. We should receive tracing
information without any trace enabled.
@since 3.0.0
@jira_ticket PYTHON-438
@expected_result tracing comes back sans duration
@test_category tracing
"""
# Create table and run insert, then select
self.session.execute("CREATE TABLE {0} (k INT, i INT, PRIMARY KEY(k, i))".format(self.keyspace_table_name))
self.session.execute("INSERT INTO {0} (k, i) VALUES (0, 1)".format(self.keyspace_table_name))
response_future = self.session.execute_async("SELECT i FROM {0} WHERE k=0".format(self.keyspace_table_name), trace=True)
response_future.result()
# Delete trace duration from latest select session.
DELETE_TRACES = "DELETE duration FROM system_traces.sessions WHERE session_id = {0}"
for trace in response_future._query_traces:
self.session.execute(DELETE_TRACES.format(trace.trace_id))
self.assertRaises(TraceUnavailable,trace.populate(wait_for_complete=False))
self.assertIsNone(trace.duration)
self.assertIsNotNone(trace.trace_id)
self.assertIsNotNone(trace.request_type)
self.assertIsNotNone(trace.parameters)
self.assertIsNotNone(trace.events)
self.assertIsNotNone(trace.started_at)
def test_column_names(self):
"""
Test to validate the columns are present on the result set.
@@ -295,7 +329,6 @@ class BatchStatementTests(BasicSharedKeyspaceUnitTestCase):
self.cluster.set_core_connections_per_host(HostDistance.LOCAL, 1)
self.session = self.cluster.connect()
def tearDown(self):
self.cluster.shutdown()