From 2a98419b7382a2a2e48187bab3407a2a057ec79c Mon Sep 17 00:00:00 2001 From: Igor Stoppa Date: Tue, 13 Jan 2015 15:54:39 +0200 Subject: [PATCH] Improve Error handling. In case some of the expected parameters is missing, survive and report it. Change-Id: I608947b2a387735911544cf6aa49d96ea74434f9 --- job_test_build.py | 59 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/job_test_build.py b/job_test_build.py index a80d42e..7315f32 100755 --- a/job_test_build.py +++ b/job_test_build.py @@ -128,6 +128,20 @@ def image_supported(image): return False return True +def propagate_results(fields, image): + """Store results to file and trigger publishing job.""" + with open("Results.ENV", "w") as results: + results.write("TEST_RESULT=" + fields["test_result"] + "\n") + results.write("IMAGE=" + image + "\n") + + results_folder = glob.glob("tztestrobot_results.*") + if results_folder != []: + results_folder = results_folder[0] + else: + results_folder = create_empty_results() + pack_results(results_folder) + fields["test_details"] = get_test_dict(results_folder + "/results.xml") + trigger_next("RESULTS-PUBLISHING", fields) def main(): """The main body""" @@ -137,36 +151,35 @@ def main(): logging.basicConfig(filename='tester.log', level=logging.DEBUG) fields = trigger_info(os.getenv("TRIGGER_INFO")) -# for key in fields.keys(): -# logging.info("Fields: {0} -> {1}".format(key, fields[key])) - file_name = ET.fromstring(fields["image_xml"])\ - .find("storage").find("disk").get("file") - logging.info("Image to test: {0}".format(file_name)) + + try: + file_name = ET.fromstring(fields["image_xml"])\ + .find("storage").find("disk").get("file") + logging.info("Image to test: {0}".format(file_name)) + except AttributeError as e: + logging.error("Error: {0}".format(e)) + fields["test_result"] = "PARAMETERS_ERRORS" + propagate_results(image="", fields=fields); + return; if not image_supported(file_name): logging.info("Image not supported by the tester.") - image = "" fields["test_result"] = "IMAGE_NOT_SUPPORTED" - else: - image = fetch_image(fields["url"]) - if image == "": - fields["test_result"] = "IMAGE_NOT_FOUND" - else: - fields["test_result"] = test_image(image) + propagate_results(image="", fields=fields) + return + + image = fetch_image(fields["url"]) + if image == "": + fields["test_result"] = "IMAGE_NOT_FOUND" + propagate_results(image="", fields=fields) + return + + fields["test_result"] = test_image(image) + propagate_results(image=image, fields=fields) + return - with open("Results.ENV", "w") as results: - results.write("TEST_RESULT=" + fields["test_result"] + "\n") - results.write("IMAGE=" + image + "\n") - results_folder = glob.glob("tztestrobot_results.*") - if results_folder != []: - results_folder = results_folder[0] - else: - results_folder = create_empty_results() - pack_results(results_folder) - fields["test_details"] = get_test_dict(results_folder + "/results.xml") - trigger_next("RESULTS-PUBLISHING", fields) if __name__ == "__main__": sys.exit(main()) -- 2.7.4