Example #1
0
 def createXMLNode(self, doc, tc):
     t = doc.createElement("test")
     tn = doc.createElement("name")
     t.appendChild(tn)
     n = doc.createTextNode(str(tc.basename))
     tn.appendChild(n)
     ts = doc.createElement("state")
     t.appendChild(ts)
     tst = doc.createTextNode(str(xenrt.resultDisplay(self.overall)))
     ts.appendChild(tst)
     for reason in self.reasons:
         tr = doc.createElement("reason")
         t.appendChild(tr)
         trt = doc.createTextNode(str(reason))
         tr.appendChild(trt)
     for perf in self.perfdata:
         p, v, u = perf
         tr = doc.createElement("value")
         tr.setAttribute("param", str(p))
         if u:
             tr.setAttribute("units", str(u))
         t.appendChild(tr)
         trt = doc.createTextNode(str(v))
         tr.appendChild(trt)
     for gn in self.groupsOrder:
         g = self.groups[gn]
         gnode = g.createXMLNode(doc)
         t.appendChild(gnode)
     return t
Example #2
0
    def byPriority(self, countblocked=True, counterror=False, afispass=True,
                   debugfd=None):
        """Summarise results by test priority. Returns a list of pass
        rates by priority [P1, P2, ...]

        @param countblocked: if C{True} causes blocked tests to be counted as
            failures.
        @param counterror: if C{True} causes blocked tests to be counted as
            failures.
        @param afispass: if C{True} causes allowed failures to be counted
            as passes (otherwise they get ignored)
        """
        tests = []
        passes = []
        maxp = 0
        for r in self.gather():
            # For some reason we're leaking None priorities
            if r[5] == None:
                r[5] = 1

            # Extend counter arrays for this priority level
            if r[5] >= maxp:
                for i in range(1 + r[5] - maxp):
                    tests.append(0)
                    passes.append(0)
                maxp = r[5]

            # Increment counters
            if r[4] == xenrt.RESULT_PASS or r[4] == xenrt.RESULT_PARTIAL:
                tests[r[5]] = tests[r[5]] + 1
                passes[r[5]] = passes[r[5]] + 1
            elif r[4] == xenrt.RESULT_FAIL:
                tests[r[5]] = tests[r[5]] + 1
            elif r[4] == xenrt.RESULT_ERROR and counterror:
                tests[r[5]] = tests[r[5]] + 1
            elif r[4] == xenrt.RESULT_NOTRUN and countblocked:
                tests[r[5]] = tests[r[5]] + 1
            elif r[4] == xenrt.RESULT_ALLOWED and afispass:
                tests[r[5]] = tests[r[5]] + 1
                passes[r[5]] = passes[r[5]] + 1
            # Print per-test summary
            if debugfd:
                d = []
                for x in r[0:4]:
                    if x:
                        d.append(x)
                debugfd.write("%-40s P%u %s\n" % (string.join(d, "/"),
                                                  r[5],
                                                  xenrt.resultDisplay(r[4])))
        reply = []
        for i in range(len(tests)):
            if i == 0:
                continue
            if tests[i] > 0:
                r = 100.0 * float(passes[i])/tests[i]
                #print "P%u %5u/%5u %5.1f" % (i, passes[i], tests[i], r)
                reply.append(r)
            else:
                reply.append(None)
        return reply
Example #3
0
 def aggregate(self, topgroup, toptest):
     """Declare the test outcome based on testcase results."""
     passed = True
     errored = False
     counters = []
     for i in range(len(xenrt.RESULTS)):
         counters.append(0)
     for gn in self.groupsOrder:
         g = self.groups[gn]
         r = g.aggregate(counters, topgroup, toptest, self)
         if r != xenrt.RESULT_PASS:
             passed = False
             if r == xenrt.RESULT_ERROR:
                 errored = True
     # If we've previously set an outcome then we don't change it now
     if self.overall == xenrt.RESULT_UNKNOWN:
         if passed:
             self.overall = xenrt.RESULT_PASS
         elif errored:
             self.overall = xenrt.RESULT_ERROR
         else:
             self.overall = xenrt.RESULT_FAIL
     # A failure/error should override a partial result
     elif self.overall == xenrt.RESULT_PARTIAL and not passed:
         if errored:
             self.overall = xenrt.RESULT_ERROR
         else:
             self.overall = xenrt.RESULT_FAIL
     # Check if the entire test is allowed to pass
     for i in range(len(xenrt.RESULTS)):
         xenrt.TEC().comment("Testcases %s %u" % (xenrt.resultDisplay(i),
                                                  counters[i]))
Example #4
0
 def createXMLNode(self, doc):
     t = doc.createElement("test")
     tn = doc.createElement("name")
     t.appendChild(tn)
     n = doc.createTextNode(str(self.name))
     tn.appendChild(n)
     ts = doc.createElement("state")
     t.appendChild(ts)
     tst = doc.createTextNode(str(xenrt.resultDisplay(self.result)))
     ts.appendChild(tst)
     if self.result == xenrt.RESULT_FAIL and self.allowed:
         ts = doc.createElement("allowed")
         t.appendChild(ts)
         tst = doc.createTextNode("yes")
         ts.appendChild(tst)
     if self.log:
         tl = doc.createElement("log")
         t.appendChild(tl)
         tlt = doc.createTextNode(str(self.log))
         tl.appendChild(tlt)
     for reason in self.reasons:
         tr = doc.createElement("reason")
         t.appendChild(tr)
         trt = doc.createTextNode(str(reason))
         tr.appendChild(trt)
     return t
Example #5
0
    def summary(self, fd, topgroup, toptest):
        notes = []
        if self.result == xenrt.RESULT_FAIL:
            if self.allowed:
                notes.append("allowed")
        n = "%s/%s" % (self.group.name, self.name)
        if self.priority == None:
            p = "  "
        else:
            p = "P%u" % (self.priority)
        fd.write("  %-28s %s %s %s\n" % (n,
			       		xenrt.resultDisplay(self.result),
			     		p,
			   		string.join(notes)))
Example #6
0
 def summary(self, fd, topgroup, toptest):
     notes = []
     if self.overall == xenrt.RESULT_FAIL:
         if self.allowed:
             notes.append("allowed")
     if topgroup == '':
         n = toptest
     else:
         n = "%s/%s" % (topgroup, toptest)
     fd.write("%-30s %s P%u %s\n" % (n,
                                     xenrt.resultDisplay(self.overall),
                                     self.priority,
                                     string.join(notes)))
     for gn in self.groupsOrder:
         g = self.groups[gn]
         g.summary(fd, topgroup, toptest)
Example #7
0
 def debugPrint(self, fd):
     fd.write("    Test %-30s %s\n" %
              (self.name, xenrt.resultDisplay(self.result)))
Example #8
0
 def debugPrint(self, fd):
     fd.write("    Test %-30s %s\n" %
              (self.name, xenrt.resultDisplay(self.result)))