Ejemplo n.º 1
0
    def test_get_physical_node_from_server(self, mock_get_ctx):
        ctx_obj = DummyContextClass()
        self.addCleanup(self._remove_ctx, ctx_obj)

        mock_get_ctx.return_value = ctx_obj

        result = Context.get_physical_node_from_server("mock_server")

        mock_get_ctx.assert_called_once()
        self.assertIsNone(result)
Ejemplo n.º 2
0
    def collect_kpi(self):
        # check if the tg processes have exited
        physical_node = Context.get_physical_node_from_server(
            self.scenario_helper.nodes[self.name])

        result = {"physical_node": physical_node}
        for proc in (self._tg_process, self._traffic_process):
            check_if_process_failed(proc)

        result["collect_stats"] = self.resource_helper.collect_kpi()
        LOG.debug("%s collect KPIs %s", self.APP_NAME, result)
        return result
Ejemplo n.º 3
0
    def collect_kpi(self):
        # we can't get KPIs if the VNF is down
        check_if_process_failed(self._vnf_process, 0.01)
        stats = self.get_stats()
        m = re.search(self.COLLECT_KPI, stats, re.MULTILINE)
        physical_node = Context.get_physical_node_from_server(
            self.scenario_helper.nodes[self.name])

        result = {"physical_node": physical_node}
        if m:
            result.update({k: int(m.group(v)) for k, v in self.COLLECT_MAP.items()})
            result["collect_stats"] = self.resource_helper.collect_kpi()
        else:
            result.update({"packets_in": 0,
                           "packets_fwd": 0,
                           "packets_dropped": 0})

        LOG.debug("%s collect KPIs %s", self.APP_NAME, result)
        return result
Ejemplo n.º 4
0
    def collect_kpi(self):
        # Implement stats collection
        ip_link_stats = '/sbin/ip -s link'
        stdout = self.ssh_helper.execute(ip_link_stats)[1]
        link_stats = self.get_stats(stdout)
        # get RX/TX from link_stats and assign to results
        physical_node = Context.get_physical_node_from_server(
            self.scenario_helper.nodes[self.name])

        result = {
            "physical_node": physical_node,
            "packets_in": 0,
            "packets_dropped": 0,
            "packets_fwd": 0,
            "link_stats": link_stats
        }

        LOG.debug("%s collect KPIs %s", "RouterVNF", result)
        return result
Ejemplo n.º 5
0
    def collect_kpi(self):
        # check if the tg processes have exited
        physical_node = Context.get_physical_node_from_server(
            self.scenario_helper.nodes[self.name])

        result = {"physical_node": physical_node}
        for proc in (self._tg_process, self._traffic_process):
            check_if_process_failed(proc)

        if self.resource_helper is None:
            return result

        if self.irq_cores is None:
            self.setup_helper.build_config_file()
            self.irq_cores = self.get_irq_cores()

        data = self.resource_helper.sut.irq_core_stats(self.irq_cores)
        new_data = copy.deepcopy(data)

        self.end_test_time = time.time()
        self.resource_helper.sut.reset_stats()

        if self.start_test_time is None:
            new_data = {}
        else:
            test_time = self.end_test_time - self.start_test_time
            for index, item in data.items():
                for counter, value in item.items():
                    if counter.startswith("bucket_") or \
                            counter.startswith("overflow"):
                        if value is 0:
                            del new_data[index][counter]
                        else:
                            new_data[index][counter] = float(value) / test_time

        self.start_test_time = time.time()

        result["collect_stats"] = new_data
        LOG.debug("%s collect KPIs %s", self.APP_NAME, result)

        return result