From bfa305de45a6c9ef9a20b08b013699c2832a71ae Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Mon, 30 Jan 2017 16:49:30 +0100 Subject: [PATCH] Add exception processing to output.xml parser Change-Id: Ie7d7a004ae540233efcb3c3114d46d40d5d1f07d Signed-off-by: Tibor Frank --- bootstrap-verify-perf-DPDK.sh | 3 +- resources/tools/robot_output_parser.py | 63 ++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/bootstrap-verify-perf-DPDK.sh b/bootstrap-verify-perf-DPDK.sh index 957ac46d5c..4ad3824aba 100755 --- a/bootstrap-verify-perf-DPDK.sh +++ b/bootstrap-verify-perf-DPDK.sh @@ -122,8 +122,7 @@ echo Post-processing test data... python ${SCRIPT_DIR}/resources/tools/robot_output_parser.py \ -i ${SCRIPT_DIR}/output.xml \ - -o ${SCRIPT_DIR}/output_perf_data.xml \ - -v ${VPP_STABLE_VER} + -o ${SCRIPT_DIR}/output_perf_data.xml if [ ! $? -eq 0 ]; then echo "Parsing ${SCRIPT_DIR}/output.xml failed" fi diff --git a/resources/tools/robot_output_parser.py b/resources/tools/robot_output_parser.py index 171a66fab3..b9ad8f8aa9 100755 --- a/resources/tools/robot_output_parser.py +++ b/resources/tools/robot_output_parser.py @@ -14,7 +14,7 @@ # limitations under the License. """Script parses the data taken by robot framework (output.xml) and dumps -intereted values into XML output file.""" +interested values into XML output file.""" import argparse import re @@ -93,28 +93,44 @@ class ExecutionChecker(ResultVisitor): tags = [] for tag in test.tags: tags.append(tag) - test_elem = ET.SubElement(self.root, - "S"+test.parent.name.replace(" ", "")) + + test_elem = ET.SubElement( + self.root, "S" + test.parent.name.replace(" ", "")) test_elem.attrib['name'] = test.parent.name - test_elem.attrib['framesize'] = str(re.search(\ + test_elem.attrib['framesize'] = str(re.search( self.tc_regexp, test.name).group(1)) - test_elem.attrib['threads'] = str(re.search(\ + test_elem.attrib['threads'] = str(re.search( self.tc_regexp, test.name).group(3)) - test_elem.attrib['cores'] = str(re.search(\ + test_elem.attrib['cores'] = str(re.search( self.tc_regexp, test.name).group(4)) if any("NDRDISC" in tag for tag in test.tags): - test_elem.attrib['lat_100'] = str(re.search(\ - self.lat_regexp, test.message).group(1)) + '/' +\ - str(re.search(self.lat_regexp, test.message).group(2)) - test_elem.attrib['lat_50'] = str(re.search(\ - self.lat_regexp, test.message).group(3)) + '/' +\ - str(re.search(self.lat_regexp, test.message).group(4)) - test_elem.attrib['lat_10'] = str(re.search(\ - self.lat_regexp, test.message).group(5)) + '/' +\ - str(re.search(self.lat_regexp, test.message).group(6)) + try: + test_elem.attrib['lat_100'] = str(re.search( + self.lat_regexp, test.message).group(1)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(2)) + except AttributeError: + test_elem.attrib['lat_100'] = "-1/-1/-1/-1/-1/-1" + try: + test_elem.attrib['lat_50'] = str(re.search( + self.lat_regexp, test.message).group(3)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(4)) + except AttributeError: + test_elem.attrib['lat_50'] = "-1/-1/-1/-1/-1/-1" + try: + test_elem.attrib['lat_10'] = str(re.search( + self.lat_regexp, test.message).group(5)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(6)) + except AttributeError: + test_elem.attrib['lat_10'] = "-1/-1/-1/-1/-1/-1" test_elem.attrib['tags'] = ', '.join(tags) - test_elem.text = str(re.search(\ - self.rate_regexp, test.message).group(1)) + try: + test_elem.text = str(re.search( + self.rate_regexp, test.message).group(1)) + except AttributeError: + test_elem.text = "-1" def end_test(self, test): """Called when test ends. @@ -151,7 +167,7 @@ def print_error(msg): :return: nothing """ - sys.stderr.write(msg+'\n') + sys.stderr.write(msg + '\n') def parse_args(): @@ -162,13 +178,18 @@ def parse_args(): """ parser = argparse.ArgumentParser() - parser.add_argument("-i", "--input", required=True, + parser.add_argument("-i", "--input", + required=True, type=argparse.FileType('r'), help="Robot XML log file") - parser.add_argument("-o", "--output", required=True, + parser.add_argument("-o", "--output", + required=True, type=argparse.FileType('w'), help="XML output file") - parser.add_argument("-v", "--vdevice", required=True, + parser.add_argument("-v", "--vdevice", + required=False, + default="", + type=str, help="VPP version") return parser.parse_args() -- 2.16.6