示例#1
0
    def pt_add_test(self, job, job_n, test_obj):
        if not test_obj.avg_score:
            return

        self.data.append((job.product_ver if job.product_ver is not None else '?', pt_float2human(test_obj.avg_score)))
        if not self.title or test_obj.less_better != self.less_better:
            self.title = test_obj.metrics + " " + ("[lower is better]" if test_obj.less_better else "[bigger is better]")
            self.less_better = test_obj.less_better
    def table_row(self):
        if not len(self.tests):
            return []
        t = self.tests
        ret = ['', self.id, self.seq_num, self.title]
        for n in range(0, len(t)):
            if t[n]:
                ret.append(pt_float2human(t[n].avg_score))
                ret.append(
                    int(round(100 * t[n].avg_dev /
                              t[n].avg_score, 0)) if t[n].avg_score else 0)
                ret.append(test_errors2str(t[n]))
            else:
                ret.append("-")
                ret.append("-")
                ret.append("")

            for prev in range(0, n):
                if t[prev] is None or t[n] is None:
                    ret.append("- 0")
                    continue
                if not t[n].avg_score or not t[prev].avg_score:
                    d = 0
                elif t[prev].avg_score < t[n].avg_score:
                    d = 100 * (t[n].avg_score / t[prev].avg_score - 1)
                elif t[prev].avg_score > t[n].avg_score:
                    d = -100 * (t[prev].avg_score / t[n].avg_score - 1)
                else:
                    d = 0

                diff = 0
                try:
                    s = stats.ttest_ind_from_stats(t[prev].avg_score,
                                                   t[prev].avg_dev,
                                                   t[prev].samples,
                                                   t[n].avg_score,
                                                   t[n].avg_dev, t[n].samples)
                    if s[1] < 0.1:
                        diff = 1
                except ZeroDivisionError:
                    diff = 1

                if diff:
                    if t[prev].avg_score < t[n].avg_score:
                        diff = (-1 if t[prev].less_better else 1)
                    elif t[prev].avg_score > t[n].avg_score:
                        diff = (1 if t[prev].less_better else -1)
                    elif t[prev].avg_score == t[n].avg_score:
                        diff = 0
                ret.append(str(int(round(d, 0))) + " " + str(diff))

        return ret
示例#3
0
    def _init_scores(self):
        if self._scores:
            return

        self._scores = [None] * len(self.sect.x_axis_categories)
        self._errors = [None] * len(self.sect.x_axis_categories)
        maxi = 0
        for t in self.tests:
            if t.category not in self.sect.test_cat_to_axis_cat_seqnum:
                print("WARNING: test category '%s' is not found in %s" % (t.category, str(self.sect.test_cat_to_axis_cat_seqnum)))
                continue
            i = self.sect.test_cat_to_axis_cat_seqnum[t.category]
            maxi = max(maxi, i)
            self._scores[i] = pt_float2human(t.avg_score)
            self._errors[i] = t.errors or ((t.loops or "all") if t.status == 'FAILED' else 0)
        self._scores = self._scores[:maxi + 1]
        self._errors = self._errors[:maxi + 1]
示例#4
0
 def ptAddTest(self, job, job_n, test_obj):
     self.series.append(pt_float2human(test_obj.avg_score))