diff options
author | Krishnaram Karthick Ramdoss <kramdoss@redhat.com> | 2018-02-02 10:10:42 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com> | 2018-02-02 10:10:42 +0000 |
commit | f9ac904f60e4116dedd2fa03359e1a8fa5912589 (patch) | |
tree | 4f6d3523e06aa0f729ea42b926d4c41741ff73d7 /tests/functional/common/heketi/heketi_tests/test_check_entry.py | |
parent | febc68282f77943f8e2314ae837d40f62b180465 (diff) | |
parent | 2a0aa3727e81f4baae6ea4dce6ec7320b05ca539 (diff) |
Merge "heketi automation cases"
Diffstat (limited to 'tests/functional/common/heketi/heketi_tests/test_check_entry.py')
-rw-r--r-- | tests/functional/common/heketi/heketi_tests/test_check_entry.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/tests/functional/common/heketi/heketi_tests/test_check_entry.py b/tests/functional/common/heketi/heketi_tests/test_check_entry.py new file mode 100644 index 00000000..16fbe085 --- /dev/null +++ b/tests/functional/common/heketi/heketi_tests/test_check_entry.py @@ -0,0 +1,128 @@ +#!/usr/bin/python + +from glusto.core import Glusto as g +from glustolibs.gluster.exceptions import ConfigError +from cnslibs.common.heketi_libs import HeketiClientSetupBaseClass +from cnslibs.common.heketi_ops import (heketi_volume_create, + heketi_volume_list, + heketi_volume_delete) +from cnslibs.common import heketi_ops, podcmd +from cnslibs.common.openshift_ops import oc_rsh, get_ocp_gluster_pod_names + + +class TestHeketiVolume(HeketiClientSetupBaseClass): + """ + Check /etc/fstab entry + """ + @classmethod + def setUpClass(cls): + super(TestHeketiVolume, cls).setUpClass() + cls.volume_size = cls.heketi_volume['size'] + + @podcmd.GlustoPod() + def test_to_check_entry_in_fstab_file(self): + """ + Create a heketi volume and check entry + in /etc/fstab and delete heketi volume + and check corresponding brick entry must + be removed + """ + + # Create heketi volume + g.log.info("Creating a heketi volume") + out = heketi_volume_create(self.heketi_client_node, + self.heketi_server_url, + self.volume_size, json=True) + self.assertTrue(out, ("Failed to create heketi volume " + "of size %s" % str(self.volume_size))) + g.log.info("Heketi volume successfully created" % out) + self.volume_id = out["bricks"][0]["volume"] + path = [] + for i in out["bricks"]: + path.append(i["path"].rstrip("/brick")) + + # Listing heketi volumes + g.log.info("List heketi volumes") + out = heketi_volume_list(self.heketi_client_node, + self.heketi_server_url) + self.assertTrue(out, ("Failed to list heketi volumes")) + g.log.info("Heketi volume successfully listed") + + gluster_pod = get_ocp_gluster_pod_names( + self.heketi_client_node)[1] + + cmd = "oc rsync "+ gluster_pod +":/var/lib/heketi/fstab /tmp" + out = g.run(self.heketi_client_node, cmd) + self.assertTrue(out, ("Failed to copy the file")) + g.log.info("Copied the file") + out = g.run_local("scp -r root@" +self.heketi_client_node+":/tmp/fstab /tmp/file.txt") + self.assertTrue(out, ("Failed to copy a file to /tmp/file.txt")) + g.log.info("Successfully copied to /tmp/file.txt") + out = g.run_local("ls /tmp") + self.assertTrue(out, ("Failed to list")) + g.log.info("Successfully listed") + + # open /tmp/fstab file + datafile = open("/tmp/file.txt") + # Check if the brick is mounted + for i in path: + string_to_search = i + rcode, rout, rerr = g.run_local('grep %s %s' % (string_to_search, "/tmp/file.txt")) + if rcode == 0: + g.log.info("Brick %s is mounted" % i) + datafile.close() + + out = g.run(self.heketi_client_node, "rm -rf /tmp/fstab") + self.assertTrue(out, ("Failed to delete a file /tmp/fstab")) + g.log.info("Successfully removed /tmp/fstab") + out = g.run_local("rm -rf /tmp/file.txt") + self.assertTrue(out, ("Failed to delete a file /tmp/file.txt")) + g.log.info("Successfully removed /tmp/file.txt") + + # Delete heketi volume + g.log.info("Deleting heketi volumes") + out = heketi_volume_delete(self.heketi_client_node, + self.heketi_server_url, + self.volume_id) + self.assertTrue(out, ("Failed to delete " + "heketi volume %s" % self.volume_id)) + g.log.info("Heketi volume successfully deleted %s" % self.volume_id) + + # Listing heketi volumes + g.log.info("List heketi volumes") + out = heketi_volume_list(self.heketi_client_node, + self.heketi_server_url) + self.assertTrue(out, ("Failed to list or No volumes to list")) + g.log.info("Heketi volume successfully listed") + + # Check entry /etc/fstab + gluster_pod = get_ocp_gluster_pod_names( + self.heketi_client_node)[0] + + cmd = "oc rsync "+ gluster_pod +":/var/lib/heketi/fstab /" + out = g.run(self.heketi_client_node, cmd) + self.assertTrue(out, ("Failed to copy the file")) + g.log.info("Copied the file") + out = g.run_local("scp -r root@" +self.heketi_client_node+":/fstab /tmp/newfile.txt") + self.assertTrue(out, ("Failed to copy to the file newfile.txt")) + g.log.info("Successfully copied to the file newfile.txt") + out = g.run_local("ls /tmp") + self.assertTrue(out, ("Failed to list")) + g.log.info("Successfully listed") + + # open /tmp/newfile.txt file + datafile = open("/tmp/newfile.txt") + # Check if the brick is mounted + for i in path: + string_to_search = i + rcode, rout, rerr = g.run_local('grep %s %s' % (string_to_search, "/tmp/newfile.txt")) + if rcode == 0: + raise ConfigError("Particular %s brick entry is found" % i) + datafile.close() + + out = g.run(self.heketi_client_node, "rm -rf /fstab") + self.assertTrue(out, ("Failed to delete a file /fstab")) + g.log.info("Successfully removed /fstab") + out = g.run_local("rm -rf /tmp/newfile.txt") + self.assertTrue(out, ("Failed to delete a file /tmp/newfile.txt")) + g.log.info("Successfully removed /tmp/file.txt") |