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
|
||||
import mock
|
||||
from novaclient import client as novaclient
|
||||
from oslo_config import cfg
|
||||
from oslo_config import fixture as config_fixture
|
||||
from oslotest import base as test_base
|
||||
|
||||
import ec2api.api.apirequest
|
||||
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 matchers
|
||||
from ec2api.tests.unit import tools
|
||||
|
@ -67,8 +70,7 @@ class ApiTestCase(test_base.BaseTestCase):
|
|||
cinder_patcher.start().return_value = self.cinder
|
||||
self.addCleanup(cinder_patcher.stop)
|
||||
|
||||
db_api_patcher = mock.patch('ec2api.db.api.IMPL',
|
||||
autospec=ec2api.db.sqlalchemy.api)
|
||||
db_api_patcher = mock.patch('ec2api.db.api.IMPL', autospec=db_backend)
|
||||
self.db_api = db_api_patcher.start()
|
||||
self.addCleanup(db_api_patcher.stop)
|
||||
|
||||
|
@ -231,3 +233,33 @@ class ApiTestCase(test_base.BaseTestCase):
|
|||
response['Error']['Message'])
|
||||
else:
|
||||
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
|
||||
# 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 ec2api.api import validator
|
||||
from ec2api import config
|
||||
from ec2api import context as ec2_context
|
||||
from ec2api.db import api as db_api
|
||||
from ec2api.db import migration
|
||||
from ec2api.db.sqlalchemy import api as session
|
||||
from ec2api.tests.unit import base
|
||||
from ec2api.tests.unit import fakes
|
||||
from ec2api.tests.unit import matchers
|
||||
|
||||
|
||||
class DbApiTestCase(test_base.BaseTestCase):
|
||||
|
||||
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()
|
||||
class DbApiTestCase(base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
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,
|
||||
fakes.ID_OS_PROJECT)
|
||||
self.other_context = ec2_context.RequestContext(
|
||||
|
|
Loading…
Reference in New Issue