Merge "Move global fixture setup into nova/test.py"

This commit is contained in:
Jenkins
2012-11-23 17:47:00 +00:00
committed by Gerrit Code Review
2 changed files with 74 additions and 84 deletions

View File

@@ -23,15 +23,23 @@ inline callbacks.
"""
import os
import shutil
import sys
import uuid
import eventlet
from fixtures import EnvironmentVariable
import mox
import stubout
import testtools
from nova import config
from nova import context
from nova import db
from nova.db import migration
from nova.db.sqlalchemy.session import get_engine
from nova.network import manager as network_manager
from nova.openstack.common import cfg
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
@@ -51,9 +59,74 @@ test_opts = [
CONF = cfg.CONF
CONF.register_opts(test_opts)
CONF.import_opt('sql_connection', 'nova.db.sqlalchemy.session')
CONF.import_opt('sqlite_db', 'nova.db.sqlalchemy.session')
CONF.import_opt('state_path', 'nova.config')
CONF.set_override('use_stderr', False)
logging.setup('nova')
LOG = logging.getLogger(__name__)
eventlet.monkey_patch(os=False)
_DB = None
def reset_db():
if CONF.sql_connection == "sqlite://":
engine = get_engine()
engine.dispose()
conn = engine.connect()
if _DB:
conn.connection.executescript(_DB)
else:
setup()
else:
shutil.copyfile(os.path.join(CONF.state_path, CONF.sqlite_clean_db),
os.path.join(CONF.state_path, CONF.sqlite_db))
def setup():
fake_flags.set_defaults(CONF)
if CONF.sql_connection == "sqlite://":
if migration.db_version() > migration.INIT_VERSION:
return
else:
testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
if os.path.exists(testdb):
return
migration.db_sync()
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)
if CONF.sql_connection == "sqlite://":
global _DB
engine = get_engine()
conn = engine.connect()
_DB = "".join(line for line in conn.connection.iterdump())
else:
cleandb = os.path.join(CONF.state_path, CONF.sqlite_clean_db)
shutil.copyfile(testdb, cleandb)
class TestingException(Exception):
pass
@@ -73,7 +146,7 @@ class TestCase(testtools.TestCase):
# now that we have some required db setup for the system
# to work properly.
self.start = timeutils.utcnow()
tests.reset_db()
reset_db()
# emulate some of the mox stuff, we can't use the metaclass
# because it screws with our generators

View File

@@ -28,86 +28,3 @@
# The code below enables nosetests to work with i18n _() blocks
import __builtin__
setattr(__builtin__, '_', lambda x: x)
import os
import shutil
from nova.db.sqlalchemy.session import get_engine
from nova.openstack.common import cfg
from nova.openstack.common import log as logging
import eventlet
eventlet.monkey_patch(os=False)
CONF = cfg.CONF
CONF.import_opt('sql_connection', 'nova.db.sqlalchemy.session')
CONF.import_opt('sqlite_db', 'nova.db.sqlalchemy.session')
CONF.import_opt('state_path', 'nova.config')
CONF.set_override('use_stderr', False)
logging.setup('nova')
_DB = None
def reset_db():
if CONF.sql_connection == "sqlite://":
engine = get_engine()
engine.dispose()
conn = engine.connect()
if _DB:
conn.connection.executescript(_DB)
else:
setup()
else:
shutil.copyfile(os.path.join(CONF.state_path, CONF.sqlite_clean_db),
os.path.join(CONF.state_path, CONF.sqlite_db))
def setup():
import mox # Fail fast if you don't have mox. Workaround for bug 810424
from nova import context
from nova import db
from nova.db import migration
from nova.network import manager as network_manager
from nova.tests import fake_flags
fake_flags.set_defaults(CONF)
if CONF.sql_connection == "sqlite://":
if migration.db_version() > migration.INIT_VERSION:
return
else:
testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
if os.path.exists(testdb):
return
migration.db_sync()
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)
if CONF.sql_connection == "sqlite://":
global _DB
engine = get_engine()
conn = engine.connect()
_DB = "".join(line for line in conn.connection.iterdump())
else:
cleandb = os.path.join(CONF.state_path, CONF.sqlite_clean_db)
shutil.copyfile(testdb, cleandb)