def test_v1_sampled_lists(simple_metric):
    simple_metric.max_list_size = 10
    t = tags.Tags()

    for i in range(1, 20):
        simple_metric.add_network_stats(1, 1, 1, 1)
        simple_metric.add_network_connection("10.0.0.1", i, "a", i)
        simple_metric.add_network_connection("10.0.0.1", i, "a", i)
        simple_metric.add_listening_ports("TCP", [{"port": i}])
        simple_metric.add_listening_ports("UDP", [{"port": i}])

    report = simple_metric._v1_metrics()
    metric_block = report[t.metrics]

    assert len(metric_block[t.tcp_conn][t.established_connections][
        t.connections]) == 10

    assert metric_block[t.tcp_conn][t.established_connections][t.total] > len(
        metric_block[t.tcp_conn][t.established_connections])

    assert len(metric_block[t.listening_tcp_ports][t.ports]) == 10
    assert metric_block[t.listening_tcp_ports][t.total] > len(
        metric_block[t.listening_tcp_ports][t.ports])
    assert len(metric_block[t.listening_udp_ports][t.ports]) == 10
    assert metric_block[t.listening_udp_ports][t.total] > len(
        metric_block[t.listening_udp_ports][t.ports])
def test_v1_metrics_optional_elements(simple_metric):
    t = tags.Tags(short_names=False)
    report = simple_metric._v1_metrics()

    metric_block = report[t.metrics]
    # top-level element in metrics block
    assert t.interface_stats not in metric_block
    assert t.listening_tcp_ports in metric_block
    assert t.listening_udp_ports in metric_block
    assert t.tcp_conn in metric_block

    assert t.listening_udp_ports in report[t.metrics]

    simple_metric._interface_stats = {}
    simple_metric.listening_tcp_ports = []
    simple_metric.listening_udp_ports = []
    simple_metric._net_connections = []

    report = simple_metric._v1_metrics()
    metric_block = report[t.metrics]

    assert t.interface_stats not in metric_block
    assert t.listening_tcp_ports not in metric_block
    assert t.listening_udp_ports not in metric_block
    assert t.tcp_conn not in metric_block
def test_sampled_lists(simple_metric):
    t = tags.Tags()
    m = metrics.Metrics()
    m.max_list_size = 10

    for i in range(1, 20):
        m.add_network_connection("10.10.10." + str(i), i, "eth0", 99999)
        m.listening_udp_ports.append(i)
        m.listening_tcp_ports.append(i)

    report = m._v1_metrics()
    metric_block = report[t.metrics]
    assert len(metric_block[t.listening_tcp_ports][t.ports]) == 10
    assert len(metric_block[t.listening_udp_ports][t.ports]) == 10
    assert len(metric_block[t.tcp_conn][t.established_connections][
        t.connections]) == 10
Beispiel #4
0
def test_v1_metrics_basic_structure_short_names(simple_metric_short_names):
    t = tags.Tags(short_names=True)
    report = simple_metric_short_names._v1_metrics()

    # Overall Structure
    assert t.header in report
    assert t.metrics in report

    # header elements
    header_block = report[t.header]
    assert t.report_id in header_block
    assert t.version in header_block

    metric_block = report[t.metrics]
    # top-level element in metrics block
    assert t.interface_stats in metric_block
    assert t.listening_tcp_ports in metric_block
    assert t.listening_udp_ports in metric_block
    assert t.tcp_conn in metric_block
def test_v1_metrics_basic_structure_long_names(simple_metric):
    t = tags.Tags()
    report = simple_metric._v1_metrics()

    # overall structure
    assert t.header in report
    assert t.metrics in report
    assert t.custom_metrics in report

    # header elements
    header_block = report[t.header]
    assert t.report_id in header_block
    assert t.version in header_block

    metric_block = report[t.metrics]
    # top-level element in metrics block
    assert t.interface_stats not in metric_block
    assert t.listening_tcp_ports in metric_block
    assert t.listening_udp_ports in metric_block
    assert t.tcp_conn in metric_block

    # custom_metrics elements
    custom_metrics = report[t.custom_metrics]
    assert t.cpu_usage in custom_metrics
    def __init__(self, short_names=False, last_metric=None):
        """Initialize a new metrics object.

        Parameters
        ----------
        short_names : bool
                Toggle short object tags in output metrics.
        last_metric : Metrics object
                Metric object used for delta metric calculation.
        """
        self.t = tags.Tags(short_names)
        # Header Information
        self._timestamp = int(time.time())
        if last_metric is None:
            self.interval = 0
        else:
            self.interval = self._timestamp - last_metric._timestamp

        # Network Metrics
        self._net_connections = []
        self.listening_tcp_ports = []
        self.listening_udp_ports = []

        # Custom Metrics
        self.cpu_metrics = []

        # Network Stats By Interface
        self.total_counts = {}  # The raw values from the system
        self._interface_stats = {
        }  # The diff values, if delta metrics are used
        if last_metric is None:
            self._old_interface_stats = {}
        else:
            self._old_interface_stats = last_metric.total_counts

        self.max_list_size = 50