FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
test_env_suit.py 4.54 KiB
Newer Older
import copy
import os
import unittest

L. Bower's avatar
L. Bower committed
from integration.partial.integration_test_utils import IntegrationTestUtils


class TestEnvSuit(unittest.TestCase):
L. Bower's avatar
L. Bower committed
    TEST_OUT_PATH: str = "not_set"
    TEST_START_DATE: str = '20221001'
    TEST_JOB_DIR: str = "ENVIRONMENT_2.0_" + TEST_START_DATE
L. Bower's avatar
L. Bower committed
    @classmethod
    def setUpClass(cls) -> None:
        TestEnvSuit.write_temp_run_config_file()
L. Bower's avatar
L. Bower committed
        TestEnvSuit.run_env_pipeline()
L. Bower's avatar
L. Bower committed

    @staticmethod
    def write_temp_run_config_file():
L. Bower's avatar
L. Bower committed
        nowstring: str = IntegrationTestUtils.get_now_string()
L. Bower's avatar
L. Bower committed
        prefix: str = "temp_env_" + nowstring
L. Bower's avatar
L. Bower committed

        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)
        TestEnvSuit.TEST_OUT_PATH = run_dict['WorkspacePathout'] + prefix + os.sep
        run_dict['WorkspacePathout'] = TestEnvSuit.TEST_OUT_PATH
        run_dict['WorkspacePath'] = TestEnvSuit.TEST_OUT_PATH
        run_dict['Environment']['WORK_PATH'] = TestEnvSuit.TEST_OUT_PATH
        run_dict['Environment']['INPUT_PATH'] = TestEnvSuit.TEST_OUT_PATH
        run_dict['Environment']['OUTPUT_PATH'] = TestEnvSuit.TEST_OUT_PATH
        run_dict['ServerName'] = ''  # nothing, as local machine
L. Bower's avatar
L. Bower committed
        full_server_path = os.path.abspath(
            "../../test_data/test_deployment/regions/EastAfrica/resources/coordinator/assets/")
L. Bower's avatar
L. Bower committed
        run_dict['Environment']['ServerPathTemplate'] = full_server_path

        IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.TEMP_CONFIG_FILE_PATH)
L. Bower's avatar
L. Bower committed

    @staticmethod
    def run_env_pipeline():
L. Bower's avatar
L. Bower committed
        IntegrationTestUtils.run_unittest_pipeline(component, TestEnvSuit.TEST_START_DATE)
L. Bower's avatar
L. Bower committed
    def test_standard_run_input_status_success(self):
        status_file_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR, "STATUS_SUCCESS")
        success_file_exists: bool = os.path.isfile(status_file_path)
        self.assertTrue(success_file_exists)
L. Bower's avatar
L. Bower committed

    def test_standard_run_input_all_regions_ran(self):
        """
        working on the assumption that if there are images for each region, it must have run through
        (at least past the region iteration)
        """

        east_africa_image_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                              "plotting", "eastafrica", "images", "Weekly",
                                              "suitability_eastafrica_leaf_rust_total_202210010000_202210070000_map.png")
        ethiopia_image_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                           "plotting", "ethiopia", "images", "Weekly",
                                           "suitability_ethiopia_leaf_rust_total_202210010000_202210070000_map.png")

        ea_file_exists: bool = os.path.isfile(east_africa_image_path)
        eth_file_exists: bool = os.path.isfile(ethiopia_image_path)
        self.assertTrue(ea_file_exists)
        self.assertTrue(eth_file_exists)


    def test_standard_run_all_input_csvs_produced(self):
        east_africa_csv_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                            "plotting", "eastafrica", "input_csvs", "*.csv")
        ethiopia_csv_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                         "plotting", "ethiopia", "input_csvs", "*.csv")

        ea_csv_count: int = IntegrationTestUtils.count_files_in_wildcard(east_africa_csv_path)
        eth_csv_count: int = IntegrationTestUtils.count_files_in_wildcard(ethiopia_csv_path)
        self.assertEqual(18, ea_csv_count)
        self.assertEqual(18, eth_csv_count)


    def test_standard_run_all_images_produced(self):
        east_africa_image_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                              "plotting", "eastafrica", "images", "Weekly", "*.png")
        ethiopia_image_path = os.path.join(TestEnvSuit.TEST_OUT_PATH, TestEnvSuit.TEST_JOB_DIR,
                                           "plotting", "ethiopia", "images", "Weekly", "*.png")

        ea_csv_count: int = IntegrationTestUtils.count_files_in_wildcard(east_africa_image_path)
        eth_csv_count: int = IntegrationTestUtils.count_files_in_wildcard(ethiopia_image_path)
        self.assertEqual(6, ea_csv_count)
        self.assertEqual(6, eth_csv_count)
L. Bower's avatar
L. Bower committed
    unittest.main()