@@ -0,0 +1,44 @@
|
||||
"""Эвристика «физических» сетевых интерфейсов для дашборда."""
|
||||
|
||||
import importlib.util
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
_ROOT = Path(__file__).resolve().parents[1]
|
||||
_SPEC = importlib.util.spec_from_file_location(
|
||||
"wesp_admin_system_metrics_testonly",
|
||||
_ROOT / "app" / "services" / "admin_system_metrics.py",
|
||||
)
|
||||
assert _SPEC and _SPEC.loader
|
||||
_mod = importlib.util.module_from_spec(_SPEC)
|
||||
_SPEC.loader.exec_module(_mod)
|
||||
network_interface_is_physical = _mod.network_interface_is_physical
|
||||
|
||||
|
||||
class NetworkInterfacePhysicalTests(unittest.TestCase):
|
||||
def test_always_treated_as_virtual(self) -> None:
|
||||
self.assertFalse(network_interface_is_physical("lo"))
|
||||
self.assertFalse(network_interface_is_physical("lo0"))
|
||||
self.assertFalse(network_interface_is_physical("docker0"))
|
||||
self.assertFalse(network_interface_is_physical("veth0abc1"))
|
||||
self.assertFalse(network_interface_is_physical("br-4e2d9a"))
|
||||
self.assertFalse(network_interface_is_physical("br0"))
|
||||
self.assertFalse(network_interface_is_physical("virbr0"))
|
||||
|
||||
@unittest.skipUnless(sys.platform.startswith("linux"), "имена eth*/wlan* — ветка Linux")
|
||||
def test_linux_common_nic_names_match_regex_fallback(self) -> None:
|
||||
self.assertTrue(network_interface_is_physical("eth0"))
|
||||
self.assertTrue(network_interface_is_physical("enp2s0"))
|
||||
self.assertTrue(network_interface_is_physical("wlan0"))
|
||||
self.assertTrue(network_interface_is_physical("bond0"))
|
||||
self.assertTrue(network_interface_is_physical("team0"))
|
||||
|
||||
@unittest.skipUnless(sys.platform == "darwin", "на macOS физические в основном en*")
|
||||
def test_darwin_en(self) -> None:
|
||||
self.assertTrue(network_interface_is_physical("en0"))
|
||||
self.assertFalse(network_interface_is_physical("bridge0"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user