From ab7d3857e44dc7540a21e92746811a1c7cb91385 Mon Sep 17 00:00:00 2001 From: gecong1973 Date: Thu, 8 Nov 2018 01:07:17 -0800 Subject: [PATCH] Add unit test framework for sqlalchemy driver The patch add framework for sqlalchemy driver Change-Id: If128ae24cd34387f90496825eb5d116f3408cfa4 --- freezer_api/tests/unit/sqlalchemy/__init__.py | 0 freezer_api/tests/unit/sqlalchemy/base.py | 76 +++++++++++++++++++ .../tests/unit/sqlalchemy/test_action.py | 23 ++++++ 3 files changed, 99 insertions(+) create mode 100644 freezer_api/tests/unit/sqlalchemy/__init__.py create mode 100644 freezer_api/tests/unit/sqlalchemy/base.py create mode 100644 freezer_api/tests/unit/sqlalchemy/test_action.py diff --git a/freezer_api/tests/unit/sqlalchemy/__init__.py b/freezer_api/tests/unit/sqlalchemy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/freezer_api/tests/unit/sqlalchemy/base.py b/freezer_api/tests/unit/sqlalchemy/base.py new file mode 100644 index 00000000..b2f7097b --- /dev/null +++ b/freezer_api/tests/unit/sqlalchemy/base.py @@ -0,0 +1,76 @@ +# (c) Copyright 2018 ZTE Corporation. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +"""Freezer-api DB test base class.""" + +import fixtures +from oslo_config import cfg +from oslo_db import options as db_options + +from freezer_api.db.sqlalchemy import api as sqla_api +from freezer_api.db.sqlalchemy import models + +from freezer_api.db import manager + +from freezer_api.tests.unit import common + +CONF = cfg.CONF + +_DB_CACHE = None + +IN_MEM_DB_CONN_STRING = 'sqlite://' + + +class Database(fixtures.Fixture): + + def __init__(self, db_api): + self.initialize_sql_session(IN_MEM_DB_CONN_STRING) + self.engine = sqla_api.get_engine() + self.engine.dispose() + conn = self.engine.connect() + self.setup_sqlite() + + self._DB = "".join(line for line in conn.connection.iterdump()) + self.engine.dispose() + + def initialize_sql_session(self, connection_str): + db_options.set_defaults( + CONF, + connection=connection_str) + + def setup_sqlite(self): + models.register_models(self.engine) + + def setUp(self): + super(Database, self).setUp() + + conn = self.engine.connect() + conn.connection.executescript(self._DB) + self.addCleanup(self.engine.dispose) + + +class DbTestCase(common.FreezerBaseTestCase): + + def setUp(self): + dbbackend = "sqlalchemy" + dbdriver = "sqlalchemy" + super(DbTestCase, self).setUp() + db_driver = manager.get_db_driver(dbdriver, + backend=dbbackend) + self.dbapi = db_driver.IMPL + global _DB_CACHE + if not _DB_CACHE: + _DB_CACHE = Database(sqla_api) + self.useFixture(_DB_CACHE) diff --git a/freezer_api/tests/unit/sqlalchemy/test_action.py b/freezer_api/tests/unit/sqlalchemy/test_action.py new file mode 100644 index 00000000..16da5606 --- /dev/null +++ b/freezer_api/tests/unit/sqlalchemy/test_action.py @@ -0,0 +1,23 @@ +# (c) Copyright 2018 ZTE Corporation. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +"""Tests for manipulating Action via the DB API""" + + +from freezer_api.tests.unit.sqlalchemy import base + + +class DbActionTestCase(base.DbTestCase): + pass