def test_delete_results_dir(capsys): common_test_helpers.skip_if_outside_sim_db() with capsys.disabled(): print("\nTest delete_results_dir...") for entry in os.listdir(common_test_helpers.get_test_dir() + '/results'): print(common_test_helpers.get_test_dir() + '/results/' + entry) assert not os.path.isdir(common_test_helpers.get_test_dir() + '/results/' + entry)
def setup_module(module): """Clean up 'results/' directory.""" for entry in os.listdir(common_test_helpers.get_test_dir() + '/results'): if os.path.isdir(common_test_helpers.get_test_dir() + '/results/' + entry): shutil.rmtree(common_test_helpers.get_test_dir() + '/results/' + entry) if os.path.isdir(common_test_helpers.get_test_dir() + '/.sim_db'): shutil.rmtree(common_test_helpers.get_test_dir() + '/.sim_db')
def test_combine_dbs(capsys): common_test_helpers.skip_if_outside_sim_db() path_db_1 = common_test_helpers.get_test_dir() + "/sim1_test_comb.db" path_db_2 = common_test_helpers.get_test_dir() + "/sim2_test_comb.db" path_comb_db = common_test_helpers.get_test_dir() + "/new_comb_sim.db" if os.path.exists(path_comb_db): os.remove(path_comb_db) command_line_tool("sim_db", ["combine_dbs", path_db_1, path_db_2, path_comb_db]) comb_sim_db = helpers.connect_sim_db(path_comb_db) comb_sim_db_cursor = comb_sim_db.cursor() db_1 = helpers.connect_sim_db(path_db_1) db_1_cursor = db_1.cursor() db_2 = helpers.connect_sim_db(path_db_2) db_2_cursor = db_2.cursor() column_names_1, column_types_1 = helpers.get_db_column_names_and_types( db_1_cursor) column_names_2, column_types_2 = helpers.get_db_column_names_and_types( db_2_cursor) column_names_comb, column_types_comb = helpers.get_db_column_names_and_types( \ comb_sim_db_cursor) old_run_commands = [] db_1_cursor.execute("SELECT run_command FROM runs WHERE id=1;") old_run_commands.append(db_1_cursor.fetchall()[0][0]) db_1_cursor.execute("SELECT run_command FROM runs WHERE id=2;") old_run_commands.append(db_1_cursor.fetchall()[0][0]) db_2_cursor.execute("SELECT run_command FROM runs WHERE id=1;") old_run_commands.append(db_2_cursor.fetchall()[0][0]) db_2_cursor.execute("SELECT run_command FROM runs WHERE id=2;") old_run_commands.append(db_2_cursor.fetchall()[0][0]) new_run_commands = [] comb_sim_db_cursor.execute("SELECT run_command FROM runs WHERE id=1;") new_run_commands.append(comb_sim_db_cursor.fetchall()[0][0]) comb_sim_db_cursor.execute("SELECT run_command FROM runs WHERE id=2;") new_run_commands.append(comb_sim_db_cursor.fetchall()[0][0]) comb_sim_db_cursor.execute("SELECT run_command FROM runs WHERE id=3;") new_run_commands.append(comb_sim_db_cursor.fetchall()[0][0]) comb_sim_db_cursor.execute("SELECT run_command FROM runs WHERE id=4;") new_run_commands.append(comb_sim_db_cursor.fetchall()[0][0]) with capsys.disabled(): print("\nTest combine_dbs...") comb_sim_db.commit() comb_sim_db_cursor.close() comb_sim_db.close() os.remove(path_comb_db) for column_name in column_names_1: assert column_name in column_names_comb for column_name in column_names_2: assert column_name in column_names_comb for (old_command, new_command) in zip(old_run_commands, new_run_commands): assert old_command == new_command
def test_init(capsys): common_test_helpers.skip_if_outside_sim_db() command_line_tool( "sim_db", ["init", "--path", "{0}".format(common_test_helpers.get_test_dir())]) with capsys.disabled(): print("\nTest init...") assert os.path.isdir(common_test_helpers.get_test_dir() + '/.sim_db') assert os.path.isfile(common_test_helpers.get_test_dir() + '/.sim_db/settings.txt') shutil.rmtree(common_test_helpers.get_test_dir() + '/.sim_db')
def test_add_sim_print_sim_and_delete_sim(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) command_line_tool( "sim_db", "print --id {0} -v --no_headers --columns name test_param1 " "test_param2 test_param3 test_param4 test_param5 test_param6 " "test_param7 test_param8 test_param9 test_param10 test_param11 " "test_param12 test_param13".format(db_id).split()) output_print_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) command_line_tool("sim_db", "print -n 1 --no_headers --columns id".split()) output_after_delete, err = capsys.readouterr() with capsys.disabled(): print("\nTest add_sim, print_sim and delete_sim...") __assert_output_print_sim_after_add_sim(output_print_sim) # Test that the added simulation parameters are deleted assert ( len(output_after_delete) == 0 or output_after_delete.splitlines()[-1].strip() != "{0}".format(db_id))
def test_add_and_submit(capsys): common_test_helpers.skip_if_outside_sim_db() settings_no_set, job_scheduler, n_cpus_per_node, memory_per_node = \ __read_job_scheduler_settings() with capsys.disabled(): print("\nTest add_and_submit...") for no_set in settings_no_set: print( "WARNING: In settings.txt '{0}' is NOT set, but must be to test " "add_and_submit.".format(no_set)) if len(settings_no_set) == 0: db_id, job_script_name, job_id = command_line_tool( "sim_db", [ "add_and_submit", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()), "--n_nodes", "2", "--max_walltime", "03:34:00", "--do_not_submit_job_script" ], print_ids_added=False) command_line_tool("sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) job_script_file = open(job_script_name, 'r') lines = job_script_file.readlines() job_script_file.close() os.remove(job_script_name) __assert_lines_job_script(lines, job_scheduler, n_cpus_per_node, memory_per_node)
def test_add_and_run(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_and_run", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) assert db_id != None output_program, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} -v --no_headers --columns name test_param1 " "test_param2 test_param3 test_param4 test_param5 test_param6 " "test_param7 test_param8 test_param9 test_param10 test_param11 " "test_param12 test_param13".format(db_id).split()) output_print_sim_after_add_sim, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} -v --columns new_test_param1 new_test_param2 " "new_test_param3 new_test_param4 new_test_param5 new_test_param6 " "new_test_param7 new_test_param8 new_test_param9 new_test_param10 " "results_dir time_started used_walltime --no_headers".format( db_id).split()) output_print_sim_after_run_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) with capsys.disabled(): print("\nTest add_and_run...") __assert_output_print_sim_after_add_sim(output_print_sim_after_add_sim) common_test_helpers.assert_output_python_program(output_program, db_id) common_test_helpers.assert_output_print_sim_after_run_sim( output_print_sim_after_run_sim, True)
def __run_python_functions(capsys, store_metadata): db_id = command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) if not store_metadata: run_command = __add_no_metadata_flag_to_run_command(capsys, db_id) command_line_tool("sim_db", "run_sim --id {0}".format(db_id).split()) output_program, err_program = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} -v --columns new_test_param1 new_test_param2 " "new_test_param3 new_test_param4 new_test_param5 new_test_param6 " "new_test_param7 new_test_param8 new_test_param9 new_test_param10 " "results_dir time_started used_walltime --no_headers".format( db_id).split()) output_print_sim, err_print_sim = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) with capsys.disabled(): if store_metadata: print("\nTest python methods...") if len(err_program) + len(err_print_sim) > 0: print(err_program) print(err_print_sim) else: print("\nTest python methods without storing metadata...") if len(err_program) + len(err_print_sim) > 0: print(err_program) print(err_print_sim) common_test_helpers.assert_output_python_program(output_program, db_id) common_test_helpers.assert_output_print_sim_after_run_sim( output_print_sim, store_metadata)
def test_extract_params(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) command_line_tool("sim_db", "extract_params --id {0}".format(db_id).split()) output_extract_params, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) lines_extract_params = output_extract_params.split('\n') with capsys.disabled(): print("\nTest extract_params...") assert "name (string): test_sim" == lines_extract_params[0] assert "test_param1 (int): 3" == lines_extract_params[6] assert "test_param2 (float): -5000000000.0" == lines_extract_params[8] assert "test_param3 (string): hei" == lines_extract_params[10] assert "test_param4 (bool): True" == lines_extract_params[12] assert "test_param5 (int array): [1, 2, 3]" == lines_extract_params[14] assert "test_param6 (float array): [1.5, 2.5, 3.5]" == lines_extract_params[ 16] assert "test_param7 (string array): [a, b, c]" == lines_extract_params[18] assert "test_param8 (bool array): [True, False, True]" == lines_extract_params[ 20] assert "test_param9 (int): 9" == lines_extract_params[22] assert "test_param10 (int): 11" == lines_extract_params[24]
def test_run_serial_sims(capsys): common_test_helpers.skip_if_outside_sim_db() id_1 = command_line_tool("sim_db", [ "add_sim", "--filename", common_test_helpers.get_test_dir() + "/params_python_program.txt" ], print_ids_added=False) id_2 = command_line_tool("sim_db", [ "add_sim", "--filename", common_test_helpers.get_test_dir() + "/params_c_program.txt" ], print_ids_added=False) id_3 = command_line_tool("sim_db", [ "add_sim", "--filename", common_test_helpers.get_test_dir() + "/params_cpp_program.txt" ], print_ids_added=False) command_line_tool( "sim_db", ["run_serial_sims", "--id", str(id_1), str(id_2), str(id_3)]) output_serial_run, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} {1} {2} -v --no_headers --columns name " "test_param1 ".format(id_1, id_2, id_3).split()) output_print_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(id_1), str(id_2), str(id_3), "--no_checks"]) command_line_tool("sim_db", "print_sim -n 1 --no_headers --columns id".split()) output_after_delete, err = capsys.readouterr() with capsys.disabled(): print("\nTest run_serial_sims...") printed_params = output_print_sim.split('\n')[0::2] printed_names = printed_params[0].split() printed_params_1 = printed_params[1].split() assert printed_names[0] == printed_names[1] == printed_names[2] assert printed_params_1[0] == printed_params_1[1] == printed_params_1[2] # Test that the added simulation parameters are deleted assert (len(output_after_delete) == 0 or output_after_delete != "{0}".format(id_3))
def test_settings(capsys): common_test_helpers.skip_if_outside_sim_db() command_line_tool( "sim_db", ["init", "--path", "{0}".format(common_test_helpers.get_test_dir())]) output_program, err = capsys.readouterr() cwd = os.getcwd() os.chdir(common_test_helpers.get_test_dir()) command_line_tool("sim_db", ["settings", "print", "--setting", "parameter_files"]) output_setting_print_original, err = capsys.readouterr() command_line_tool("sim_db", [ "settings", "add", "--setting", "parameter_files", "--line", "test_settings.txt" ]) command_line_tool("sim_db", ["settings", "print", "--setting", "parameter_files"]) output_setting_print_after_add, err = capsys.readouterr() command_line_tool("sim_db", [ "settings", "remove", "--setting", "parameter_files", "--line", "sim_params.txt" ]) command_line_tool("sim_db", ["settings", "print", "--setting", "parameter_files"]) output_setting_print_after_remove, err = capsys.readouterr() command_line_tool("sim_db", ["settings", "reset_to_default"]) output, err = capsys.readouterr() command_line_tool("sim_db", ["settings", "print", "--setting", "parameter_files"]) output_setting_print_after_reset, err = capsys.readouterr() with capsys.disabled(): print("\nTest settings...") os.chdir(cwd) shutil.rmtree(common_test_helpers.get_test_dir() + '/.sim_db') assert output_setting_print_original.strip() == 'sim_params.txt' assert output_setting_print_after_add.split( '\n')[0].strip() == 'sim_params.txt' assert output_setting_print_after_add.split( '\n')[1].strip() == 'test_settings.txt' assert output_setting_print_after_remove.strip() == 'test_settings.txt' assert output_setting_print_after_reset.strip() == 'sim_params.txt'
def test_python_multithreading(capsys): common_test_helpers.skip_if_outside_sim_db() with capsys.disabled(): print("\nTest python multithreading and processing...") path_script = os.path.join(common_test_helpers.get_test_dir(), "multithreading_and_processing.py") output = subprocess.check_output(["python", path_script], universal_newlines=True) last_line = output.splitlines()[-1] assert last_line.strip() == "finished"
def test_add_sim_with_alias_error(capsys): common_test_helpers.skip_if_outside_sim_db() with pytest.raises(SystemExit) as pytest_wrapped_e: command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_alias_error.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) output_sim_add, err = capsys.readouterr() with capsys.disabled(): print("\nTest that add_sim catches alias error...") assert pytest_wrapped_e.type == SystemExit assert ( output_sim_add.splitlines()[0] == "ERROR: Alias name on line no. 0 " "in the parameter file MUST start and end with curly brackets.")
def test_add_range_sim(capsys): common_test_helpers.skip_if_outside_sim_db() db_ids = command_line_tool( "sim_db", "add_range_sim --filename".split() + [ "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ] + "--columns test_param1 test_param2 --lin_steps 0 2 --exp_steps " "3 1 --end_steps 27 -4999999999 --n_steps 0 2".split(), print_ids_added=False) db_ids_string = "" for db_id in db_ids: db_ids_string = db_ids_string + " " + str(db_id) command_line_tool( "sim_db", "print_sim --id {0} -v --no_headers --columns " "test_param1 test_param2".format(db_ids_string).split()) output_print_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) command_line_tool("sim_db", "print_sim -n 1 --no_headers --columns id".split()) output_after_delete, err = capsys.readouterr() with capsys.disabled(): print("\nTest add_range_sim...") test_param1_list, test_param2_list = output_print_sim.split('\n', 1) test_param1_list = test_param1_list.split() test_param2_list = test_param2_list.split() assert (test_param1_list[0] == "3" and test_param1_list[1] == "3" and test_param1_list[2] == "3") assert (test_param1_list[3] == "9" and test_param1_list[4] == "9" and test_param1_list[5] == "9") assert (test_param1_list[6] == "27" and test_param1_list[7] == "27" and test_param1_list[8] == "27") param2_start = -5000000000.0 assert (test_param2_list[0] == str(param2_start) and test_param2_list[3] == str(param2_start) and test_param2_list[6] == str(param2_start)) assert (test_param2_list[1] == str(param2_start + 2) and test_param2_list[4] == str(param2_start + 2) and test_param2_list[7] == str(param2_start + 2)) assert (test_param2_list[2] == str(param2_start + 4) and test_param2_list[5] == str(param2_start + 4) and test_param2_list[8] == str(param2_start + 4)) # Test that the added simulation parameters are deleted assert (len(output_after_delete) == 0 or output_after_delete != "{0}".format(db_id))
def test_c_multithreading(capsys): common_test_helpers.skip_if_outside_sim_db() with capsys.disabled(): print("\nTest C multithreading and processing...") path_tests_dir = common_test_helpers.get_test_dir() path_sim_db_root = os.path.join(path_tests_dir, os.pardir) path_build = os.path.join(path_tests_dir, "build") path_c_mtap = os.path.join(os.path.join(path_tests_dir, "build"), "c_mtap") subprocess.call([ "cmake", "-H{0}".format(path_sim_db_root), "-B{0}".format(path_build), "-DCMAKE_BUILD_TYPE=Debug" ]) subprocess.call(["cmake", "--build", path_build, "--target", "c_mtap"]) output = subprocess.check_output([path_c_mtap], universal_newlines=True) last_line = output.splitlines()[-1] assert last_line.strip() == "finished"
def test_duplicate_delete_and_run(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) new_id = command_line_tool( "sim_db", ["duplicate_delete_and_run", "--id", str(db_id), "--no_checks"], print_ids_added=False) output_program, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} -v --no_headers --columns name test_param1 " "test_param2 test_param3 test_param4 test_param5 test_param6 " "test_param7 test_param8 test_param9 test_param10 test_param11 " "test_param12 test_param13".format(new_id).split()) output_print_sim_after_duplicate_sim, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim --id {0} -v --columns new_test_param1 new_test_param2 " "new_test_param3 new_test_param4 new_test_param5 new_test_param6 " "new_test_param7 new_test_param8 new_test_param9 new_test_param10 " "results_dir time_started used_walltime --no_headers".format( new_id).split()) output_print_sim_after_run_sim, err = capsys.readouterr() command_line_tool("sim_db", ["delete_sim", "--id", str(new_id), "--no_checks"]) command_line_tool("sim_db", "print -n 1 --no_headers --columns id".split()) output_after_delete, err = capsys.readouterr() with capsys.disabled(): print("\nTest duplicate_delete_and_run...") __assert_output_print_sim_after_add_sim( output_print_sim_after_duplicate_sim) common_test_helpers.assert_output_python_program(output_program, new_id) common_test_helpers.assert_output_print_sim_after_run_sim( output_print_sim_after_run_sim, True) # Test that the added simulation parameters are deleted assert ( len(output_after_delete) == 0 or output_after_delete.splitlines()[-1].strip() != "{0}".format(db_id))
def test_add_comment(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_sim", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ], print_ids_added=False) command_line_tool("sim_db", [ "add_comment", "--id", "{0}".format(db_id), "--comment", "This is a test comment." ]) command_line_tool( "sim_db", "print_sim --id {0} --columns comment --no_headers".format( db_id).split()) output_print_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) with capsys.disabled(): print("\nTest add_comment...") assert output_print_sim.strip() == "This is a test comment."
def test_get_and_cd_results_dir(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_and_run", "--filename", "{0}/params_python_program.txt".format( common_test_helpers.get_test_dir()) ]) output_program, err_program = capsys.readouterr() results_dir = command_line_tool( "sim_db", "get results_dir --id {0}".format(db_id).split()) command_line_tool( "sim_db", "print_sim --id {0} -v --columns results_dir --no_headers".format( db_id).split()) output_print_sim, err_print_sim = capsys.readouterr() with capsys.disabled(): print("\nTest get and cd_results_dir...") assert os.path.isdir(results_dir) command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) assert not os.path.isdir(results_dir)
def test_duplicate_sim(capsys): common_test_helpers.skip_if_outside_sim_db() db_id = command_line_tool("sim_db", [ "add_sim", "--filename", common_test_helpers.get_test_dir() + "/params_python_program.txt" ], print_ids_added=False) command_line_tool( "sim_db", ["update_sim", "--id", str(db_id), "-c", "status", "-v", "finished"]) db_id_duplicated = command_line_tool( "sim_db", ["duplicate_sim", "--id", str(db_id)], print_ids_added=False) command_line_tool( "sim_db", "print_sim -i {0} --no_headers -v -c id status name " "--params --results".format(db_id).split()) output_original_sim, err = capsys.readouterr() command_line_tool( "sim_db", "print_sim -i {0} --no_headers -v -c id status name " "--params --results".format(db_id_duplicated).split()) output_duplicated_sim, err = capsys.readouterr() command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id), "--no_checks"]) command_line_tool( "sim_db", ["delete_sim", "--id", str(db_id_duplicated), "--no_checks"]) with capsys.disabled(): print("\nTest duplicate_sim...") assert (output_original_sim.split('\n')[0].strip() != output_duplicated_sim.split('\n')[0].strip()) assert output_duplicated_sim.split('\n')[2].strip() == 'new' assert (output_original_sim.split('\n', 3)[3] == output_duplicated_sim.split( '\n', 3)[3])