:param list_networks: mock 'list-networks' return
:param hostname: mock 'socket.gethostname' return
"""
- if not list_networks:
- list_networks = {}
if not hostname:
hostname = 'host1'
mock.patch('cephadm.find_executable', return_value='foo'), \
mock.patch('cephadm.is_available', return_value=True), \
mock.patch('cephadm.json_loads_retry', return_value={'epoch' : 1}), \
- mock.patch('cephadm.list_networks', return_value=list_networks), \
mock.patch('socket.gethostname', return_value=hostname):
- ctx: cd.CephadmContext = cd.cephadm_init_ctx(cmd)
- ctx.container_engine = container_engine
- yield ctx
+ ctx: cd.CephadmContext = cd.cephadm_init_ctx(cmd)
+ ctx.container_engine = container_engine
+ if list_networks is not None:
+ with mock.patch('cephadm.list_networks', return_value=list_networks):
+ yield ctx
+ else:
+ yield ctx
+
+import json
from textwrap import dedent
from unittest import mock
import pytest
+from tests.fixtures import with_cephadm_ctx, cephadm_fs
+
with mock.patch('builtins.open', create=True):
from importlib.machinery import SourceFileLoader
cd = SourceFileLoader('cephadm', 'cephadm').load_module()
])
def test_parse_ipv6_route(self, test_routes, test_ips, expected):
assert cd._parse_ipv6_route(test_routes, test_ips) == expected
+
+ @mock.patch.object(cd, 'call_throws', return_value=('10.4.0.1 dev tun0 proto kernel scope link src 10.4.0.2 metric 50\n', '', ''))
+ def test_command_list_networks(self, cephadm_fs, capsys):
+ with with_cephadm_ctx([]) as ctx:
+ cd.command_list_networks(ctx)
+ assert json.loads(capsys.readouterr().out) == {
+ '10.4.0.1': {'tun0': ['10.4.0.2']}
+ }
\ No newline at end of file