From eded11cf0fa2149bd6018d510f12fbfcc0ca6c5b Mon Sep 17 00:00:00 2001 From: Jakub Kudzia Date: Fri, 11 Mar 2016 12:06:56 +0100 Subject: [PATCH 1/4] VFS-1753 return code 0 from tests if test weren't skipped --- docker/ct_run.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docker/ct_run.py b/docker/ct_run.py index 2dd7042c6ef..11c17cc42cb 100755 --- a/docker/ct_run.py +++ b/docker/ct_run.py @@ -24,6 +24,19 @@ import shutil import sys import time +import xml.etree.ElementTree as ElementTree + + +def tests_were_skipped(): + xmls = glob.glob("test_distributed/logs/*/surefire.xml") + xmls.sort() + tree = ElementTree.parse(xmls[-1]) + testsuites = tree.getroot() + for testsuite in testsuites: + if testsuite.attrib['skipped'] != '0': + return True + return False + sys.path.insert(0, 'bamboos/docker') from environment import docker @@ -251,4 +264,8 @@ os.remove(file) shutil.move(file + '.bak', file) +if ret != 0 and not tests_were_skipped(): + ret = 0 + + sys.exit(ret) From d23bb81091ad908e005256320c0020f88acc5e2d Mon Sep 17 00:00:00 2001 From: Jakub Kudzia Date: Mon, 14 Mar 2016 12:19:17 +0100 Subject: [PATCH 2/4] VFS-1753 checking if tests were skipped in test_run.py --- docker/ct_run.py | 14 ++++++++------ docker/test_run.py | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docker/ct_run.py b/docker/ct_run.py index 11c17cc42cb..fb7196635ec 100755 --- a/docker/ct_run.py +++ b/docker/ct_run.py @@ -26,9 +26,11 @@ import time import xml.etree.ElementTree as ElementTree +SUREFIRE_REPORT = "surefire.xml" -def tests_were_skipped(): - xmls = glob.glob("test_distributed/logs/*/surefire.xml") + +def skipped_test_exists(): + xmls = glob.glob("test_distributed/logs/*/{0}".format(SUREFIRE_REPORT)) xmls.sort() tree = ElementTree.parse(xmls[-1]) testsuites = tree.getroot() @@ -139,7 +141,7 @@ def tests_were_skipped(): '-abort_if_missing_suites', '-dir', '.', '-logdir', './logs/', - '-ct_hooks', 'cth_surefire', '[{path, "surefire.xml"}]', + '-ct_hooks', 'cth_surefire', '[{{path, {surefire_report}}}]'.format(surefire_report=SUREFIRE_REPORT), '-noshell', '-name', 'testmaster@testmaster.{0}.dev.docker'.format(uid), '-include', '../include', '../deps'] @@ -230,7 +232,7 @@ def tests_were_skipped(): ret = subprocess.call(command) import xml.etree.ElementTree as ElementTree, glob, re -for file in glob.glob('logs/*/surefire.xml'): +for file in glob.glob('logs/*/{surefire_report}'): tree = ElementTree.parse(file) for suite in tree.findall('.//testsuite'): for test in suite.findall('testcase'): @@ -242,6 +244,7 @@ def tests_were_skipped(): sys.exit(ret) ''' command = command.format( + surefire_report=SUREFIRE_REPORT, uid=os.geteuid(), gid=os.getegid(), cmd=ct_command, @@ -264,8 +267,7 @@ def tests_were_skipped(): os.remove(file) shutil.move(file + '.bak', file) -if ret != 0 and not tests_were_skipped(): +if ret != 0 and not skipped_test_exists(): ret = 0 - sys.exit(ret) diff --git a/docker/test_run.py b/docker/test_run.py index b8b9d7fad9d..4819be558fe 100755 --- a/docker/test_run.py +++ b/docker/test_run.py @@ -11,11 +11,23 @@ import os import platform import sys +import glob from environment import docker script_dir = os.path.dirname(os.path.abspath(__file__)) + +def skipped_test_exists(report_path): + xml = glob.glob(os.path.join(script_dir, report_path))[0] + tree = ElementTree.parse(xml) + testsuites = tree.getroot() + for testsuite in testsuites: + if testsuite.attrib['skipped'] != '0': + return True + return False + + parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, description='Run Common Tests.') @@ -74,4 +86,8 @@ ('/var/run/docker.sock', 'rw')], image=args.image, command=['python', '-c', command]) + +if ret != 0 and not skipped_test_exists(): + ret = 0 + sys.exit(ret) From 3d372e0df02d08888de0c4b81dc1afb881219fe3 Mon Sep 17 00:00:00 2001 From: Jakub Kudzia Date: Mon, 14 Mar 2016 15:16:40 +0100 Subject: [PATCH 3/4] VFS-1753 fix problems with xml report name --- docker/ct_run.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docker/ct_run.py b/docker/ct_run.py index fb7196635ec..c4f3b2356b4 100755 --- a/docker/ct_run.py +++ b/docker/ct_run.py @@ -26,11 +26,9 @@ import time import xml.etree.ElementTree as ElementTree -SUREFIRE_REPORT = "surefire.xml" - def skipped_test_exists(): - xmls = glob.glob("test_distributed/logs/*/{0}".format(SUREFIRE_REPORT)) + xmls = glob.glob("test_distributed/logs/*/surefire.xml") xmls.sort() tree = ElementTree.parse(xmls[-1]) testsuites = tree.getroot() @@ -141,7 +139,7 @@ def skipped_test_exists(): '-abort_if_missing_suites', '-dir', '.', '-logdir', './logs/', - '-ct_hooks', 'cth_surefire', '[{{path, {surefire_report}}}]'.format(surefire_report=SUREFIRE_REPORT), + '-ct_hooks', 'cth_surefire', '[{path, "surefire.xml"}]', '-noshell', '-name', 'testmaster@testmaster.{0}.dev.docker'.format(uid), '-include', '../include', '../deps'] @@ -232,7 +230,7 @@ def skipped_test_exists(): ret = subprocess.call(command) import xml.etree.ElementTree as ElementTree, glob, re -for file in glob.glob('logs/*/{surefire_report}'): +for file in glob.glob('logs/*/surefire.xml'): tree = ElementTree.parse(file) for suite in tree.findall('.//testsuite'): for test in suite.findall('testcase'): @@ -244,7 +242,6 @@ def skipped_test_exists(): sys.exit(ret) ''' command = command.format( - surefire_report=SUREFIRE_REPORT, uid=os.geteuid(), gid=os.getegid(), cmd=ct_command, From 673f5fad04d12da2441217737e5eda906c96266c Mon Sep 17 00:00:00 2001 From: Jakub Kudzia Date: Tue, 15 Mar 2016 12:33:05 +0100 Subject: [PATCH 4/4] VFS-1753 move functions checking is tests were skipped to separate modules --- docker/ct_run.py | 17 +++-------------- docker/test_run.py | 15 ++------------- docker/test_run_utils.py | 21 +++++++++++++++++++++ 3 files changed, 26 insertions(+), 27 deletions(-) create mode 100644 docker/test_run_utils.py diff --git a/docker/ct_run.py b/docker/ct_run.py index c4f3b2356b4..ed2ed0d8294 100755 --- a/docker/ct_run.py +++ b/docker/ct_run.py @@ -24,23 +24,12 @@ import shutil import sys import time -import xml.etree.ElementTree as ElementTree - - -def skipped_test_exists(): - xmls = glob.glob("test_distributed/logs/*/surefire.xml") - xmls.sort() - tree = ElementTree.parse(xmls[-1]) - testsuites = tree.getroot() - for testsuite in testsuites: - if testsuite.attrib['skipped'] != '0': - return True - return False - +from test_run_utils import skipped_test_exists sys.path.insert(0, 'bamboos/docker') from environment import docker + parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, description='Run Common Tests.') @@ -264,7 +253,7 @@ def skipped_test_exists(): os.remove(file) shutil.move(file + '.bak', file) -if ret != 0 and not skipped_test_exists(): +if ret != 0 and not skipped_test_exists("test_distributed/logs/*/surefire.xml"): ret = 0 sys.exit(ret) diff --git a/docker/test_run.py b/docker/test_run.py index 4819be558fe..b50f6df47ac 100755 --- a/docker/test_run.py +++ b/docker/test_run.py @@ -11,23 +11,12 @@ import os import platform import sys -import glob - +from test_run_utils import skipped_test_exists from environment import docker script_dir = os.path.dirname(os.path.abspath(__file__)) -def skipped_test_exists(report_path): - xml = glob.glob(os.path.join(script_dir, report_path))[0] - tree = ElementTree.parse(xml) - testsuites = tree.getroot() - for testsuite in testsuites: - if testsuite.attrib['skipped'] != '0': - return True - return False - - parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, description='Run Common Tests.') @@ -87,7 +76,7 @@ def skipped_test_exists(report_path): image=args.image, command=['python', '-c', command]) -if ret != 0 and not skipped_test_exists(): +if ret != 0 and not skipped_test_exists(args.report_path): ret = 0 sys.exit(ret) diff --git a/docker/test_run_utils.py b/docker/test_run_utils.py new file mode 100644 index 00000000000..363a40794fb --- /dev/null +++ b/docker/test_run_utils.py @@ -0,0 +1,21 @@ +"""Author: Jakub Kudzia +Copyright (C) 2015 ACK CYFRONET AGH +This software is released under the MIT license cited in 'LICENSE.txt' + +This module contains util functions used in ct_run.py and test_run.py +""" + +import glob +import xml.etree.ElementTree as ElementTree + + +def skipped_test_exists(junit_report_path): + reports = glob.glob(junit_report_path) + # if there are many reports, check only the last one + reports.sort() + tree = ElementTree.parse(reports[-1]) + testsuites = tree.getroot() + for testsuite in testsuites: + if testsuite.attrib['skipped'] != '0': + return True + return False \ No newline at end of file