Skip to content

Commit

Permalink
test(dp): Retain DB state in orc8r integration tests (magma#12607)
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>

Co-authored-by: Artur Dębski <artur.debski@freedomfi.com>
  • Loading branch information
2 people authored and emakeev committed Aug 5, 2022
1 parent 43cd66d commit 28454c6
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 110 deletions.
3 changes: 2 additions & 1 deletion dp/cloud/python/magma/db_service/tests/alembic_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ def tearDown(self) -> None:

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()
cls.postgresql = testing.postgresql.PostgresqlFactory(cache_initialized_db=True)()

@classmethod
def tearDownClass(cls) -> None:
cls.postgresql.stop()

def setUp(self) -> None:
self.metadata = sqlalchemy.MetaData()
self.setMetadata(sqlalchemy.MetaData())
self.set_up_db_test_case(SQLALCHEMY_DB_URI=self.postgresql.url())
self.up_revision = self.up_revision or "head"
self.down_revision = self.down_revision or "base"
Expand Down
48 changes: 30 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,54 @@ 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 setMetadata(cls, metadata: MetaData = Base.metadata):
cls.metadata = metadata

@classmethod
def setUpClass(cls) -> None:
cls.setMetadata(metadata=Base.metadata)

@classmethod
def set_up_db_test_case(cls, **kwargs: Optional[Dict]):
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()
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ class LocalDBTestCase(BaseDBTestCase):

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()
cls.postgresql = testing.postgresql.PostgresqlFactory(cache_initialized_db=True)()

@classmethod
def tearDownClass(cls) -> None:
cls.postgresql.stop()

def setUp(self):
self.metadata = Base.metadata
self.set_up_db_test_case(SQLALCHEMY_DB_URI=self.postgresql.url())
self.create_all()
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
class ActiveModeControllerTestCase(BaseDBTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
wait_for_elastic_to_start()

def setUp(self):
Expand Down

0 comments on commit 28454c6

Please sign in to comment.