# Copyright (c) 2015 Ericsson AB # 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. # # Copyright (c) 2017 Wind River Systems, Inc. # # The right to copy, distribute, modify, or otherwise make use # of this software may be licensed only pursuant to the terms # of an applicable Wind River license agreement. # import sqlalchemy from oslo_config import cfg from oslo_db import options from dcmanager.db import api as api from dcmanager.db.sqlalchemy import api as db_api from dcmanager.tests import utils from oslotest import base get_engine = api.get_engine # Enable foreign key support in sqlite - see: # http://docs.sqlalchemy.org/en/latest/dialects/sqlite.html from sqlalchemy.engine import Engine from sqlalchemy import event SUBCLOUD_SAMPLE_DATA_0 = [ 6, # id "subcloud-4", # name "demo subcloud", # description "Ottawa-Lab-Aisle_3-Rack_C", # location "20.01", # software-version "managed", # management-state "online", # availability-status "fd01:3::0/64", # management_subnet "fd01:3::1", # management_gateway_address "fd01:3::2", # management_start_address "fd01:3::f", # management_end_address "fd01:1::1", # systemcontroller_gateway_address 0, # audit-fail-count "NULL", # reserved-1 "NULL", # reserved-2 "2018-05-15 14:45:12.508708", # created-at "2018-05-24 10:48:18.090931", # updated-at "NULL", # deleted-at 0, # deleted "10.10.10.0/24", # external_oam_subnet "10.10.10.1", # external_oam_gateway_address "10.10.10.12", # external_oam_floating_address "testpass", # sysadmin_password 1 # group_id ] @event.listens_for(Engine, "connect") def set_sqlite_pragma(dbapi_connection, connection_record): cursor = dbapi_connection.cursor() cursor.execute("PRAGMA foreign_keys=ON;") cursor.close() class DCManagerTestCase(base.BaseTestCase): """Test case base class for all unit tests.""" def setup_dummy_db(self): options.cfg.set_defaults(options.database_opts, sqlite_synchronous=False) options.set_defaults(cfg.CONF, connection="sqlite://") engine = get_engine() db_api.db_sync(engine) @staticmethod def reset_dummy_db(): engine = get_engine() meta = sqlalchemy.MetaData() meta.reflect(bind=engine) for table in reversed(meta.sorted_tables): if table.name == 'migrate_version': continue engine.execute(table.delete()) def setUp(self): super(DCManagerTestCase, self).setUp() self.setup_dummy_db() self.addCleanup(self.reset_dummy_db) self.ctx = utils.dummy_context()