summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cns-libs/cnslibs/common/heketi_libs.py2
-rw-r--r--cns-libs/setup.py2
-rw-r--r--tests/functional/common/test_heketi_restart.py63
3 files changed, 66 insertions, 1 deletions
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'])