Skip to content

Commit f375e9a

Browse files
committed
more verbose error messagge
1 parent c612fbb commit f375e9a

1 file changed

Lines changed: 35 additions & 16 deletions

File tree

integration/run_tests.py

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -860,13 +860,19 @@ def compare_json(config, response, json_file, daemon_file, exp_rsp_file, diff_fi
860860
diff_file_size = 0
861861
return_code = 1 # ok
862862
error_msg = ""
863+
diff_content = ""
863864
if diff_result == 1:
864865
diff_file_size = os.stat(diff_file).st_size
865866
if diff_file_size != 0 or diff_result == 0:
866867
if diff_result == 0:
867868
error_msg = "Failed Timeout"
868869
else:
869870
error_msg = "Failed"
871+
try:
872+
with open(diff_file, 'r', encoding='utf8') as f:
873+
diff_content = f.read()
874+
except OSError:
875+
pass
870876
return_code = 0 # failed
871877

872878
if os.path.exists(temp_file1):
@@ -878,7 +884,7 @@ def compare_json(config, response, json_file, daemon_file, exp_rsp_file, diff_fi
878884
shutil.rmtree(base_name)
879885
except OSError:
880886
pass
881-
return return_code, error_msg
887+
return return_code, error_msg, diff_content
882888

883889

884890
def process_response(target, target1, result, result1: str, response_in_file, config,
@@ -887,44 +893,46 @@ def process_response(target, target1, result, result1: str, response_in_file, co
887893

888894
response, error_msg = get_json_from_response(target, config.daemon_under_test, config.verbose_level, result)
889895
if response is None:
890-
return 0, error_msg
896+
return 0, error_msg, {"message": error_msg, "target": target}
891897

892898
if result1 != "":
893899
expected_response, error_msg = get_json_from_response(target1, config.daemon_as_reference, config.verbose_level, result1)
894900
if expected_response is None:
895-
return 0, error_msg
901+
return 0, error_msg, {"message": error_msg, "target": target1}
896902
else:
897903
expected_response = response_in_file
898904

899905
if config.without_compare_results is True:
900906
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
901-
return 1, ""
907+
return 1, "", {}
902908

903909
if response is None:
904-
return 0, "Failed [" + config.daemon_under_test + "] (server doesn't response)"
910+
error_msg = "Failed [" + config.daemon_under_test + "] (server doesn't response)"
911+
return 0, error_msg, {"message": error_msg, "target": target}
905912

906913
if expected_response is None:
907-
return 0, "Failed [" + config.daemon_as_reference + "] (server doesn't response)"
914+
error_msg = "Failed [" + config.daemon_as_reference + "] (server doesn't response)"
915+
return 0, error_msg, {"message": error_msg, "target": target1}
908916

909917
if response != expected_response:
910918
if "result" in response and "result" in expected_response and expected_response["result"] is None and result1 == "":
911919
# response and expected_response are different but don't care
912920
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
913-
return 1, ""
921+
return 1, "", {}
914922
if "error" in response and "error" in expected_response and expected_response["error"] is None:
915923
# response and expected_response are different but don't care
916924
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
917-
return 1, ""
925+
return 1, "", {}
918926
if "error" not in expected_response and "result" not in expected_response and not isinstance(expected_response, list) and len(expected_response) == 2:
919927
# response and expected_response are different but don't care
920928
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
921-
return 1, ""
929+
return 1, "", {}
922930
if "error" in response and "error" in expected_response and config.do_not_compare_error:
923931
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
924-
return 1, ""
932+
return 1, "", {}
925933
dump_jsons(True, daemon_file, exp_rsp_file, output_dir, response, expected_response)
926934

927-
same, error_msg = compare_json(config, response, json_file, daemon_file, exp_rsp_file, diff_file, test_number)
935+
same, error_msg, diff_content = compare_json(config, response, json_file, daemon_file, exp_rsp_file, diff_file, test_number)
928936
# cleanup
929937
if same:
930938
os.remove(daemon_file)
@@ -937,10 +945,17 @@ def process_response(target, target1, result, result1: str, response_in_file, co
937945
pass
938946

939947
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
940-
return same, error_msg
948+
error_details = {
949+
"message": error_msg,
950+
"target": target,
951+
"actual_response": response,
952+
"expected_response": expected_response,
953+
"diff": diff_content,
954+
}
955+
return same, error_msg, error_details
941956

942957
dump_jsons(config.force_dump_jsons, daemon_file, exp_rsp_file, output_dir, response, expected_response)
943-
return 1, ""
958+
return 1, "", {}
944959

945960

946961
def run_test(json_file: str, test_number, transport_type, config):
@@ -1008,7 +1023,7 @@ def run_test(json_file: str, test_number, transport_type, config):
10081023
daemon_file = output_api_filename + get_json_filename_ext(DAEMON_ON_DEFAULT_PORT, target)
10091024
exp_rsp_file = output_api_filename + get_json_filename_ext(config.daemon_as_reference, target1)
10101025

1011-
return process_response(
1026+
result_code, error_msg, error_details = process_response(
10121027
target,
10131028
target1,
10141029
result,
@@ -1021,6 +1036,10 @@ def run_test(json_file: str, test_number, transport_type, config):
10211036
diff_file,
10221037
json_file,
10231038
test_number)
1039+
if not result_code and error_details is not None:
1040+
error_details["request"] = json.loads(request_dumps)
1041+
error_details.setdefault("target", target)
1042+
return result_code, error_msg, error_details
10241043

10251044

10261045
def extract_number(filename):
@@ -1193,7 +1212,7 @@ def main(argv) -> int:
11931212
curr_future.cancel()
11941213
continue
11951214
print(f"{curr_test_number_in_any_loop:04d}. {curr_tt}::{file} ", end='', flush=True)
1196-
result, error_msg = curr_future.result()
1215+
result, error_msg, error_details = curr_future.result()
11971216
if result == 1:
11981217
success_tests = success_tests + 1
11991218
if config.verbose_level:
@@ -1219,7 +1238,7 @@ def main(argv) -> int:
12191238
"transport_type": curr_transport_type,
12201239
"test_name": curr_json_test_full_name,
12211240
"result": "FAILED",
1222-
"error_message": error_msg
1241+
"error_message": error_details if error_details else error_msg
12231242
})
12241243
if config.exit_on_fail:
12251244
cancel = True

0 commit comments

Comments
 (0)