def test_prepared_metadata_generation(self): """ Test to validate that result metadata is appropriately populated across protocol version Result metadata is set once upon the prepare, then re-used. This test ensures that it manifests it's self the same across multiple protocol versions. @since 3.6.0 @jira_ticket PYTHON-71 @expected_result result metadata is consistent. """ base_line = None for proto_version in get_supported_protocol_versions(): beta_flag = True if proto_version in ProtocolVersion.BETA_VERSIONS else False cluster = Cluster(protocol_version=proto_version, allow_beta_protocol_version=beta_flag) session = cluster.connect() select_statement = session.prepare("SELECT * FROM system.local") self.assertNotEqual(select_statement.result_metadata, None) future = session.execute_async(select_statement) results = future.result() if base_line is None: base_line = results[0]._asdict().keys() else: self.assertEqual(base_line, results[0]._asdict().keys()) cluster.shutdown()
def test_prepared_statement(self): """ Highlight the difference between Prepared and Bound statements """ cluster = Cluster(protocol_version=PROTOCOL_VERSION) session = cluster.connect() prepared = session.prepare('INSERT INTO test3rf.test (k, v) VALUES (?, ?)') prepared.consistency_level = ConsistencyLevel.ONE self.assertEqual(str(prepared), '<PreparedStatement query="INSERT INTO test3rf.test (k, v) VALUES (?, ?)", consistency=ONE>') bound = prepared.bind((1, 2)) self.assertEqual(str(bound), '<BoundStatement query="INSERT INTO test3rf.test (k, v) VALUES (?, ?)", values=(1, 2), consistency=ONE>') cluster.shutdown()