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:
Federico Ceratto 2015-11-25 15:31:40 +00:00
parent bb9de39180
commit de03a46987
2 changed files with 46 additions and 5 deletions

View File

@ -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')

View File

@ -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)