From: Michael Fritch Date: Wed, 26 May 2021 13:05:24 +0000 (-0600) Subject: cephadm: move podman/docker test mock X-Git-Tag: v16.2.5~72^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9f3e554037a61bc251b4c121d8345c528f5504f4;p=ceph.git cephadm: move podman/docker test mock to use as a default value in the fixtures Signed-off-by: Michael Fritch (cherry picked from commit 3060962926bc69f03e11352f637d3586143d4ac6) Conflicts: src/cephadm/tests/test_cephadm.py --- diff --git a/src/cephadm/tests/fixtures.py b/src/cephadm/tests/fixtures.py index ec4244abede8..9693ead8dd0d 100644 --- a/src/cephadm/tests/fixtures.py +++ b/src/cephadm/tests/fixtures.py @@ -5,7 +5,8 @@ import time from contextlib import contextmanager from pyfakefs import fake_filesystem -from typing import Dict, List, Optional + +from typing import Callable, Dict, List, Optional with mock.patch('builtins.open', create=True): @@ -13,6 +14,19 @@ with mock.patch('builtins.open', create=True): cd = SourceFileLoader('cephadm', 'cephadm').load_module() +def mock_docker(): + docker = mock.Mock(cd.Docker) + docker.path = '/usr/bin/docker' + return docker + + +def mock_podman(): + podman = mock.Mock(cd.Podman) + podman.path = '/usr/bin/podman' + podman.version = (2, 1, 0) + return podman + + def _daemon_path(): return os.getcwd() @@ -69,10 +83,12 @@ def cephadm_fs( @contextmanager def with_cephadm_ctx( cmd: List[str], + container_engine: Callable = mock_podman(), list_networks: Optional[Dict[str,Dict[str,List[str]]]] = None ): """ :param cmd: cephadm command argv + :param container_engine: container engine mock (podman or docker) :param list_networks: mock 'list-networks' return """ if not list_networks: @@ -86,4 +102,5 @@ def with_cephadm_ctx( mock.patch('cephadm.json_loads_retry', return_value={'epoch' : 1}), \ mock.patch('cephadm.list_networks', return_value=list_networks): ctx: cd.CephadmContext = cd.cephadm_init_ctx(cmd) + ctx.container_engine = container_engine yield ctx diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index 95c335de1d64..5360b39f5706 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -15,7 +15,7 @@ from urllib.request import Request, urlopen from urllib.error import HTTPError from typing import List, Optional -from .fixtures import exporter +from .fixtures import exporter, mock_docker, mock_podman with mock.patch('builtins.open', create=True): @@ -25,25 +25,12 @@ with mock.patch('builtins.open', create=True): class TestCephAdm(object): - @staticmethod - def mock_docker(): - docker = mock.Mock(cd.Docker) - docker.path = '/usr/bin/docker' - return docker - - @staticmethod - def mock_podman(): - podman = mock.Mock(cd.Podman) - podman.path = '/usr/bin/podman' - podman.version = (2, 1, 0) - return podman - def test_docker_unit_file(self): ctx = mock.Mock() - ctx.container_engine = self.mock_docker() + ctx.container_engine = mock_docker() r = cd.get_unit_file(ctx, '9b9d7609-f4d5-4aba-94c8-effa764d96c9') assert 'Requires=docker.service' in r - ctx.container_engine = self.mock_podman() + ctx.container_engine = mock_podman() r = cd.get_unit_file(ctx, '9b9d7609-f4d5-4aba-94c8-effa764d96c9') assert 'Requires=docker.service' not in r @@ -416,7 +403,7 @@ default proto ra metric 100 ['registry-login', '--registry-url', 'sample-url', '--registry-username', 'sample-user', '--registry-password', 'sample-pass']) - ctx.container_engine = self.mock_docker() + ctx.container_engine = mock_docker() retval = cd.command_registry_login(ctx) assert retval == 0 @@ -432,7 +419,7 @@ default proto ra metric 100 get_parm.return_value = {"url": "sample-url", "username": "sample-username", "password": "sample-password"} ctx: cd.CephadmContext = cd.cephadm_init_ctx( ['registry-login', '--registry-json', 'sample-json']) - ctx.container_engine = self.mock_docker() + ctx.container_engine = mock_docker() retval = cd.command_registry_login(ctx) assert retval == 0