From a765effb0e9e5739a113211afa757d3f51e44693 Mon Sep 17 00:00:00 2001 From: Rohan S Date: Sun, 15 Oct 2023 09:10:45 +0000 Subject: [PATCH] Test cases added using pytest --- .../filename_helpers.cpython-310.pyc | Bin 0 -> 1422 bytes .../listofnwmfilenames.cpython-310.pyc | Bin 0 -> 7837 bytes .../test_cases.cpython-310-pytest-7.2.0.pyc | Bin 0 -> 12175 bytes nwm_filenames/operational_aws/test_cases.py | 196 ++++++++++++++++++ .../listofnwmfilenames.cpython-310.pyc | Bin 0 -> 9496 bytes .../test_cases.cpython-310-pytest-7.2.0.pyc | Bin 0 -> 12179 bytes .../operational_aws_api/test_cases.py | 196 ++++++++++++++++++ 7 files changed, 392 insertions(+) create mode 100644 nwm_filenames/operational_aws/__pycache__/filename_helpers.cpython-310.pyc create mode 100644 nwm_filenames/operational_aws/__pycache__/listofnwmfilenames.cpython-310.pyc create mode 100644 nwm_filenames/operational_aws/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc create mode 100644 nwm_filenames/operational_aws/test_cases.py create mode 100644 nwm_filenames/operational_aws_api/__pycache__/listofnwmfilenames.cpython-310.pyc create mode 100644 nwm_filenames/operational_aws_api/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc create mode 100644 nwm_filenames/operational_aws_api/test_cases.py diff --git a/nwm_filenames/operational_aws/__pycache__/filename_helpers.cpython-310.pyc b/nwm_filenames/operational_aws/__pycache__/filename_helpers.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdc10240cf48e22b9ee0f906911346cd4c359433 GIT binary patch literal 1422 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 a`XtvrHOd*<|CGM32l|sbjKPYme)d13(~Hdj literal 0 HcmV?d00001 diff --git a/nwm_filenames/operational_aws/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc b/nwm_filenames/operational_aws/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e260453176c33de2ba75b7f26f76a97ed49658a GIT binary patch literal 12175 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 literal 0 HcmV?d00001 diff --git a/nwm_filenames/operational_aws_api/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc b/nwm_filenames/operational_aws_api/__pycache__/test_cases.cpython-310-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..272e3a1529e26bddd824bf856b7705c585772078 GIT binary patch literal 12179 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 literal 0 HcmV?d00001 diff --git a/nwm_filenames/operational_aws_api/test_cases.py b/nwm_filenames/operational_aws_api/test_cases.py new file mode 100644 index 0000000..272c4c4 --- /dev/null +++ b/nwm_filenames/operational_aws_api/test_cases.py @@ -0,0 +1,196 @@ +import pytest +from datetime import datetime +from listofnwmfilenames import ( + selectvar, + selectgeo, + selectrun, + makename, + run_type, + fhprefix, + varsuffix, + run_typesuffix, + select_forecast_cycle, + select_lead_time, + selecturlbase, + create_file_list, +) + + +def test_selectvar(): + assert selectvar({1: "channel_rt"}, 1) == "channel_rt" + + +def test_selectgeo(): + assert selectgeo({1: "conus"}, 1) == "conus" + + +def test_selectrun(): + assert selectrun({1: "short_range"}, 1) == "short_range" + + +def test_makename(): + assert makename( + datetime(2022, 1, 1, 0, 0, 0, 0), + "short_range", + "channel_rt", + 0, + 1, + "conus", + "forcing", + fhprefix="f", + runsuffix="_test", + varsuffix="_test", + run_typesuffix="_test", + urlbase_prefix="https://example.com/", + ) == "https://example.com/nwm.20220101/forcing_test/nwm.t00z.short_range_test.channel_rt_test.f001.conus.nc" + +@pytest.mark.parametrize("runinput, varinput, geoinput, expected_output", [ + (5, 5, 2, "forcing_analysis_assim_hawaii"), + (5, 5, 3, "forcing_analysis_assim_puertorico"), + (2, 5, 7, "forcing_medium_range"), + (1, 5, 7, "forcing_short_range"), + (1, 3, 3, "short_range_puertorico"), + (1, 5, 2, "forcing_short_range_hawaii"), + (1, 5, 3, "forcing_short_range_puertorico"), + (5, 5, 7, "forcing_analysis_assim"), + (6, 5, 7, "forcing_analysis_assim_extend"), + (5, 3, 3, "analysis_assim_puertorico"), + (10, 3, 3, "analysis_assim_puertorico_no_da"), + (1, 3, 3, "short_range_puertorico"), + (11, 3, 3, "short_range_puertorico_no_da"), + (2, 2, 2, "default_value") # Add a test case for default value +]) +def test_run_type(runinput, varinput, geoinput, expected_output): + assert run_type(runinput, varinput, geoinput, "default_value") == expected_output + + +def test_fhprefix(): + assert fhprefix(5) == "tm" + assert fhprefix(1) == "f" + assert fhprefix(10) == "tm" + + +def test_varsuffix(): + assert varsuffix(1) == "_1" + assert varsuffix(7) == "_7" + assert varsuffix(8) == "" + + +def test_run_typesuffix(): + assert run_typesuffix(1) == "_mem1" + assert run_typesuffix(7) == "_mem7" + assert run_typesuffix(8) == "" + + +def test_select_forecast_cycle(): + assert select_forecast_cycle(12, 0) == 12 + assert select_forecast_cycle(None, 0) == 0 + + +def test_select_lead_time(): + assert select_lead_time(240, 0) == 240 + assert select_lead_time(None, 0) == 0 + + +def test_selecturlbase(): + assert selecturlbase({1: "https://example.com/"}, 1) == "https://example.com/" + assert selecturlbase({1: "https://example.com/"}, 2, "default") == "default" + +fcst_cycle_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23] +lead_time_values = [1, 2, 240] +valid_base_urls = [ + "", + "https://nomads.ncep.noaa.gov/pub/data/nccf/com/nwm/prod/", + "https://storage.googleapis.com/national-water-model/", + "https://storage.cloud.google.com/national-water-model/", + "gs://national-water-model/", + "gcs://national-water-model/", + "https://noaa-nwm-pds.s3.amazonaws.com/", + "https://ciroh-nwm-zarr-copy.s3.amazonaws.com/national-water-model/", +] + +valid_folder_names = [ + "analysis_assim", + "analysis_assim_alaska", + "analysis_assim_alaska_no_da", + "analysis_assim_coastal_atlgulf", + "analysis_assim_coastal_hawaii", + "analysis_assim_coastal_pacific", + "analysis_assim_coastal_puertorico", + "analysis_assim_extend", + "analysis_assim_extend_alaska", + "analysis_assim_extend_alaska_no_da", + "analysis_assim_extend_coastal_atlgulf", + "analysis_assim_extend_coastal_pacific", + "analysis_assim_extend_no_da", + "analysis_assim_hawaii", + "analysis_assim_hawaii_no_da", + "analysis_assim_long", + "analysis_assim_long_no_da", + "analysis_assim_no_da", + "analysis_assim_puertorico", + "analysis_assim_puertorico_no_da", + "forcing_analysis_assim", + "forcing_analysis_assim_alaska", + "forcing_analysis_assim_extend", + "forcing_analysis_assim_extend_alaska", + "forcing_analysis_assim_hawaii", + "forcing_analysis_assim_puertorico", + "forcing_medium_range", + "forcing_medium_range_alaska", + "forcing_medium_range_blend", + "forcing_medium_range_blend_alaska", + "forcing_short_range", + "forcing_short_range_alaska", + "forcing_short_range_hawaii", + "forcing_short_range_puertorico", + "long_range_mem1", + "long_range_mem2", + "long_range_mem3", + "long_range_mem4", + "medium_range_alaska_mem1", + "medium_range_alaska_mem2", + "medium_range_alaska_mem3", + "medium_range_alaska_mem4", + "medium_range_alaska_mem5", + "medium_range_alaska_mem6", + "medium_range_alaska_no_da", + "medium_range_blend", + "medium_range_blend_alaska", + "medium_range_blend_coastal_atlgulf", + "medium_range_blend_coastal_pacific", + "medium_range_coastal_atlgulf_mem1", + "short_range" +] +import requests + +def is_valid_url(url): + try: + response = requests.head(url) + return response.status_code < 400 + except requests.ConnectionError: + return False + +@pytest.mark.parametrize("runinput, varinput, geoinput, meminput, start_date, end_date, fcst_cycle, urlbaseinput, lead_time, expected_output", [ + (1, 1, 1, 0, "201809170000", "201809172300", fcst_cycle_values, 3, None, ["expected_file_name_1"]), + (5, 5, 2, 1, "201809170000", "201809171200", fcst_cycle_values, 1, lead_time_values, ["expected_file_name_2"]), + (2, 5, 3, 3, "201809170600", "201809171800", fcst_cycle_values, 2, lead_time_values, ["expected_file_name_3"]), + +]) +def test_create_file_list(runinput, varinput, geoinput, meminput, start_date, end_date, fcst_cycle, urlbaseinput, lead_time, expected_output): + file_list = create_file_list(runinput, varinput, geoinput, meminput, start_date, end_date, fcst_cycle, urlbaseinput, lead_time) + assert isinstance(file_list, list) + assert all(isinstance(file_name, str) for file_name in file_list) + for url in file_list: + # assert is_valid_url(url), f"Invalid URL: {url}" + assert any(substring in url for substring in valid_folder_names), f"No valid folder name found in URL: {url}" + + + # Check if all base URLs exist in the predefined list + for url in file_list: + assert any(url.startswith(base_url) for base_url in valid_base_urls), f"Invalid base URL in generated URL: {url}" + + + +if __name__ == "__main__": + pytest.main() \ No newline at end of file