import copy import os import unittest from integration.partial.integration_test_utils import IntegrationTestUtils from integration.test_suites.epi_test_suite import BaseEpiTestSuite class TestEpi(BaseEpiTestSuite.EpiTestSuite): @classmethod def setUpClass(cls) -> None: """ This is overridden in the class setup function to ensure that the value is not set from a previous run when being run in a TestSuite """ IntegrationTestUtils.TEST_OUT_PATH = None def set_expected_values(self): super().set_expected_values() BaseEpiTestSuite.EpiTestSuite.TEST_START_DATE = '20221001' BaseEpiTestSuite.EpiTestSuite.TEST_JOB_DIR = "EPI_" + BaseEpiTestSuite.EpiTestSuite.TEST_START_DATE def setUp(self) -> None: self.set_expected_values() if BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH is None or not os.path.isdir(BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH): TestEpi.write_temp_run_config_files() TestEpi.unpack_dependencies() # TestEpi.run_epi_pipeline() else: print(f"output in {BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH} already written, skipping rerun") @staticmethod def write_temp_run_config_files(): nowstring: str = IntegrationTestUtils.get_now_string() prefix: str = "temp_epi_" + nowstring # prefix: str = "" default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config) run_dict: dict = copy.deepcopy(default_config_dict) BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep run_dict['WorkspacePathout'] = BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH run_dict['WorkspacePath'] = BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH run_dict['ServerName'] = '' # nothing, as local machine run_dict['Epidemiology']['CalculationSpanDays'] = [0, 1] os.makedirs(BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH, exist_ok = True) IntegrationTestUtils.TEMP_CONFIG_FILE_NAME = BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH + "temp_config.json" name = IntegrationTestUtils.TEMP_CONFIG_FILE_NAME IntegrationTestUtils.write_json_file(run_dict, name) @staticmethod def unpack_dependencies(): IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_DEPO_FILE_PATH, BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH) IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_ENV_SUIT_FILE_PATH, BaseEpiTestSuite.EpiTestSuite.TEST_OUT_PATH) @staticmethod def run_epi_pipeline(): component = 'Epidemiology' IntegrationTestUtils.run_unittest_pipeline(component, BaseEpiTestSuite.EpiTestSuite.TEST_START_DATE) if __name__ == '__main__': unittest.main()