testlog_parser updated to handle output of latest GTest as well
authorVitaly Tuzov <terfendail@mediana.jetos.com>
Fri, 14 Sep 2018 14:29:06 +0000 (17:29 +0300)
committerVitaly Tuzov <terfendail@mediana.jetos.com>
Fri, 14 Sep 2018 14:29:06 +0000 (17:29 +0300)
modules/ts/misc/testlog_parser.py

index f523072..5f44140 100755 (executable)
@@ -33,6 +33,11 @@ class TestInfo(object):
             self.status = "disabled"
             self.fixture = self.fixture.replace("DISABLED_", "")
             self.name = self.name.replace("DISABLED_", "")
+        self.properties = {
+            prop.getAttribute("name") : prop.getAttribute("value")
+            for prop in xmlnode.getElementsByTagName("property")
+            if prop.hasAttribute("name") and prop.hasAttribute("value")
+        }
         self.metrix = {}
         self.parseLongMetric(xmlnode, "bytesIn");
         self.parseLongMetric(xmlnode, "bytesOut");
@@ -48,33 +53,34 @@ class TestInfo(object):
         self.parseFloatMetric(xmlnode, "time");
 
     def parseLongMetric(self, xmlnode, name, default = 0):
-        if xmlnode.hasAttribute(name):
-            tmp = xmlnode.getAttribute(name)
-            val = long(tmp)
-            self.metrix[name] = val
+        if name in self.properties:
+            self.metrix[name] = long(self.properties[name])
+        elif xmlnode.hasAttribute(name):
+            self.metrix[name] = long(xmlnode.getAttribute(name))
         else:
             self.metrix[name] = default
 
     def parseIntMetric(self, xmlnode, name, default = 0):
-        if xmlnode.hasAttribute(name):
-            tmp = xmlnode.getAttribute(name)
-            val = int(tmp)
-            self.metrix[name] = val
+        if name in self.properties:
+            self.metrix[name] = int(self.properties[name])
+        elif xmlnode.hasAttribute(name):
+            self.metrix[name] = int(xmlnode.getAttribute(name))
         else:
             self.metrix[name] = default
 
     def parseFloatMetric(self, xmlnode, name, default = 0):
-        if xmlnode.hasAttribute(name):
-            tmp = xmlnode.getAttribute(name)
-            val = float(tmp)
-            self.metrix[name] = val
+        if name in self.properties:
+            self.metrix[name] = float(self.properties[name])
+        elif xmlnode.hasAttribute(name):
+            self.metrix[name] = float(xmlnode.getAttribute(name))
         else:
             self.metrix[name] = default
 
     def parseStringMetric(self, xmlnode, name, default = None):
-        if xmlnode.hasAttribute(name):
-            tmp = xmlnode.getAttribute(name)
-            self.metrix[name] = tmp.strip()
+        if name in self.properties:
+            self.metrix[name] = self.properties[name].strip()
+        elif xmlnode.hasAttribute(name):
+            self.metrix[name] = xmlnode.getAttribute(name).strip()
         else:
             self.metrix[name] = default