initial commit
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
"""Tests for get_interfaces, get_interfaces_ip, get_interfaces_counters."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
from tests.conftest import _build_mock_api, NODE_NETWORK
|
||||
from unittest.mock import patch
|
||||
|
||||
from napalm_proxmox.driver import ProxmoxDriver
|
||||
|
||||
|
||||
class TestGetInterfaces:
|
||||
def test_returns_all_ifaces(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
expected_names = {i["iface"] for i in NODE_NETWORK if i.get("iface")}
|
||||
assert set(result.keys()) == expected_names
|
||||
|
||||
def test_eth0_is_up(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["eth0"]["is_up"] is True
|
||||
assert result["eth0"]["is_enabled"] is True
|
||||
|
||||
def test_ovs_bridge_not_up(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["vmbr1"]["is_up"] is False
|
||||
|
||||
def test_mac_address_normalized(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
mac = result["eth0"]["mac_address"]
|
||||
# should be lower-case colon-separated
|
||||
assert mac == "aa:bb:cc:dd:ee:01"
|
||||
|
||||
def test_speed_eth0(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["eth0"]["speed"] == 1000.0
|
||||
|
||||
def test_speed_unknown(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["vmbr0"]["speed"] == -1.0
|
||||
|
||||
def test_mtu(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["eth1"]["mtu"] == 9000
|
||||
|
||||
def test_description(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["eth0"]["description"] == "Management"
|
||||
|
||||
def test_last_flapped_minus_one(self, driver):
|
||||
result = driver.get_interfaces()
|
||||
assert result["eth0"]["last_flapped"] == -1.0
|
||||
|
||||
|
||||
class TestGetInterfacesIP:
|
||||
def test_eth0_has_ipv4(self, driver):
|
||||
result = driver.get_interfaces_ip()
|
||||
assert "eth0" in result
|
||||
assert "ipv4" in result["eth0"]
|
||||
assert "10.0.0.1" in result["eth0"]["ipv4"]
|
||||
|
||||
def test_eth0_prefix_length(self, driver):
|
||||
result = driver.get_interfaces_ip()
|
||||
assert result["eth0"]["ipv4"]["10.0.0.1"]["prefix_length"] == 24
|
||||
|
||||
def test_sdn_vnet_ipv4_gateway(self, driver):
|
||||
result = driver.get_interfaces_ip()
|
||||
# vnet0 gateway 10.10.0.1 /24
|
||||
assert "vnet0" in result
|
||||
assert "10.10.0.1" in result["vnet0"].get("ipv4", {})
|
||||
|
||||
def test_sdn_vnet_ipv6_gateway(self, driver):
|
||||
result = driver.get_interfaces_ip()
|
||||
# vnet1 has IPv6 subnet
|
||||
assert "vnet1" in result
|
||||
assert "2001:db8:20::1" in result["vnet1"].get("ipv6", {})
|
||||
|
||||
def test_iface_without_address_not_in_result(self, driver):
|
||||
result = driver.get_interfaces_ip()
|
||||
# eth1 has no address in fixture
|
||||
assert "eth1" not in result
|
||||
|
||||
|
||||
class TestGetInterfacesCounters:
|
||||
def test_returns_eth0(self, driver):
|
||||
result = driver.get_interfaces_counters()
|
||||
assert "eth0" in result
|
||||
|
||||
def test_counters_fields_present(self, driver):
|
||||
result = driver.get_interfaces_counters()
|
||||
eth0 = result["eth0"]
|
||||
for field in (
|
||||
"tx_errors", "rx_errors", "tx_discards", "rx_discards",
|
||||
"tx_octets", "rx_octets", "tx_unicast_packets", "rx_unicast_packets",
|
||||
"tx_multicast_packets", "rx_multicast_packets",
|
||||
"tx_broadcast_packets", "rx_broadcast_packets",
|
||||
):
|
||||
assert field in eth0, f"Missing field: {field}"
|
||||
|
||||
def test_counter_values(self, driver):
|
||||
result = driver.get_interfaces_counters()
|
||||
eth0 = result["eth0"]
|
||||
assert eth0["tx_octets"] == 500000
|
||||
assert eth0["rx_octets"] == 1000000
|
||||
assert eth0["tx_discards"] == 1
|
||||
|
||||
def test_empty_when_no_netstat(self, driver):
|
||||
driver._node_api().netstat.get.return_value = []
|
||||
result = driver.get_interfaces_counters()
|
||||
assert result == {}
|
||||
Reference in New Issue
Block a user