From 359e584af96e265839b264c89fb5384b5e115c5e Mon Sep 17 00:00:00 2001 From: Apeksha D Khakharia Date: Mon, 24 Sep 2018 19:56:26 +0530 Subject: CNS: adding testcase CNS-450 - Restart heketi pod Change-Id: Ie68628cb0f083fd5cd1ec9cd88a4c490bfca2e88 Signed-off-by: Apeksha D Khakharia --- cns-libs/cnslibs/common/heketi_libs.py | 2 + cns-libs/setup.py | 2 +- tests/functional/common/test_heketi_restart.py | 63 ++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/functional/common/test_heketi_restart.py diff --git a/cns-libs/cnslibs/common/heketi_libs.py b/cns-libs/cnslibs/common/heketi_libs.py index 5101ae25..29e21cd8 100644 --- a/cns-libs/cnslibs/common/heketi_libs.py +++ b/cns-libs/cnslibs/common/heketi_libs.py @@ -45,6 +45,8 @@ class HeketiBaseClass(unittest.TestCase): cls.executor_port = g.config['cns']['executor_port'] heketi_config = g.config['cns']['heketi_config'] + cls.heketi_dc_name = heketi_config['heketi_dc_name'] + cls.heketi_service_name = heketi_config['heketi_service_name'] cls.heketi_client_node = heketi_config['heketi_client_node'] cls.heketi_server_url = heketi_config['heketi_server_url'] cls.heketi_cli_user = heketi_config['heketi_cli_user'] diff --git a/cns-libs/setup.py b/cns-libs/setup.py index 1a4fe293..06f49c1d 100644 --- a/cns-libs/setup.py +++ b/cns-libs/setup.py @@ -22,7 +22,7 @@ setup( 'Programming Language :: Python :: 2.7' 'Topic :: Software Development :: Testing' ], - install_requires=['glusto', 'ddt', 'mock', 'rtyaml'], + install_requires=['glusto', 'ddt', 'mock', 'rtyaml', 'jsondiff'], dependency_links=[ 'http://github.com/loadtheaccumulator/glusto/tarball/master#egg=glusto' ], diff --git a/tests/functional/common/test_heketi_restart.py b/tests/functional/common/test_heketi_restart.py new file mode 100644 index 00000000..2d7da8c3 --- /dev/null +++ b/tests/functional/common/test_heketi_restart.py @@ -0,0 +1,63 @@ +from jsondiff import diff + +from cnslibs.common.heketi_libs import HeketiClientSetupBaseClass +from cnslibs.common.heketi_ops import ( + hello_heketi, + heketi_volume_create, + heketi_topology_info) +from cnslibs.common.openshift_ops import ( + get_pod_name_from_dc, + oc_delete, + wait_for_pod_be_ready, + wait_for_resource_absence) + + +class TestRestartHeketi(HeketiClientSetupBaseClass): + + def test_restart_heketi_pod(self): + """ CNS-450 Restarting heketi pod """ + + # create heketi volume + vol_info = heketi_volume_create(self.heketi_client_node, + self.heketi_server_url, + size=1, json=True) + self.assertTrue(vol_info, "Failed to create heketi volume of size 1") + self.addCleanup(self.delete_volumes, vol_info['id']) + topo_info = heketi_topology_info(self.heketi_client_node, + self.heketi_server_url, + json=True) + + # get heketi-pod name + heketi_pod_name = get_pod_name_from_dc(self.ocp_master_node, + self.heketi_dc_name) + + # delete heketi-pod (it restarts the pod) + oc_delete(self.ocp_master_node, 'pod', heketi_pod_name) + wait_for_resource_absence(self.ocp_master_node, + 'pod', heketi_pod_name) + + # get new heketi-pod name + heketi_pod_name = get_pod_name_from_dc(self.ocp_master_node, + self.heketi_dc_name) + wait_for_pod_be_ready(self.ocp_master_node, + heketi_pod_name) + + # check heketi server is running + self.assertTrue( + hello_heketi(self.heketi_client_node, self.heketi_server_url), + "Heketi server %s is not alive" % self.heketi_server_url + ) + + # compare the topology + new_topo_info = heketi_topology_info(self.heketi_client_node, + self.heketi_server_url, + json=True) + self.assertEqual(new_topo_info, topo_info, "topology info is not same," + " difference - %s" % diff(topo_info, new_topo_info)) + + # create new volume + vol_info = heketi_volume_create(self.heketi_client_node, + self.heketi_server_url, + size=2, json=True) + self.assertTrue(vol_info, "Failed to create heketi volume of size 20") + self.delete_volumes(vol_info['id']) -- cgit