def _reset_data(self): for ks in self.keyspaces: drop_keyspace(ks, connections=self.conns) for ks in self.keyspaces: create_keyspace_simple(ks, 1, connections=self.conns) sync_table(TestModel, keyspaces=self.keyspaces, connections=self.conns)
def tearDownClass(cls): super(BatchQueryConnectionTests, cls).tearDownClass() # reset the default connection conn.unregister_connection('fake_cluster') conn.unregister_connection('cluster') setup_connection(DEFAULT_KEYSPACE) drop_keyspace('ks1')
def destroy(keyspace): """Create Cassandra keyspaces""" logger.warning('Dropping keyspace "{0}"'.format(keyspace)) drop_keyspace(keyspace) graph_name = 'indigo_graph' session = get_graph_session(graph_name) session.execute_graph("system.graph(name).drop()", {'name': graph_name}, execution_profile=EXEC_PROFILE_GRAPH_SYSTEM_DEFAULT)
def tearDownClass(cls): super(UsingDescriptorTests, cls).tearDownClass() # reset the default connection conn.unregister_connection('fake_cluster') conn.unregister_connection('cluster') setup_connection(DEFAULT_KEYSPACE) for ks in cls.keyspaces: drop_keyspace(ks)
def test_can_create_same_udt_different_keyspaces(self): class User(UserType): age = columns.Integer() name = columns.Text() sync_type("cqlengine_test", User) create_keyspace_simple("simplex", 1) sync_type("simplex", User) drop_keyspace("simplex")
def tearDownClass(cls): super(ContextQueryConnectionTests, cls).tearDownClass() with ContextQuery(TestModel, connection='cluster') as tm: drop_table(tm) drop_keyspace('ks1', connections=['cluster']) # reset the default connection conn.unregister_connection('fake_cluster') conn.unregister_connection('cluster') setup_connection(DEFAULT_KEYSPACE)
def test_keywords_as_names(self): """ Test for CQL keywords as names test_keywords_as_names tests that CQL keywords are properly and automatically quoted in cqlengine. It creates a keyspace, keyspace, which should be automatically quoted to "keyspace" in CQL. It then creates a table, table, which should also be automatically quoted to "table". It then verfies that operations can be done on the "keyspace"."table" which has been created. It also verifies that table alternations work and operations can be performed on the altered table. @since 2.6.0 @jira_ticket PYTHON-244 @expected_result Cqlengine should quote CQL keywords properly when creating keyspaces and tables. @test_category schema:generation """ # If the keyspace exists, it will not be re-created create_keyspace_simple('keyspace', 1) class table(Model): __keyspace__ = 'keyspace' select = columns.Integer(primary_key=True) table = columns.Text() # In case the table already exists in keyspace drop_table(table) # Create should work sync_table(table) created = table.create(select=0, table='table') selected = table.objects(select=0)[0] self.assertEqual(created.select, selected.select) self.assertEqual(created.table, selected.table) # Alter should work class table(Model): __keyspace__ = 'keyspace' select = columns.Integer(primary_key=True) table = columns.Text() where = columns.Text() sync_table(table) created = table.create(select=1, table='table') selected = table.objects(select=1)[0] self.assertEqual(created.select, selected.select) self.assertEqual(created.table, selected.table) self.assertEqual(created.where, selected.where) drop_keyspace('keyspace')
def test_create_drop_succeeeds(self): cluster = get_cluster() keyspace_ss = 'test_ks_ss' self.assertNotIn(keyspace_ss, cluster.metadata.keyspaces) management.create_keyspace_simple(keyspace_ss, 2) self.assertIn(keyspace_ss, cluster.metadata.keyspaces) management.drop_keyspace(keyspace_ss) self.assertNotIn(keyspace_ss, cluster.metadata.keyspaces) keyspace_nts = 'test_ks_nts' self.assertNotIn(keyspace_nts, cluster.metadata.keyspaces) management.create_keyspace_network_topology(keyspace_nts, {'dc1': 1}) self.assertIn(keyspace_nts, cluster.metadata.keyspaces) management.drop_keyspace(keyspace_nts) self.assertNotIn(keyspace_nts, cluster.metadata.keyspaces)
def test_create_drop_keyspace(self): """ Tests drop and create keyspace with connections explicitly set @since 3.7 @jira_ticket PYTHON-613 @expected_result keyspaces should be created and dropped @test_category object_mapper """ # No connection (default is fake) with self.assertRaises(NoHostAvailable): create_keyspace_simple(self.keyspaces[0], 1) # Explicit connections for ks in self.keyspaces: create_keyspace_simple(ks, 1, connections=self.conns) for ks in self.keyspaces: drop_keyspace(ks, connections=self.conns)
def test_create_drop_table(self): """ Tests drop and create Table with connections explicitly set @since 3.7 @jira_ticket PYTHON-613 @expected_result Tables should be created and dropped @test_category object_mapper """ for ks in self.keyspaces: create_keyspace_simple(ks, 1, connections=self.conns) # No connection (default is fake) with self.assertRaises(NoHostAvailable): sync_table(TestModel) # Explicit connections sync_table(TestModel, connections=self.conns) # Explicit drop drop_table(TestModel, connections=self.conns) # Model connection TestModel.__connection__ = 'cluster' sync_table(TestModel) TestModel.__connection__ = None # No connection (default is fake) with self.assertRaises(NoHostAvailable): drop_table(TestModel) # Model connection TestModel.__connection__ = 'cluster' drop_table(TestModel) TestModel.__connection__ = None # Model connection for ks in self.keyspaces: drop_keyspace(ks, connections=self.conns)
def test_can_create_same_udt_different_keyspaces(self): sync_type(DEFAULT_KEYSPACE, User) create_keyspace_simple("simplex", 1) sync_type("simplex", User) drop_keyspace("simplex")
def destroy(): """Destroy Cassandra keyspace. The keyspace contains all the tables.""" keyspace = cfg.dse_keyspace cfg.logger.warning('Dropping keyspace "{0}"'.format(keyspace)) drop_keyspace(keyspace)
def teardown_package(): drop_keyspace(TEST_KEYSPACE)
def tearDownClass(cls): super(ContextQueryTests, cls).tearDownClass() for ks in cls.KEYSPACES: drop_keyspace(ks)
def main(): connection.default() # Management functions would normally be used in development, and possibly for deployments. # They are typically not part of a core application. log.info("### creating keyspace...") management.create_keyspace_simple(KEYSPACE, 1) log.info("### syncing model...") management.sync_table(FamilyMembers) # default uuid is assigned simmons = FamilyMembers.create(surname='Simmons', name='Gene', birth_year=1949, sex='m') # add members to his family later FamilyMembers.create(id=simmons.id, surname='Simmons', name='Nick', birth_year=1989, sex='m') sophie = FamilyMembers.create(id=simmons.id, surname='Simmons', name='Sophie', sex='f') nick = FamilyMembers.objects(id=simmons.id, surname='Simmons', name='Nick') try: nick.iff(birth_year=1988).update(birth_year=1989) except LWTException: print "precondition not met" log.info("### setting individual column to NULL by updating it to None") nick.update(birth_year=None) # showing validation try: FamilyMembers.create(id=simmons.id, surname='Tweed', name='Shannon', birth_year=1957, sex='f') except ValidationError: log.exception( 'INTENTIONAL VALIDATION EXCEPTION; Failed creating instance:') FamilyMembers.create(id=simmons.id, surname='Tweed', name='Shannon', sex='f') log.info("### add multiple as part of a batch") # If creating many at one time, can use a batch to minimize round-trips hogan_id = uuid4() with BatchQuery() as b: FamilyMembers.batch(b).create(id=hogan_id, surname='Hogan', name='Hulk', sex='m') FamilyMembers.batch(b).create(id=hogan_id, surname='Hogan', name='Linda', sex='f') FamilyMembers.batch(b).create(id=hogan_id, surname='Hogan', name='Nick', sex='m') FamilyMembers.batch(b).create(id=hogan_id, surname='Hogan', name='Brooke', sex='f') log.info("### All members") for m in FamilyMembers.all(): print m, m.birth_year, m.sex log.info("### Select by partition key") for m in FamilyMembers.objects(id=simmons.id): print m, m.birth_year, m.sex log.info("### Constrain on clustering key") for m in FamilyMembers.objects(id=simmons.id, surname=simmons.surname): print m, m.birth_year, m.sex log.info("### Constrain on clustering key") kids = FamilyMembers.objects(id=simmons.id, surname=simmons.surname, name__in=['Nick', 'Sophie']) log.info("### Delete a record") FamilyMembers(id=hogan_id, surname='Hogan', name='Linda').delete() for m in FamilyMembers.objects(id=hogan_id): print m, m.birth_year, m.sex management.drop_keyspace(KEYSPACE)