Test database schema and indexes
Ensure that tables and indexes have been created by the migrate scripts Minor changes Change-Id: I3c5025fc810677ac6f540b175bab7501268b2fa4
This commit is contained in:
parent
bb9de39180
commit
de03a46987
@ -132,7 +132,7 @@ zone_attributes = Table('zone_attributes', metadata,
|
||||
UniqueConstraint('key', 'value', 'zone_id', name='unique_attributes'),
|
||||
ForeignKeyConstraint(['zone_id'], ['zones.id'], ondelete='CASCADE'),
|
||||
|
||||
mysql_engine='INNODB',
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
||||
@ -241,7 +241,7 @@ pools = Table('pools', metadata,
|
||||
|
||||
UniqueConstraint('name', name='unique_pool_name'),
|
||||
|
||||
mysql_engine='INNODB',
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
||||
@ -257,7 +257,7 @@ pool_attributes = Table('pool_attributes', metadata,
|
||||
|
||||
ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
|
||||
|
||||
mysql_engine='INNODB',
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
||||
@ -273,7 +273,7 @@ pool_ns_records = Table('pool_ns_records', metadata,
|
||||
|
||||
ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
|
||||
|
||||
mysql_engine='INNODB',
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8')
|
||||
|
||||
zone_transfer_requests = Table('zone_transfer_requests', metadata,
|
||||
@ -336,5 +336,5 @@ zone_tasks = Table('zone_tasks', metadata,
|
||||
default='ACTIVE'),
|
||||
Column('location', String(160), nullable=True),
|
||||
|
||||
mysql_engine='INNODB',
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8')
|
||||
|
@ -36,3 +36,44 @@ class SqlalchemyStorageTest(StorageTestCase, TestCase):
|
||||
|
||||
self.assertFalse(pong['status'])
|
||||
self.assertIsNotNone(pong['rtt'])
|
||||
|
||||
def test_schema_table_names(self):
|
||||
table_names = [
|
||||
u'blacklists', u'migrate_version', u'pool_attributes',
|
||||
u'pool_ns_records', u'pools', u'quotas', u'records', u'recordsets',
|
||||
u'tlds', u'tsigkeys', u'zone_attributes', u'zone_tasks',
|
||||
u'zone_transfer_accepts', u'zone_transfer_requests', u'zones'
|
||||
]
|
||||
self.assertEqual(table_names, self.storage.engine.table_names())
|
||||
|
||||
def test_schema_table_indexes(self):
|
||||
indexes_t = self.storage.engine.execute("SELECT * FROM sqlite_master WHERE type = 'index';")
|
||||
|
||||
indexes = {} # table name -> index names -> cmd
|
||||
for _, index_name, table_name, num, cmd in indexes_t:
|
||||
if index_name.startswith("sqlite_"):
|
||||
continue # ignore sqlite-specific indexes
|
||||
if table_name not in indexes:
|
||||
indexes[table_name] = {}
|
||||
indexes[table_name][index_name] = cmd
|
||||
|
||||
expected = {
|
||||
"records": {
|
||||
"record_created_at": "CREATE INDEX record_created_at ON records (created_at)",
|
||||
"records_tenant": "CREATE INDEX records_tenant ON records (tenant_id)",
|
||||
"update_status_index": "CREATE INDEX update_status_index ON records (status, zone_id, tenant_id, created_at, serial)"
|
||||
},
|
||||
"recordsets": {
|
||||
"recordset_created_at": "CREATE INDEX recordset_created_at ON recordsets (created_at)",
|
||||
"recordset_type_name": "CREATE INDEX recordset_type_name ON recordsets (type, name)",
|
||||
"reverse_name_dom_id": "CREATE INDEX reverse_name_dom_id ON recordsets (reverse_name, zone_id)",
|
||||
"rrset_type_domainid": "CREATE INDEX rrset_type_domainid ON recordsets (type, zone_id)"
|
||||
},
|
||||
"zones": {
|
||||
"reverse_name_deleted": "CREATE INDEX reverse_name_deleted ON zones (reverse_name, deleted)",
|
||||
"zone_created_at": "CREATE INDEX zone_created_at ON zones (created_at)",
|
||||
"zone_deleted": "CREATE INDEX zone_deleted ON zones (deleted)",
|
||||
"zone_tenant_deleted": "CREATE INDEX zone_tenant_deleted ON zones (tenant_id, deleted)"
|
||||
}
|
||||
} # flake8: noqa
|
||||
self.assertDictEqual(expected, indexes)
|
||||
|
Loading…
Reference in New Issue
Block a user