Add exception processing to output.xml parser 47/4947/1
authorTibor Frank <tifrank@cisco.com>
Mon, 30 Jan 2017 15:49:30 +0000 (16:49 +0100)
committerTibor Frank <tifrank@cisco.com>
Mon, 30 Jan 2017 15:49:30 +0000 (16:49 +0100)
Change-Id: Ie7d7a004ae540233efcb3c3114d46d40d5d1f07d
Signed-off-by: Tibor Frank <tifrank@cisco.com>
bootstrap-verify-perf-DPDK.sh
resources/tools/robot_output_parser.py

index 957ac46..4ad3824 100755 (executable)
@@ -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
index 171a66f..b9ad8f8 100755 (executable)
@@ -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()

©2016 FD.io a Linux Foundation Collaborative Project. All Rights Reserved.
Linux Foundation is a registered trademark of The Linux Foundation. Linux is a registered trademark of Linus Torvalds.
Please see our privacy policy and terms of use.