From b8ad35ceb99cdbd1644c79dd689b818f095ba8b8 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Tue, 16 Oct 2018 16:25:12 +0200 Subject: [PATCH] tests: test `test_all_docker_osds_are_up_and_in()` from mon nodes Let's get the osd tree from mons instead on osds. This way we don't have to predict an OSD container name. Signed-off-by: Guillaume Abrioux --- .../tests/mon/test_osds_from_mons.py | 28 ++++++++++++++ tests/functional/tests/osd/test_osds.py | 37 ------------------- 2 files changed, 28 insertions(+), 37 deletions(-) create mode 100644 tests/functional/tests/mon/test_osds_from_mons.py diff --git a/tests/functional/tests/mon/test_osds_from_mons.py b/tests/functional/tests/mon/test_osds_from_mons.py new file mode 100644 index 000000000..f8eeab74b --- /dev/null +++ b/tests/functional/tests/mon/test_osds_from_mons.py @@ -0,0 +1,28 @@ +import pytest +import json + + +class TestOsdsFromMons(object): + def _get_nb_osd_up(self, osd_tree): + nb_up = 0 + for n in osd_tree['nodes']: + if n['type'] == 'osd' and n['status'] == 'up': + nb_up += 1 + return nb_up + + @pytest.mark.no_docker + def test_all_osds_are_up_and_in(self, node, host): + cmd = "sudo ceph --cluster={cluster} --connect-timeout 5 osd tree -f json".format(cluster=node["cluster_name"]) + output = json.loads(host.check_output(cmd)) + nb_osd_up = self._get_nb_osd_up(output) + assert int(node["num_osds"]) == int(nb_osd_up) + + @pytest.mark.docker + def test_all_docker_osds_are_up_and_in(self, node, host): + cmd = "sudo docker exec ceph-mon-{inventory_hostname} ceph --cluster={cluster} --connect-timeout 5 osd tree -f json".format( + cluster=node["cluster_name"], + inventory_hostname=node['vars']['inventory_hostname'] + ) + output = json.loads(host.check_output(cmd)) + nb_osd_up = self._get_nb_osd_up(output) + assert node["num_osds"] == nb_osd_up diff --git a/tests/functional/tests/osd/test_osds.py b/tests/functional/tests/osd/test_osds.py index 851c7d7f5..20fbeacb4 100644 --- a/tests/functional/tests/osd/test_osds.py +++ b/tests/functional/tests/osd/test_osds.py @@ -47,40 +47,3 @@ class TestOSDs(object): @pytest.mark.lvm_scenario def test_ceph_volume_systemd_is_installed(self, node, host): host.exists('ceph-volume-systemd') - - def _get_osd_id_from_host(self, node, osd_tree): - children = [] - for n in osd_tree['nodes']: - if n['name'] == node['vars']['inventory_hostname'] and n['type'] == 'host': - children = n['children'] - return children - - def _get_nb_up_osds_from_ids(self, node, osd_tree): - nb_up = 0 - ids = self._get_osd_id_from_host(node, osd_tree) - for n in osd_tree['nodes']: - if n['id'] in ids and n['status'] == 'up': - nb_up += 1 - return nb_up - - @pytest.mark.no_docker - def test_all_osds_are_up_and_in(self, node, host): - cmd = "sudo ceph --cluster={cluster} --connect-timeout 5 --keyring /var/lib/ceph/bootstrap-osd/{cluster}.keyring -n client.bootstrap-osd osd tree -f json".format(cluster=node["cluster_name"]) - output = json.loads(host.check_output(cmd)) - assert node["num_osds"] == self._get_nb_up_osds_from_ids(node, output) - - @pytest.mark.docker - def test_all_docker_osds_are_up_and_in(self, node, host): - osd_scenario = node["vars"].get('osd_scenario', False) - if osd_scenario in ['lvm', 'lvm-batch']: - osd_id = "0" - else: - hostname = node["vars"]["inventory_hostname"] - osd_id = os.path.join(hostname+"-sda") - - cmd = "sudo docker exec ceph-osd-{osd_id} ceph --cluster={cluster} --connect-timeout 5 --keyring /var/lib/ceph/bootstrap-osd/{cluster}.keyring -n client.bootstrap-osd osd tree -f json".format( - osd_id=osd_id, - cluster=node["cluster_name"] - ) - output = json.loads(host.check_output(cmd)) - assert node["num_osds"] == self._get_nb_up_osds_from_ids(node, output) -- 2.39.5