Move baremetal database tests to fixtures.
The baremetal database tests didn't get migrated to fixtures when we migrated base nova. Funny story: maybe we should re-use code rather than copying! So I did that. It's reusable now. Change-Id: I730aad4a6aedb3993e032a14c9b8d2cd58913b4f
This commit is contained in:

committed by
Devananda van der Veen

parent
d1ebf6c4cf
commit
d5434b514c
55
nova/test.py
55
nova/test.py
@@ -37,7 +37,7 @@ import testtools
|
|||||||
from nova import context
|
from nova import context
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova.db import migration
|
from nova.db import migration
|
||||||
from nova.db.sqlalchemy.session import get_engine
|
from nova.db.sqlalchemy import session
|
||||||
from nova.network import manager as network_manager
|
from nova.network import manager as network_manager
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
@@ -75,38 +75,19 @@ _DB_CACHE = None
|
|||||||
|
|
||||||
class Database(fixtures.Fixture):
|
class Database(fixtures.Fixture):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, db_session, db_migrate):
|
||||||
self.engine = get_engine()
|
self.engine = db_session.get_engine()
|
||||||
self.engine.dispose()
|
self.engine.dispose()
|
||||||
conn = self.engine.connect()
|
conn = self.engine.connect()
|
||||||
if CONF.sql_connection == "sqlite://":
|
if CONF.sql_connection == "sqlite://":
|
||||||
if migration.db_version() > migration.INIT_VERSION:
|
if db_migrate.db_version() > db_migrate.INIT_VERSION:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
|
testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
|
||||||
if os.path.exists(testdb):
|
if os.path.exists(testdb):
|
||||||
return
|
return
|
||||||
migration.db_sync()
|
db_migrate.db_sync()
|
||||||
ctxt = context.get_admin_context()
|
self.post_migrations()
|
||||||
network = network_manager.VlanManager()
|
|
||||||
bridge_interface = CONF.flat_interface or CONF.vlan_interface
|
|
||||||
network.create_networks(ctxt,
|
|
||||||
label='test',
|
|
||||||
cidr=CONF.fixed_range,
|
|
||||||
multi_host=CONF.multi_host,
|
|
||||||
num_networks=CONF.num_networks,
|
|
||||||
network_size=CONF.network_size,
|
|
||||||
cidr_v6=CONF.fixed_range_v6,
|
|
||||||
gateway=CONF.gateway,
|
|
||||||
gateway_v6=CONF.gateway_v6,
|
|
||||||
bridge=CONF.flat_network_bridge,
|
|
||||||
bridge_interface=bridge_interface,
|
|
||||||
vpn_start=CONF.vpn_start,
|
|
||||||
vlan_start=CONF.vlan_start,
|
|
||||||
dns1=CONF.flat_network_dns)
|
|
||||||
for net in db.network_get_all(ctxt):
|
|
||||||
network.set_network_host(ctxt, net)
|
|
||||||
|
|
||||||
if CONF.sql_connection == "sqlite://":
|
if CONF.sql_connection == "sqlite://":
|
||||||
conn = self.engine.connect()
|
conn = self.engine.connect()
|
||||||
self._DB = "".join(line for line in conn.connection.iterdump())
|
self._DB = "".join(line for line in conn.connection.iterdump())
|
||||||
@@ -128,6 +109,28 @@ class Database(fixtures.Fixture):
|
|||||||
os.path.join(CONF.state_path,
|
os.path.join(CONF.state_path,
|
||||||
CONF.sqlite_db))
|
CONF.sqlite_db))
|
||||||
|
|
||||||
|
def post_migrations(self):
|
||||||
|
"""Any addition steps that are needed outside of the migrations."""
|
||||||
|
ctxt = context.get_admin_context()
|
||||||
|
network = network_manager.VlanManager()
|
||||||
|
bridge_interface = CONF.flat_interface or CONF.vlan_interface
|
||||||
|
network.create_networks(ctxt,
|
||||||
|
label='test',
|
||||||
|
cidr=CONF.fixed_range,
|
||||||
|
multi_host=CONF.multi_host,
|
||||||
|
num_networks=CONF.num_networks,
|
||||||
|
network_size=CONF.network_size,
|
||||||
|
cidr_v6=CONF.fixed_range_v6,
|
||||||
|
gateway=CONF.gateway,
|
||||||
|
gateway_v6=CONF.gateway_v6,
|
||||||
|
bridge=CONF.flat_network_bridge,
|
||||||
|
bridge_interface=bridge_interface,
|
||||||
|
vpn_start=CONF.vpn_start,
|
||||||
|
vlan_start=CONF.vlan_start,
|
||||||
|
dns1=CONF.flat_network_dns)
|
||||||
|
for net in db.network_get_all(ctxt):
|
||||||
|
network.set_network_host(ctxt, net)
|
||||||
|
|
||||||
|
|
||||||
class ReplaceModule(fixtures.Fixture):
|
class ReplaceModule(fixtures.Fixture):
|
||||||
"""Replace a module with a fake module."""
|
"""Replace a module with a fake module."""
|
||||||
@@ -205,7 +208,7 @@ class TestCase(testtools.TestCase):
|
|||||||
|
|
||||||
global _DB_CACHE
|
global _DB_CACHE
|
||||||
if not _DB_CACHE:
|
if not _DB_CACHE:
|
||||||
_DB_CACHE = Database()
|
_DB_CACHE = Database(session, migration)
|
||||||
self.useFixture(_DB_CACHE)
|
self.useFixture(_DB_CACHE)
|
||||||
|
|
||||||
mox_fixture = self.useFixture(MoxStubout())
|
mox_fixture = self.useFixture(MoxStubout())
|
||||||
|
@@ -15,31 +15,25 @@
|
|||||||
|
|
||||||
"""Bare-metal DB test base class."""
|
"""Bare-metal DB test base class."""
|
||||||
|
|
||||||
|
import fixtures
|
||||||
|
|
||||||
from nova import context as nova_context
|
from nova import context as nova_context
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
from nova import test
|
from nova import test
|
||||||
from nova.virt.baremetal.db import migration as bm_migration
|
from nova.virt.baremetal.db import migration as bm_migration
|
||||||
from nova.virt.baremetal.db.sqlalchemy import session as bm_session
|
from nova.virt.baremetal.db.sqlalchemy import session as bm_session
|
||||||
|
|
||||||
_DB = None
|
_DB_CACHE = None
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.import_opt('baremetal_sql_connection',
|
CONF.import_opt('baremetal_sql_connection',
|
||||||
'nova.virt.baremetal.db.sqlalchemy.session')
|
'nova.virt.baremetal.db.sqlalchemy.session')
|
||||||
|
|
||||||
|
|
||||||
def _reset_bmdb():
|
class Database(test.Database):
|
||||||
global _DB
|
|
||||||
engine = bm_session.get_engine()
|
def post_migrations(self):
|
||||||
engine.dispose()
|
pass
|
||||||
conn = engine.connect()
|
|
||||||
if _DB is None:
|
|
||||||
if bm_migration.db_version() > bm_migration.INIT_VERSION:
|
|
||||||
return
|
|
||||||
bm_migration.db_sync()
|
|
||||||
_DB = "".join(line for line in conn.connection.iterdump())
|
|
||||||
else:
|
|
||||||
conn.connection.executescript(_DB)
|
|
||||||
|
|
||||||
|
|
||||||
class BMDBTestCase(test.TestCase):
|
class BMDBTestCase(test.TestCase):
|
||||||
@@ -47,5 +41,8 @@ class BMDBTestCase(test.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(BMDBTestCase, self).setUp()
|
super(BMDBTestCase, self).setUp()
|
||||||
self.flags(baremetal_sql_connection='sqlite:///:memory:')
|
self.flags(baremetal_sql_connection='sqlite:///:memory:')
|
||||||
_reset_bmdb()
|
global _DB_CACHE
|
||||||
|
if not _DB_CACHE:
|
||||||
|
_DB_CACHE = Database(bm_session, bm_migration)
|
||||||
|
self.useFixture(_DB_CACHE)
|
||||||
self.context = nova_context.get_admin_context()
|
self.context = nova_context.get_admin_context()
|
||||||
|
Reference in New Issue
Block a user