diff --git a/binarycpython/tests/c_bindings/test_ensemble.py b/binarycpython/tests/c_bindings/test_ensemble.py index 31cc68acd9402765d5f0f086b03e26f0cb03279e..e57b321a1f3a17113a9c19be19ffad7377afa395 100644 --- a/binarycpython/tests/c_bindings/test_ensemble.py +++ b/binarycpython/tests/c_bindings/test_ensemble.py @@ -59,6 +59,7 @@ ensemble_filters_off {8} ensemble_filter_{9} 1 probability 0.1" return argstring + def test_return_persistent_data_memaddr(): """ Test case to check if the memory adress has been created succesfully @@ -90,7 +91,9 @@ def test_passing_persistent_data_to_run_system(): ensemble_jsons_1 = [ line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") ] - json_1 = handle_ensemble_string_to_json(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) + json_1 = handle_ensemble_string_to_json( + ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :] + ) # Doing 2 systems in a row. output_1_deferred = _binary_c_bindings.run_system( @@ -102,14 +105,18 @@ def test_passing_persistent_data_to_run_system(): ensemble_jsons_2 = [ line for line in output_2.splitlines() if line.startswith("ENSEMBLE_JSON") ] - json_2 = handle_ensemble_string_to_json(ensemble_jsons_2[0][len("ENSEMBLE_JSON ") :]) + json_2 = handle_ensemble_string_to_json( + ensemble_jsons_2[0][len("ENSEMBLE_JSON ") :] + ) # Doing system one again. output_1_again = _binary_c_bindings.run_system(argstring=argstring_1) ensemble_jsons_1 = [ line for line in output_1_again.splitlines() if line.startswith("ENSEMBLE_JSON") ] - json_1_again = handle_ensemble_string_to_json(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) + json_1_again = handle_ensemble_string_to_json( + ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :] + ) assert ( json_1 == json_1_again @@ -117,18 +124,62 @@ def test_passing_persistent_data_to_run_system(): assert ( json_1 != json_2 ), "The output of the deferred two systems should not be the same as the first undeferred output" + + import pickle + + def pickle_n_checksize(obj): name = os.path.join(TMP_DIR, "test", "pickle") - with open(name, 'wb') as file: + with open(name, "wb") as file: pickle.dump(obj, file) file_stats = os.stat(name) - print("size: {}mb".format(file_stats.st_size/(1024*1024))) + print("size: {}mb".format(file_stats.st_size / (1024 * 1024))) os.remove(name) + +def test_full_ensemble_output_new(): + """ + Function to just output the whole ensemble + """ + + argstring_1 = return_argstring(defer_ensemble=0, ensemble_filters_off=0) + print(argstring_1) + quit() + output_1 = _binary_c_bindings.run_system(argstring=argstring_1) + # print(output_1) + ensemble_jsons_1 = [ + line for line in output_1.splitlines() if line.startswith("ENSEMBLE_JSON") + ] + + print("start") + start = time.time() + json_1 = eval(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) + + # json_1 = eval( + # [line for line in _binary_c_bindings.run_system(argstring=argstring_1).splitlines() if line.startswith("ENSEMBLE_JSON")][0][len("ENSEMBLE_JSON ") :] + # ) + stop = time.time() + print("stop") + + pickle_n_checksize(json_1) + + print("took {}s to decode".format(stop - start)) + # print("Size of the json in memory: {}".format(sys.getsizeof(json_1))) + + print(json_1.keys()) + # assert statements: + assert "number_counts" in json_1.keys() + assert "HRD" in json_1.keys() + assert "HRD(t)" in json_1.keys() + assert "Xyield" in json_1.keys() + assert "distributions" in json_1.keys() + assert "scalars" in json_1.keys() + + def test_full_ensemble_output(): """ Function to just output the whole ensemble @@ -145,8 +196,6 @@ def test_full_ensemble_output(): argstring_1 += " ensemble_filter_SPECTRAL_TYPES 1 " argstring_1 += " ensemble_filter_HRD 1 " - - output_1 = _binary_c_bindings.run_system(argstring=argstring_1) pickle_n_checksize(output_1) ensemble_jsons_1 = [ @@ -155,13 +204,13 @@ def test_full_ensemble_output(): pickle_n_checksize(ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :]) - print('start') + print("start") start = time.time() json_1 = handle_ensemble_string_to_json( ensemble_jsons_1[0][len("ENSEMBLE_JSON ") :] ) stop = time.time() - print('stop') + print("stop") pickle_n_checksize(json_1) @@ -248,9 +297,7 @@ def test_adding_ensemble_output(): ) # Get a memory location - test_2_persistent_data_memaddr = ( - _binary_c_bindings.return_persistent_data_memaddr() - ) + test_2_persistent_data_memaddr = _binary_c_bindings.return_persistent_data_memaddr() # Run the systems and defer the output each time _ = _binary_c_bindings.run_system( @@ -283,9 +330,7 @@ def test_adding_ensemble_output(): # Then the second one uses that memory to combine its results with, but doesn't defer the # data after that, so it will print it after the second run is done - test_3_persistent_data_memaddr = ( - _binary_c_bindings.return_persistent_data_memaddr() - ) + test_3_persistent_data_memaddr = _binary_c_bindings.return_persistent_data_memaddr() # Run the systems and defer the output once and the second time not, so that the second run # automatically prints out the results @@ -337,7 +382,7 @@ def test_combine_with_empty_json(): """ Test for merging with an empty dict """ - + argstring_1 = return_argstring(defer_ensemble=0) output_1 = _binary_c_bindings.run_system(argstring=argstring_1) ensemble_jsons_1 = [ @@ -399,6 +444,7 @@ def test_free_and_json_output(): def all(): # test_return_persistent_data_memaddr() # test_passing_persistent_data_to_run_system() + test_full_ensemble_output_new() # test_full_ensemble_output() test_adding_ensemble_output() test_free_and_json_output()