From 8ed884e1b75264ff653099cb0a4b8f496efedfbf Mon Sep 17 00:00:00 2001 From: adityaramteke Date: Wed, 12 Aug 2020 22:02:13 +0530 Subject: [Test] Add TC to validate heketi LVM wrapper functionality Change-Id: I92925dd419a78d2f3a3a2baf8e80727e33d6d5ae Signed-off-by: Aditya Ramteke --- tests/functional/heketi/test_heketi_lvm_wrapper.py | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tests/functional/heketi/test_heketi_lvm_wrapper.py diff --git a/tests/functional/heketi/test_heketi_lvm_wrapper.py b/tests/functional/heketi/test_heketi_lvm_wrapper.py new file mode 100644 index 00000000..40abaf56 --- /dev/null +++ b/tests/functional/heketi/test_heketi_lvm_wrapper.py @@ -0,0 +1,63 @@ +import ddt + +import pytest + +from openshiftstoragelibs import baseclass +from openshiftstoragelibs import heketi_version +from openshiftstoragelibs import openshift_ops +from openshiftstoragelibs import openshift_version + +# The script exec-on-host prevents from executing LVM commands on pod. +# It has been introduced as LVM wrapper in heketi v9.0.0-9 +ENV_NAME = "HEKETI_LVM_WRAPPER" +ENV_VALUE = "/usr/sbin/exec-on-host" + + +@ddt.ddt +class TestHeketiLvmWrapper(baseclass.BaseClass): + """Class to validate heketi LVM wrapper functionality""" + + def setUp(self): + super(TestHeketiLvmWrapper, self).setUp() + + self.oc_node = self.ocp_master_node[0] + self.pod_name = openshift_ops.get_ocp_gluster_pod_details(self.oc_node) + self.h_pod_name = openshift_ops.get_pod_name_from_dc( + self.oc_node, self.heketi_dc_name) + + ocp_version = openshift_version.get_openshift_version() + if ocp_version < "3.11.170": + self.skipTest("Heketi LVM Wrapper functionality does not " + "support on OCP {}".format(ocp_version.v_str)) + h_version = heketi_version.get_heketi_version(self.heketi_client_node) + if h_version < '9.0.0-9': + self.skipTest("heketi-client package {} does not support Heketi " + "LVM Wrapper functionality".format(h_version.v_str)) + + @pytest.mark.tier0 + def test_lvm_script_and_wrapper_environments(self): + """Validate lvm script present on glusterfs pods + lvm wrapper environment is present on heketi pod""" + + # Check script /usr/sbin/exec-on-host is present in pod + if self.is_containerized_gluster(): + cmd = "ls -lrt {}".format(ENV_VALUE) + ret, _, err = openshift_ops.oc_rsh( + self.oc_node, self.pod_name[0]['pod_name'], cmd) + self.assertFalse( + ret, "failed to execute command {} on pod {} with error:" + " {}".format(cmd, self.pod_name[0]['pod_name'], err)) + + # Get a value associated with HEKETI_LVM_WRAPPER + custom = (r'":spec.containers[*].env[?(@.name==\"{}\")]' + r'.value"'.format(ENV_NAME)) + env_var_value = openshift_ops.oc_get_custom_resource( + self.oc_node, "pod", custom, self.h_pod_name) + + # Check value /usr/sbin/exec-on-host is present in converged mode + # and absent in independent mode deployment + err_msg = "Heketi LVM environment {} match failed".format(ENV_VALUE) + if self.is_containerized_gluster(): + self.assertEqual(env_var_value[0], ENV_VALUE, err_msg) + else: + self.assertIsNotNone(env_var_value[0], err_msg) -- cgit