Esempio n. 1
0
def test_setup_sum_method(metplus_config):
    data_src = "OBS"
    pcw = pcp_combine_wrapper(metplus_config, data_src)
    task_info = {}
    task_info['valid'] = datetime.strptime("2016090418", '%Y%m%d%H')
    task_info['lead'] = 0
    time_info = ti_calculate(task_info)
    lookback = 6 * 3600
    assert pcw.setup_sum_method(time_info, lookback, data_src)
Esempio n. 2
0
def test_setup_subtract_method(metplus_config):
    data_src = "FCST"
    pcw = pcp_combine_wrapper(metplus_config, data_src)
    task_info = {}
    task_info['valid'] = datetime.strptime("201609050000", '%Y%m%d%H%M')
    task_info['lead_hours'] = 9
    time_info = ti_calculate(task_info)
    lookback = 6 * 3600
    files_found = pcw.setup_subtract_method(time_info, lookback, data_src)
    in_files = [item[0] for item in files_found]

    assert len(in_files) == 2
Esempio n. 3
0
def test_handle_jobs(metplus_config, jobs, init_dt, expected_output):
    if init_dt:
        time_info = ti_calculate({'init': init_dt})
    else:
        time_info = None

    wrapper = tc_stat_wrapper(metplus_config)
    output_base = wrapper.config.getdir('OUTPUT_BASE')
    output_dir = os.path.join(output_base, 'test_handle_jobs')

    wrapper.c_dict['JOBS'] = []
    for job in jobs:
        wrapper.c_dict['JOBS'].append(job.replace('<output_dir>', output_dir))

    output = wrapper.handle_jobs(time_info)
    assert (output == expected_output.replace('<output_dir>', output_dir))
Esempio n. 4
0
def test_get_accumulation_6_to_6(metplus_config):
    data_src = "FCST"
    pcw = pcp_combine_wrapper(metplus_config, data_src)
    input_dir = pcw.config.getdir(
        'METPLUS_BASE') + "/internal_tests/data/accum"
    task_info = {}
    task_info['valid'] = datetime.strptime("2016090418", '%Y%m%d%H')
    time_info = ti_calculate(task_info)
    accum = 6 * 3600

    template = "{valid?fmt=%Y%m%d}/file.{valid?fmt=%Y%m%d%H}.{level?fmt=%HH}h"
    pcw.c_dict['FCST_INPUT_TEMPLATE'] = template

    pcw.c_dict[f'{data_src}_INPUT_DIR'] = input_dir
    pcw._build_input_accum_list(data_src, time_info)

    files_found = pcw.get_accumulation(time_info, accum, data_src)
    in_files = [item[0] for item in files_found]
    assert (len(in_files) == 1
            and input_dir + "/20160904/file.2016090418.06h" in in_files)
Esempio n. 5
0
def test_setup_add_method(metplus_config):
    data_src = "OBS"
    pcw = pcp_combine_wrapper(metplus_config, data_src)
    task_info = {}
    task_info['valid'] = datetime.strptime("2016090418", '%Y%m%d%H')
    time_info = ti_calculate(task_info)

    input_dir = pcw.config.getdir(
        'METPLUS_BASE') + "/internal_tests/data/accum"
    lookback = 6 * 3600
    files_found = pcw.setup_add_method(time_info, lookback, data_src)
    assert files_found

    in_files = [item[0] for item in files_found]
    print(f"Infiles: {in_files}")
    assert (len(in_files) == 6
            and input_dir + "/20160904/file.2016090418.01h" in in_files
            and input_dir + "/20160904/file.2016090417.01h" in in_files
            and input_dir + "/20160904/file.2016090416.01h" in in_files
            and input_dir + "/20160904/file.2016090415.01h" in in_files
            and input_dir + "/20160904/file.2016090414.01h" in in_files
            and input_dir + "/20160904/file.2016090413.01h" in in_files)
Esempio n. 6
0
def test_get_accumulation_1_to_6(metplus_config):
    data_src = "OBS"
    pcw = pcp_combine_wrapper(metplus_config, data_src)
    input_dir = pcw.config.getdir(
        'METPLUS_BASE') + "/internal_tests/data/accum"
    task_info = {}
    task_info['valid'] = datetime.strptime("2016090418", '%Y%m%d%H')
    time_info = ti_calculate(task_info)
    # 6 hours in seconds
    accum = 6 * 3600

    pcw.c_dict[f'{data_src}_INPUT_DIR'] = input_dir
    pcw._build_input_accum_list(data_src, time_info)

    files_found = pcw.get_accumulation(time_info, accum, data_src)
    in_files = [item[0] for item in files_found]
    assert (len(in_files) == 6
            and input_dir + "/20160904/file.2016090418.01h" in in_files
            and input_dir + "/20160904/file.2016090417.01h" in in_files
            and input_dir + "/20160904/file.2016090416.01h" in in_files
            and input_dir + "/20160904/file.2016090415.01h" in in_files
            and input_dir + "/20160904/file.2016090414.01h" in in_files
            and input_dir + "/20160904/file.2016090413.01h" in in_files)
Esempio n. 7
0
def test_handle_jobs_create_parent_dir(metplus_config, jobs, init_dt,
                                       expected_output, parent_dirs):
    # if init time is provided, calculate other time dict items
    if init_dt:
        time_info = ti_calculate({'init': init_dt})
    else:
        time_info = None

    wrapper = tc_stat_wrapper(metplus_config)

    # create directory path relative to OUTPUT_BASE to test that function
    # creates parent directories properly
    # Used to replace <output_dir> string found in test arguments
    output_base = wrapper.config.getdir('OUTPUT_BASE')
    output_dir = os.path.join(output_base, 'test_handle_jobs')

    # remove parent dirs if they exist
    cleanup_test_dirs(parent_dirs, output_dir)

    wrapper.c_dict['JOBS'] = []
    for job in jobs:
        wrapper.c_dict['JOBS'].append(job.replace('<output_dir>', output_dir))

    output = wrapper.handle_jobs(time_info)
    if output != expected_output.replace('<output_dir>', output_dir):
        assert False

    # check if parent dir was created
    if parent_dirs:
        for parent_dir in parent_dirs:
            parent_dir_sub = parent_dir.replace('<output_dir>', output_dir)
            if not os.path.exists(parent_dir_sub):
                assert False

    # remove parent dirs to clean up for next run
    cleanup_test_dirs(parent_dirs, output_dir)