Extract sqlite db preparation to a separate base test case
This is needed to make integrated tests to check ec2api behavior in complex cases. Change-Id: Ie6c3838dadd6cf1860ba0ae429ca73ecf8e39c42
This commit is contained in:
parent
e2e4bdf226
commit
75f150c835
|
@ -19,12 +19,15 @@ from cinderclient import client as cinderclient
|
||||||
from glanceclient import client as glanceclient
|
from glanceclient import client as glanceclient
|
||||||
import mock
|
import mock
|
||||||
from novaclient import client as novaclient
|
from novaclient import client as novaclient
|
||||||
|
from oslo_config import cfg
|
||||||
from oslo_config import fixture as config_fixture
|
from oslo_config import fixture as config_fixture
|
||||||
from oslotest import base as test_base
|
from oslotest import base as test_base
|
||||||
|
|
||||||
import ec2api.api.apirequest
|
import ec2api.api.apirequest
|
||||||
from ec2api.api import ec2utils
|
from ec2api.api import ec2utils
|
||||||
import ec2api.db.sqlalchemy.api
|
from ec2api import config
|
||||||
|
from ec2api.db import migration
|
||||||
|
from ec2api.db.sqlalchemy import api as db_backend
|
||||||
from ec2api.tests.unit import fakes
|
from ec2api.tests.unit import fakes
|
||||||
from ec2api.tests.unit import matchers
|
from ec2api.tests.unit import matchers
|
||||||
from ec2api.tests.unit import tools
|
from ec2api.tests.unit import tools
|
||||||
|
@ -67,8 +70,7 @@ class ApiTestCase(test_base.BaseTestCase):
|
||||||
cinder_patcher.start().return_value = self.cinder
|
cinder_patcher.start().return_value = self.cinder
|
||||||
self.addCleanup(cinder_patcher.stop)
|
self.addCleanup(cinder_patcher.stop)
|
||||||
|
|
||||||
db_api_patcher = mock.patch('ec2api.db.api.IMPL',
|
db_api_patcher = mock.patch('ec2api.db.api.IMPL', autospec=db_backend)
|
||||||
autospec=ec2api.db.sqlalchemy.api)
|
|
||||||
self.db_api = db_api_patcher.start()
|
self.db_api = db_api_patcher.start()
|
||||||
self.addCleanup(db_api_patcher.stop)
|
self.addCleanup(db_api_patcher.stop)
|
||||||
|
|
||||||
|
@ -231,3 +233,33 @@ class ApiTestCase(test_base.BaseTestCase):
|
||||||
response['Error']['Message'])
|
response['Error']['Message'])
|
||||||
else:
|
else:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
class DbTestCase(test_base.BaseTestCase):
|
||||||
|
|
||||||
|
DB_SCHEMA = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super(DbTestCase, cls).setUpClass()
|
||||||
|
conf = cfg.CONF
|
||||||
|
try:
|
||||||
|
config.parse_args([], default_config_files=[])
|
||||||
|
conf.set_override('connection', 'sqlite://', group='database')
|
||||||
|
conf.set_override('sqlite_synchronous', False, group='database')
|
||||||
|
|
||||||
|
engine = db_backend.get_engine()
|
||||||
|
conn = engine.connect()
|
||||||
|
migration.db_sync()
|
||||||
|
cls.DB_SCHEMA = "".join(line
|
||||||
|
for line in conn.connection.iterdump())
|
||||||
|
engine.dispose()
|
||||||
|
finally:
|
||||||
|
conf.reset()
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(DbTestCase, self).setUp()
|
||||||
|
engine = db_backend.get_engine()
|
||||||
|
engine.dispose()
|
||||||
|
conn = engine.connect()
|
||||||
|
conn.connection.executescript(self.DB_SCHEMA)
|
||||||
|
|
|
@ -12,48 +12,20 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from oslo_config import cfg
|
|
||||||
from oslotest import base as test_base
|
|
||||||
from sqlalchemy.orm import exc as orm_exception
|
from sqlalchemy.orm import exc as orm_exception
|
||||||
|
|
||||||
from ec2api.api import validator
|
from ec2api.api import validator
|
||||||
from ec2api import config
|
|
||||||
from ec2api import context as ec2_context
|
from ec2api import context as ec2_context
|
||||||
from ec2api.db import api as db_api
|
from ec2api.db import api as db_api
|
||||||
from ec2api.db import migration
|
from ec2api.tests.unit import base
|
||||||
from ec2api.db.sqlalchemy import api as session
|
|
||||||
from ec2api.tests.unit import fakes
|
from ec2api.tests.unit import fakes
|
||||||
from ec2api.tests.unit import matchers
|
from ec2api.tests.unit import matchers
|
||||||
|
|
||||||
|
|
||||||
class DbApiTestCase(test_base.BaseTestCase):
|
class DbApiTestCase(base.DbTestCase):
|
||||||
|
|
||||||
DB_SCHEMA = None
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls):
|
|
||||||
super(DbApiTestCase, cls).setUpClass()
|
|
||||||
conf = cfg.CONF
|
|
||||||
try:
|
|
||||||
config.parse_args([], default_config_files=[])
|
|
||||||
conf.set_override('connection', 'sqlite://', group='database')
|
|
||||||
conf.set_override('sqlite_synchronous', False, group='database')
|
|
||||||
|
|
||||||
engine = session.get_engine()
|
|
||||||
conn = engine.connect()
|
|
||||||
migration.db_sync()
|
|
||||||
cls.DB_SCHEMA = "".join(line
|
|
||||||
for line in conn.connection.iterdump())
|
|
||||||
engine.dispose()
|
|
||||||
finally:
|
|
||||||
conf.reset()
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(DbApiTestCase, self).setUp()
|
super(DbApiTestCase, self).setUp()
|
||||||
engine = session.get_engine()
|
|
||||||
engine.dispose()
|
|
||||||
conn = engine.connect()
|
|
||||||
conn.connection.executescript(self.DB_SCHEMA)
|
|
||||||
self.context = ec2_context.RequestContext(fakes.ID_OS_USER,
|
self.context = ec2_context.RequestContext(fakes.ID_OS_USER,
|
||||||
fakes.ID_OS_PROJECT)
|
fakes.ID_OS_PROJECT)
|
||||||
self.other_context = ec2_context.RequestContext(
|
self.other_context = ec2_context.RequestContext(
|
||||||
|
|
Loading…
Reference in New Issue