From 33b511568f3f44f2431be3be348a70334a528ca6 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Thu, 5 Jul 2018 15:16:19 +0200 Subject: [PATCH] tests: add mimic support for test_rbd_mirror_is_up() prior mimic, the data structure returned by `ceph -s -f json` used to gather information about rbd-mirror daemons looked like below: ``` "servicemap": { "epoch": 8, "modified": "2018-07-05 13:21:06.207483", "services": { "rbd-mirror": { "daemons": { "summary": "", "ceph-nano-luminous-faa32aebf00b": { "start_epoch": 8, "start_stamp": "2018-07-05 13:21:04.668450", "gid": 14107, "addr": "172.17.0.2:0/2229952892", "metadata": { "arch": "x86_64", "ceph_version": "ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)", "cpu": "Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz", "distro": "centos", "distro_description": "CentOS Linux 7 (Core)", "distro_version": "7", "hostname": "ceph-nano-luminous-faa32aebf00b", "instance_id": "14107", "kernel_description": "#1 SMP Wed Mar 14 15:12:16 UTC 2018", "kernel_version": "4.9.87-linuxkit-aufs", "mem_swap_kb": "1048572", "mem_total_kb": "2046652", "os": "Linux" } } } } } } ``` This part has changed from mimic and became: ``` "servicemap": { "epoch": 2, "modified": "2018-07-04 09:54:36.164786", "services": { "rbd-mirror": { "daemons": { "summary": "", "14151": { "start_epoch": 2, "start_stamp": "2018-07-04 09:54:35.541272", "gid": 14151, "addr": "192.168.1.80:0/240942528", "metadata": { "arch": "x86_64", "ceph_release": "mimic", "ceph_version": "ceph version 13.2.0 (79a10589f1f80dfe21e8f9794365ed98143071c4) mimic (stable)", "ceph_version_short": "13.2.0", "cpu": "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz", "distro": "centos", "distro_description": "CentOS Linux 7 (Core)", "distro_version": "7", "hostname": "ceph-rbd-mirror0", "id": "ceph-rbd-mirror0", "instance_id": "14151", "kernel_description": "#1 SMP Wed May 9 18:05:47 UTC 2018", "kernel_version": "3.10.0-862.2.3.el7.x86_64", "mem_swap_kb": "1572860", "mem_total_kb": "1015548", "os": "Linux" } } } } } } ``` This patch modifies the function `test_rbd_mirror_is_up()` in `test_rbd_mirror.py` so it works with `mimic` and keeps backward compatibility with `luminous` Signed-off-by: Guillaume Abrioux (cherry picked from commit 09d795b5b737a05164772f5e3ba469577d605344) --- tests/conftest.py | 1 + .../tests/rbd-mirror/test_rbd_mirror.py | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 41b32087f..16d941397 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -106,6 +106,7 @@ def node(host, request): docker=docker, osds=osds, ceph_stable_release=ceph_stable_release, + ceph_release_num=ceph_release_num, ) return data diff --git a/tests/functional/tests/rbd-mirror/test_rbd_mirror.py b/tests/functional/tests/rbd-mirror/test_rbd_mirror.py index e195f41e8..c76a29952 100644 --- a/tests/functional/tests/rbd-mirror/test_rbd_mirror.py +++ b/tests/functional/tests/rbd-mirror/test_rbd_mirror.py @@ -61,6 +61,15 @@ class TestRbdMirrors(object): @pytest.mark.no_docker @pytest.mark.from_luminous def test_rbd_mirror_is_up(self, node, host): + ceph_release_num=node['ceph_release_num'] + ceph_stable_release=node['ceph_stable_release'] + hostname=node["vars"]["inventory_hostname"] + cluster=node["cluster_name"] + daemons = [] + if node['docker']: + docker_exec_cmd = 'docker exec ceph-rbd-mirror-{hostname}'.format(hostname=hostname) + else: + docker_exec_cmd = '' hostname = node["vars"]["inventory_hostname"] cluster = node['cluster_name'] cmd = "sudo ceph --name client.bootstrap-rbd --keyring /var/lib/ceph/bootstrap-rbd/{cluster}.keyring --cluster={cluster} --connect-timeout 5 -f json -s".format( @@ -81,5 +90,12 @@ class TestRbdMirrors(object): cluster=cluster ) output = host.check_output(cmd) - daemons = [i for i in json.loads(output)["servicemap"]["services"]["rbd-mirror"]["daemons"]] - assert hostname in daemons + status = json.loads(output) + daemon_ids = [i for i in status["servicemap"]["services"]["rbd-mirror"]["daemons"].keys() if i != "summary"] + if ceph_release_num[ceph_stable_release] > ceph_release_num['luminous']: + for daemon_id in daemon_ids: + daemons.append(status["servicemap"]["services"]["rbd-mirror"]["daemons"][daemon_id]["metadata"]["hostname"]) + result = hostname in daemons + else: + result = hostname in daemon_ids + assert result \ No newline at end of file -- 2.47.3