def test_network_stats_delta_calculation(simple_metric):
    m1 = metrics.Metrics()
    m1.timestamp = 0
    m1.add_network_stats(bytes_in=100,
                         packets_in=50,
                         bytes_out=200,
                         packets_out=150)

    m2 = metrics.Metrics(last_metric=m1)
    m2.timestamp = 10
    m2.interval = 10
    m2.add_network_stats(bytes_in=125,
                         packets_in=75,
                         bytes_out=225,
                         packets_out=175)

    m3 = metrics.Metrics(last_metric=m2)
    m3.timestamp = 10
    m3.interval = 10
    m3.add_network_stats(bytes_in=150,
                         packets_in=100,
                         bytes_out=250,
                         packets_out=200)

    assert m2.network_stats["bytes_in"] == 25
    assert m2.network_stats["packets_in"] == 25
    assert m2.network_stats["bytes_out"] == 25
    assert m2.network_stats["packets_out"] == 25

    assert m3.network_stats["bytes_in"] == 25
    assert m3.network_stats["packets_in"] == 25
    assert m3.network_stats["bytes_out"] == 25
    assert m3.network_stats["packets_out"] == 25
    def collect_metrics(self):
        """Sample system metrics and populate a metrics object suitable for publishing to Device Defender."""
        metrics_current = metrics.Metrics(short_names=self._short_names,
                                          last_metric=self._last_metric)

        self.network_stats(metrics_current)
        self.listening_ports(metrics_current)
        self.network_connections(metrics_current)

        self._last_metric = metrics_current
        return metrics_current
def simple_metric():
    m = metrics.Metrics()

    m.add_network_stats(bytes_in=100,
                        packets_in=50,
                        bytes_out=200,
                        packets_out=150)
    m.add_network_connection("10.10.10.10", 80, "eth0", 9009)
    m.add_network_connection("11.11.11.11", 80, "eth0", 88888)
    m.add_network_connection("2001:0db8:85a3:0000:0000:8a2e:0370:7334", 80,
                             "eth0", 8080)
    m.add_cpu_usage(50.5)

    m.add_listening_ports(
        "UDP",
        [
            {
                "port": 999,
                "interface": "eth0"
            },
            {
                "port": 980,
                "interface": "wlan0"
            },
            {
                "port": 9032,
                "interface": "eth0"
            },
        ],
    )

    m.add_listening_ports(
        "TCP",
        [
            {
                "port": 80,
                "interface": "eth0"
            },
            {
                "port": 88,
                "interface": "wlan0"
            },
            {
                "port": 8000,
                "interface": "eth0"
            },
            {
                "port": 8000,
                "interface": "eth0"
            },
        ],
    )

    return m
Beispiel #4
0
def test_network_stats_delta_calculation(simple_metric):
    m1 = metrics.Metrics("FAKE_CLIENT_ID")
    m1.timestamp = 0
    m1.add_network_stats(bytes_in=100,
                         packets_in=50,
                         bytes_out=200,
                         packets_out=150)

    m2 = metrics.Metrics("FAKE_CLIENT_ID", last_metric=m1)
    m2.timestamp = 10
    m2.interval = 10
    m2.add_network_stats(bytes_in=125,
                         packets_in=75,
                         bytes_out=225,
                         packets_out=175)

    assert m2.network_stats['bytes_in'] == 25
    assert m2.network_stats['packets_in'] == 25
    assert m2.network_stats['bytes_out'] == 25
    assert m2.network_stats['packets_out'] == 25
def test_field_sizes():
    m = metrics.Metrics()

    m.add_network_stats(100, 50, 200, 150)
    m.add_network_connection("10.10.10.10", 80, "eth0", 99999)
    m.listening_tcp_ports += [80, 88, 8000, 43]
    m.listening_udp_ports += [999, 980, 9032]

    assert len(m._net_connections) == 1
    assert len(m.listening_tcp_ports) == 4
    assert len(m.listening_udp_ports) == 3
    assert len(m.network_stats) == 0
def simple_metric_short_names():
    m = metrics.Metrics(short_names=True)

    m.add_network_stats(bytes_in=100,
                        packets_in=50,
                        bytes_out=200,
                        packets_out=150)
    m.add_network_connection("10.10.10.10", 80, "eth0", 9009)
    m.add_network_connection("11.11.11.11", 80, "eth0", 88888)
    m.add_cpu_usage(50.5)

    m.add_listening_ports(
        "UDP",
        [
            {
                "port": 999,
                "interface": "eth0"
            },
            {
                "port": 980,
                "interface": "wlan0"
            },
            {
                "port": 9032,
                "interface": "eth0"
            },
        ],
    )

    m.add_listening_ports(
        "TCP",
        [
            {
                "port": 80,
                "interface": "eth0"
            },
            {
                "port": 88,
                "interface": "wlan0"
            },
            {
                "port": 8000,
                "interface": "eth0"
            },
            {
                "port": 8000,
                "interface": "eth0"
            },
        ],
    )

    return m
Beispiel #7
0
def simple_metric_short_names():
    m = metrics.Metrics(short_names=True, client_id="FAKE_CLIENT_ID")

    m.add_network_stats(bytes_in=100,
                        packets_in=50,
                        bytes_out=200,
                        packets_out=150)
    m.add_network_connection("10.10.10.10", 80)
    m.add_network_connection("11.11.11.11", 80)

    m.listening_tcp_ports += [80, 88, 8000, 43]
    m.listening_udp_ports += [999, 980, 9032]
    return m
Beispiel #8
0
def test_field_sizes():
    m = metrics.Metrics("FAKE_CLIENT_ID")

    m.add_network_stats(100, 50, 200, 150)
    m.add_network_connection("10.10.10.10", 80)
    m.listening_tcp_ports += [80, 88, 8000, 43]
    m.listening_udp_ports += [999, 980, 9032]

    assert len(m._net_connections) == 1
    assert len(m.listening_tcp_ports) == 4
    assert len(m.listening_udp_ports) == 3
    assert len(m.network_stats) == 4
    assert m.client_id == "FAKE_CLIENT_ID"
Beispiel #9
0
def test_sampled_lists(simple_metric):
    t = metrics.Tags()
    m = metrics.Metrics(client_id="FAKE_CLIENT_ID")
    m.max_list_size = 10

    for i in range(1, 20):
        m.add_network_connection("10.10.10.10", i)
        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.connections]) == 10
Beispiel #10
0
def test_sampled_lists(simple_metric):
    t = metrics.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 #11
0
def simple_metric_short_names():
    m = metrics.Metrics(short_names=True)

    m.add_network_stats(bytes_in=100, packets_in=50, bytes_out=200, packets_out=150)
    m.add_network_connection("10.10.10.10", 80, "eth0", 9009)
    m.add_network_connection("11.11.11.11", 80, "eth0", 88888)

    m.add_listening_ports("UDP", [{'port': 999, 'interface': 'eth0'},
                                  {'port': 980, 'interface': 'wlan0'},
                                  {'port': 9032, 'interface': 'eth0'}])

    m.add_listening_ports("TCP", [{'port': 80, 'interface': 'eth0'},
                                  {'port': 88, 'interface': 'wlan0'},
                                  {'port': 8000, 'interface': 'eth0'},
                                  {'port': 8000, 'interface': 'eth0'}])

    return m
def test_timestamp(simple_metric):
    m1 = metrics.Metrics()
    assert m1._timestamp >= simple_metric._timestamp
Beispiel #13
0
def test_timestamp(simple_metric):
    m1 = metrics.Metrics("FAKE_CLIENT_ID")
    assert m1._timestamp >= simple_metric._timestamp