Skip to content

Commit

Permalink
test(dp): Retain DB state in orc8r integration tests
Browse files Browse the repository at this point in the history
* Do not clear/initialize DB in orc8r integration tests setup/teardown
* Clear/initialize DB in orc8r integration testcase classes
* Use randmized CBSD serial numbers per orc8r integration test
to meet unique constraint on that field in the (now retained between tests) DB

Signed-off-by: Artur Dębski <artur.debski@freedomfi.com>
  • Loading branch information
Artur Dębski committed Apr 29, 2022
1 parent 11a7084 commit 336de04
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 95 deletions.
41 changes: 23 additions & 18 deletions dp/cloud/python/magma/db_service/tests/db_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,42 +13,47 @@ class DBTestCaseBlueprint(unittest.TestCase):
engine: sqlalchemy.engine.Engine
session: Session

def drop_all(self):
self.metadata.drop_all()
@classmethod
def drop_all(cls):
cls.metadata.drop_all()

def set_up_db_test_case(self, **kwargs: Optional[Dict]):
self.engine = self.get_test_db_engine(**kwargs)
self.session = Session(bind=self.engine)
self.bind_engine()
@classmethod
def create_all(cls):
cls.metadata.create_all()

@classmethod
def set_up_db_test_case(cls, **kwargs: Optional[Dict]):
cls.metadata = Base.metadata
cls.engine = cls.get_test_db_engine(**kwargs)
cls.session = Session(bind=cls.engine)
cls.bind_engine()

@staticmethod
def get_test_db_engine(**kwargs) -> sqlalchemy.engine.Engine:
config = TestConfig()
return create_engine(
url=kwargs.get("SQLALCHEMY_DB_URI") or config.SQLALCHEMY_DB_URI,
encoding=kwargs.get("SQLALCHEMY_DB_ENCODING") or config.SQLALCHEMY_DB_ENCODING,
url=kwargs.get("SQLALCHEMY_DB_URI", config.SQLALCHEMY_DB_URI),
encoding=kwargs.get("SQLALCHEMY_DB_ENCODING", config.SQLALCHEMY_DB_ENCODING),
echo=False,
future=kwargs.get("SQLALCHEMY_FUTURE") or config.SQLALCHEMY_FUTURE,
future=kwargs.get("SQLALCHEMY_FUTURE", config.SQLALCHEMY_FUTURE),
)

def bind_engine(self):
self.metadata.bind = self.engine
@classmethod
def bind_engine(cls):
cls.metadata.bind = cls.engine

def close_session(self):
self.session.rollback()
self.session.close()
@classmethod
def close_session(cls):
cls.session.rollback()
cls.session.close()


class BaseDBTestCase(DBTestCaseBlueprint):

def setUp(self):
self.metadata = Base.metadata
self.set_up_db_test_case()
self.create_all()

def tearDown(self):
self.close_session()
self.drop_all()

def create_all(self):
self.metadata.create_all()

0 comments on commit 336de04

Please sign in to comment.