summaryrefslogtreecommitdiffstats
path: root/tests/functional/common/heketi/test_check_entries.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/common/heketi/test_check_entries.py')
-rw-r--r--tests/functional/common/heketi/test_check_entries.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/functional/common/heketi/test_check_entries.py b/tests/functional/common/heketi/test_check_entries.py
new file mode 100644
index 00000000..be7add9e
--- /dev/null
+++ b/tests/functional/common/heketi/test_check_entries.py
@@ -0,0 +1,54 @@
+from glusto.core import Glusto as g
+
+from cnslibs.common.heketi_libs import HeketiClientSetupBaseClass
+from cnslibs.common.heketi_ops import (heketi_volume_create,
+ heketi_volume_delete)
+from cnslibs.common.openshift_ops import get_ocp_gluster_pod_names
+
+
+class TestHeketiVolume(HeketiClientSetupBaseClass):
+ """Check volume bricks presence in fstab files on Gluster PODs."""
+
+ def _find_bricks_in_fstab_files(self, brick_paths, present):
+ """Make sure that vol brick paths either exist or not in fstab file."""
+ oc_node = self.ocp_master_nodes[0]
+ gluster_pods = get_ocp_gluster_pod_names(oc_node)
+ get_fstab_entries_cmd = "oc exec %s -- cat /var/lib/heketi/fstab"
+ fstab_files_data = ''
+ for gluster_pod in gluster_pods:
+ ret, out, err = g.run(oc_node, get_fstab_entries_cmd % gluster_pod)
+ self.assertEqual(
+ ret, 0,
+ "Failed to read fstab file on '%s' gluster POD. "
+ "\nOut: %s \nError: %s" % (gluster_pod, out, err))
+ fstab_files_data += '%s\n' % out
+ assertion_method = self.assertIn if present else self.assertNotIn
+ for brick_path in brick_paths:
+ assertion_method(brick_path, fstab_files_data)
+
+ def test_to_check_entry_in_fstab_file(self):
+ """Test case CNS-778"""
+
+ # Create heketi volume
+ vol = heketi_volume_create(
+ self.heketi_client_node, self.heketi_server_url, size=1, json=True)
+ self.assertTrue(vol, "Failed to create 1Gb heketi volume")
+ vol_id = vol["bricks"][0]["volume"]
+ self.addCleanup(
+ heketi_volume_delete,
+ self.heketi_client_node, self.heketi_server_url, vol_id,
+ raise_on_error=False)
+
+ # Gather brick paths
+ brick_paths = [p['path'].rstrip("/brick") for p in vol["bricks"]]
+
+ # Make sure that volume's brick paths exist in the fstab files
+ self._find_bricks_in_fstab_files(brick_paths, present=True)
+
+ # Delete heketi volume
+ out = heketi_volume_delete(
+ self.heketi_client_node, self.heketi_server_url, vol_id)
+ self.assertTrue(out, "Failed to delete heketi volume %s" % vol_id)
+
+ # Make sure that volume's brick paths are absent in the fstab file
+ self._find_bricks_in_fstab_files(brick_paths, present=False)