def test_add_all(self): batch = BatchStatement() statements = ['%s'] * 10 parameters = [(i,) for i in range(10)] batch.add_all(statements, parameters) bound_statements = [t[1] for t in batch._statements_and_parameters] str_parameters = [str(i) for i in range(10)] self.assertEqual(bound_statements, str_parameters)
def test_too_many_statements(self): max_statements = 0xFFFF ss = SimpleStatement("INSERT INTO test3rf.test (k, v) VALUES (0, 0)") b = BatchStatement(batch_type=BatchType.UNLOGGED, consistency_level=ConsistencyLevel.ONE) # max works b.add_all([ss] * max_statements, [None] * max_statements) self.session.execute(b) # max + 1 raises self.assertRaises(ValueError, b.add, ss) # also would have bombed trying to encode b._statements_and_parameters.append((False, ss.query_string, ())) self.assertRaises(NoHostAvailable, self.session.execute, b)
def insert(cluster, keyspace, cql_stmt, generator, batch_size): session = cluster.connect(keyspace) session.default_timeout = 60 session.default_consistency_level = ConsistencyLevel.LOCAL_ONE prepared_stmt = session.prepare(cql_stmt) batch_stmt = BatchStatement() values = take(batch_size, generator) count = 0 while values: batch_stmt.add_all([prepared_stmt] * batch_size, values) session.execute(batch_stmt) values = take(batch_size, generator) batch_stmt.clear() if (count % 1e3) == 0: print('#blocks {:,.0f}'.format(count), end='\r') count += batch_size
def test_len(self): for n in 0, 10, 100: batch = BatchStatement() batch.add_all(statements=['%s'] * n, parameters=[(i,) for i in range(n)]) self.assertEqual(len(batch), n)
def test_len(self): for n in 0, 10, 100: batch = BatchStatement() batch.add_all(statements=['%s'] * n, parameters=[(i, ) for i in range(n)]) self.assertEqual(len(batch), n)