]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: add tests
authorSage Weil <sage@redhat.com>
Mon, 16 Mar 2020 19:37:54 +0000 (14:37 -0500)
committerSage Weil <sage@redhat.com>
Mon, 16 Mar 2020 19:38:22 +0000 (14:38 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/cephadm/cephadm
src/cephadm/tests/test_cephadm.py

index b388eac0c53d911235d32de641de39c9832a8971..e71f6ef9d2f8382a8727f18352cdc32639ea9dc8 100755 (executable)
@@ -2648,7 +2648,6 @@ def command_logs():
 
 def list_networks():
     # type: () -> Dict[str,List[str]]
-    r = {}  # type: Dict[str,List[str]]
 
     ## sadly, 18.04's iproute2 4.15.0-2ubun doesn't support the -j flag,
     ## so we'll need to use a regex to parse 'ip' command output.
@@ -2657,6 +2656,10 @@ def list_networks():
     #for x in j:
 
     out, _, _ = call_throws([find_executable('ip'), 'route', 'ls'])
+    return _parse_ip_route(out)
+
+def _parse_ip_route(out):
+    r = {}  # type: Dict[str,List[str]]
     p = re.compile(r'^(\S+) (.*)scope link (.*)src (\S+)')
     for line in out.splitlines():
         m = p.findall(line)
index b0dad3cd42d6705f9984a7d7cc3609eeccb95513..311abbe39583eee2a27f200626fb314e0f300ba7 100644 (file)
@@ -43,3 +43,56 @@ class TestCephAdm(object):
         with pytest.raises(ValueError) as res:
             cd._parse_podman_version('podman version inval.id')
         assert 'inval' in str(res.value)
+
+    @pytest.mark.parametrize("test_input, expected", [
+        (
+"""
+default via 192.168.178.1 dev enxd89ef3f34260 proto dhcp metric 100
+10.0.0.0/8 via 10.4.0.1 dev tun0 proto static metric 50
+10.3.0.0/21 via 10.4.0.1 dev tun0 proto static metric 50
+10.4.0.1 dev tun0 proto kernel scope link src 10.4.0.2 metric 50
+137.1.0.0/16 via 10.4.0.1 dev tun0 proto static metric 50
+138.1.0.0/16 via 10.4.0.1 dev tun0 proto static metric 50
+139.1.0.0/16 via 10.4.0.1 dev tun0 proto static metric 50
+140.1.0.0/17 via 10.4.0.1 dev tun0 proto static metric 50
+141.1.0.0/16 via 10.4.0.1 dev tun0 proto static metric 50
+169.254.0.0/16 dev docker0 scope link metric 1000
+172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
+192.168.39.0/24 dev virbr1 proto kernel scope link src 192.168.39.1 linkdown
+192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
+192.168.178.0/24 dev enxd89ef3f34260 proto kernel scope link src 192.168.178.28 metric 100
+192.168.178.1 dev enxd89ef3f34260 proto static scope link metric 100
+195.135.221.12 via 192.168.178.1 dev enxd89ef3f34260 proto static metric 100
+""",
+            {
+                '10.4.0.1': ['10.4.0.2'],
+                '172.17.0.0/16': ['172.17.0.1'],
+                '192.168.39.0/24': ['192.168.39.1'],
+                '192.168.122.0/24': ['192.168.122.1'],
+                '192.168.178.0/24': ['192.168.178.28']
+            }
+        ),        (
+"""
+default via 10.3.64.1 dev eno1 proto static metric 100
+10.3.64.0/24 dev eno1 proto kernel scope link src 10.3.64.23 metric 100
+10.3.64.0/24 dev eno1 proto kernel scope link src 10.3.64.27 metric 100
+10.88.0.0/16 dev cni-podman0 proto kernel scope link src 10.88.0.1 linkdown
+172.21.0.0/20 via 172.21.3.189 dev tun0
+172.21.1.0/20 via 172.21.3.189 dev tun0
+172.21.2.1 via 172.21.3.189 dev tun0
+172.21.3.1 dev tun0 proto kernel scope link src 172.21.3.2
+172.21.4.0/24 via 172.21.3.1 dev tun0
+172.21.5.0/24 via 172.21.3.1 dev tun0
+172.21.6.0/24 via 172.21.3.1 dev tun0
+172.21.7.0/24 via 172.21.3.1 dev tun0
+192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
+""",
+            {
+                '10.3.64.0/24': ['10.3.64.23', '10.3.64.27'],
+                '10.88.0.0/16': ['10.88.0.1'],
+                '172.21.3.1': ['172.21.3.2'],
+                '192.168.122.0/24': ['192.168.122.1']}
+        ),
+    ])
+    def test_parse_ip_route(self, test_input, expected):
+        assert cd._parse_ip_route(test_input) == expected