def get_result(self):
        metric_result = MetricResult()
        metric_result.name = self.name
        metric_result.started = self.started  # FIXME remove
        metric_result.finished = self.finished  # FIXME remove

        # check if user result is set
        if self.metric_result != None and not (self.metric_result.groundtruth_result == False\
            and self.metric_result.groundtruth_error_message == ""\
            and self.metric_result.groundtruth == 0.0\
            and self.metric_result.groundtruth_epsilon == 0.0):
            #print "groundtruth data is set from user within atf application for testblock %s. Skipping groundtruth evaluation from test_config"%self.testblock_name
            # use data from user result
            metric_result = self.metric_result
            return metric_result

        metric_result.data = None
        metric_result.groundtruth = self.groundtruth
        metric_result.groundtruth_epsilon = self.groundtruth_epsilon

        # assign default value
        metric_result.groundtruth_result = None
        metric_result.groundtruth_error_message = None

        if metric_result.started and metric_result.finished:  #  we check if the testblock was ever started and stopped
            # calculate metric data
            if self.metric_result == None:
                print "ERROR user result for testblock %s not set" % self.testblock_name
                metric_result.data = None
            else:
                metric_result.data = self.metric_result.data

            # fill details as KeyValue messages
            metric_result.details = self.metric_result.details

            # evaluate metric data
            if metric_result.data != None and metric_result.groundtruth != None and metric_result.groundtruth_epsilon != None:
                if math.fabs(metric_result.groundtruth -
                             metric_result.data.data
                             ) <= metric_result.groundtruth_epsilon:
                    metric_result.groundtruth_result = True
                    metric_result.groundtruth_error_message = "all OK"
                else:
                    metric_result.groundtruth_result = False
                    metric_result.groundtruth_error_message = "groundtruth missmatch: %f not within %f+-%f" % (
                        metric_result.data.data, metric_result.groundtruth,
                        metric_result.groundtruth_epsilon)

        if metric_result.data == None:
            metric_result.groundtruth_result = False
            metric_result.groundtruth_error_message = "no result"

        return metric_result
    def get_result(self):
        metric_result = MetricResult()
        metric_result.name = self.name
        metric_result.started = self.started  # FIXME remove
        metric_result.finished = self.finished  # FIXME remove
        metric_result.series = []
        metric_result.data = None
        metric_result.groundtruth = self.groundtruth
        metric_result.groundtruth_epsilon = self.groundtruth_epsilon

        # assign default value
        metric_result.groundtruth_result = None
        metric_result.groundtruth_error_message = None

        if metric_result.started and metric_result.finished:  #  we check if the testblock was ever started and stopped
            # calculate metric data
            if self.series_mode != None:
                metric_result.series = self.series
            metric_result.data = self.series[
                -1]  # take last element from self.series
            metric_result.min = metrics_helper.get_min(self.series)
            metric_result.max = metrics_helper.get_max(self.series)
            metric_result.mean = metrics_helper.get_mean(self.series)
            metric_result.std = metrics_helper.get_std(self.series)

            # fill details as KeyValue messages
            details = []
            details.append(KeyValue("root_frame", self.root_frame))
            details.append(KeyValue("measured_frame", self.measured_frame))
            metric_result.details = details

            # evaluate metric data
            if metric_result.data != None and metric_result.groundtruth != None and metric_result.groundtruth_epsilon != None:
                if math.fabs(metric_result.groundtruth -
                             metric_result.data.data
                             ) <= metric_result.groundtruth_epsilon:
                    metric_result.groundtruth_result = True
                    metric_result.groundtruth_error_message = "all OK"
                else:
                    metric_result.groundtruth_result = False
                    metric_result.groundtruth_error_message = "groundtruth missmatch: %f not within %f+-%f" % (
                        metric_result.data.data, metric_result.groundtruth,
                        metric_result.groundtruth_epsilon)

        if metric_result.data == None:
            metric_result.groundtruth_result = False
            metric_result.groundtruth_error_message = "no result"

        return metric_result
Beispiel #3
0
    def get_result(self):
        interface_data, interface_details = self.calculate_data_and_details()
        groundtruth_result = None  # interface metric not usable without groundtruth
        groundtruth = 100  # this is the max score
        groundtruth_epsilon = 0  # no deviation from max score allowed

        metric_result = MetricResult()
        metric_result.name = "interface"
        metric_result.started = self.started  # FIXME remove
        metric_result.finished = self.finished  # FIXME remove
        metric_result.data = None
        metric_result.groundtruth = self.groundtruth
        metric_result.groundtruth_epsilon = self.groundtruth_epsilon

        # assign default value
        metric_result.groundtruth_result = None
        metric_result.groundtruth_error_message = None

        if metric_result.started and metric_result.finished:  #  we check if the testblock was ever started and stopped
            # calculate metric data
            metric_result.data = interface_data

            # fill details as KeyValue messages
            details = []
            details.append(KeyValue("api_status", interface_details))
            metric_result.details = details

            # evaluate metric data
            if metric_result.data != None and metric_result.groundtruth != None and metric_result.groundtruth_epsilon != None:
                if math.fabs(metric_result.groundtruth - metric_result.data
                             ) <= metric_result.groundtruth_epsilon:
                    metric_result.groundtruth_result = True
                    metric_result.groundtruth_error_message = "all OK"
                else:
                    metric_result.groundtruth_result = False
                    metric_result.groundtruth_error_message = "groundtruth missmatch: %f not within %f+-%f" % (
                        metric_result.data, metric_result.groundtruth,
                        metric_result.groundtruth_epsilon)
                    #print metric_result.groundtruth_error_message

        if metric_result.data == None:
            metric_result.groundtruth_result = False
            metric_result.groundtruth_error_message = "no result"

        #print "\nmetric_result:\n", metric_result
        return metric_result
Beispiel #4
0
    def get_result(self):
        metric_result = MetricResult()
        metric_result.name = "publish_rate"
        metric_result.started = self.started  # FIXME remove
        metric_result.finished = self.finished  # FIXME remove
        metric_result.data = None
        metric_result.groundtruth = self.groundtruth
        metric_result.groundtruth_epsilon = self.groundtruth_epsilon

        # assign default value
        metric_result.groundtruth_result = None
        metric_result.groundtruth_error_message = None

        if metric_result.started and metric_result.finished:  #  we check if the testblock was ever started and stopped
            # calculate metric data
            metric_result.data = round(
                self.counter / (self.stop_time - self.start_time).to_sec(), 3)

            # fill details as KeyValue messages
            details = []
            details.append(KeyValue("topic", self.topic))
            metric_result.details = details

            # evaluate metric data
            if metric_result.data != None and metric_result.groundtruth != None and metric_result.groundtruth_epsilon != None:
                if math.fabs(metric_result.groundtruth - metric_result.data
                             ) <= metric_result.groundtruth_epsilon:
                    metric_result.groundtruth_result = True
                    metric_result.groundtruth_error_message = "all OK"
                else:
                    metric_result.groundtruth_result = False
                    metric_result.groundtruth_error_message = "groundtruth missmatch: %f not within %f+-%f" % (
                        metric_result.data, metric_result.groundtruth,
                        metric_result.groundtruth_epsilon)
                    #print metric_result.groundtruth_error_message

        if metric_result.data == None:
            metric_result.groundtruth_result = False
            metric_result.groundtruth_error_message = "no result"

        #print "\nmetric_result:\n", metric_result
        return metric_result