diff options
author | Valerii Ponomarov <vponomar@redhat.com> | 2018-11-12 21:38:16 +0530 |
---|---|---|
committer | Valerii Ponomarov <vponomar@redhat.com> | 2018-11-13 18:52:01 +0530 |
commit | 19143758fe6dbd77dab2bc81d77abfdb63627fe0 (patch) | |
tree | a97a341c82b86f0eca30bb9a1af38594569f8d2b /tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py | |
parent | d27f48282d2aaaf38851e192962e765b4f23bbb5 (diff) |
Refactor test cases CNS-797 and CNS-798
Do following improvements:
- Calculate distributed replica vol size dynamically based on the
current free space on the heketi devices.
- Add check for amount of bricks.
- Cleanup volume more correctly.
- Check free space after deletion considering the size of deleted vol.
- Rename module.
- Move module out of "heketi_tests" to the parent dir called "heketi".
Change-Id: I42fdfadc97157595857e5a106760391281f59a1a
Diffstat (limited to 'tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py')
-rw-r--r-- | tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py b/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py deleted file mode 100644 index 29b39513..00000000 --- a/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py +++ /dev/null @@ -1,193 +0,0 @@ -from __future__ import division -import math - -from glusto.core import Glusto as g -from glustolibs.gluster.volume_ops import get_volume_list, get_volume_info - -from cnslibs.common.exceptions import ExecutionError -from cnslibs.common.heketi_libs import HeketiClientSetupBaseClass -from cnslibs.common.heketi_ops import (heketi_node_list, - heketi_node_info, - heketi_volume_create, - heketi_volume_list, - heketi_volume_info, - heketi_volume_delete) -from cnslibs.common.openshift_ops import get_ocp_gluster_pod_names -from cnslibs.common import podcmd - - -class TestHeketiVolume(HeketiClientSetupBaseClass): - - def get_free_space(self): - """ - Get free space in each devices - """ - free_spaces = [] - heketi_node_id_list = heketi_node_list( - self.heketi_client_node, self.heketi_server_url) - for node_id in heketi_node_id_list: - node_info_dict = heketi_node_info(self.heketi_client_node, - self.heketi_server_url, - node_id, json=True) - total_free_space = 0 - for device in node_info_dict["devices"]: - total_free_space += device["storage"]["free"] - free_spaces.append(total_free_space) - total_free_space = sum(free_spaces)/(1024**2) - total_free_space = int(math.floor(total_free_space)) - - return total_free_space, free_spaces - - @podcmd.GlustoPod() - def test_to_create_distribute_replicated_vol(self): - """ - Create distribute replicate heketi - volume and run heketi-cli volume info - """ - - hosts = [] - size = 610 - g.log.info("Creating a heketi volume") - out = heketi_volume_create(self.heketi_client_node, - self.heketi_server_url, - size, json=True) - self.assertTrue(out, ("Failed to create " - "heketi volume of size %s" % str(size))) - g.log.info("Successfully created heketi volume" - " of size %s" % str(size)) - volume_id = out["bricks"][0]["volume"] - self.addCleanup(self.delete_volumes, volume_id) - - # Correct the backupvol file servers are updated - gluster_servers = [] - g.log.info("Checking backupvol file servers are updated") - mount_node = (out["mount"]["glusterfs"] - ["device"].strip().split(":")[0]) - hosts.append(mount_node) - backup_volfile_server_list = ( - out["mount"]["glusterfs"]["options"][ - "backup-volfile-servers"].strip().split(",")) - for backup_volfile_server in backup_volfile_server_list: - hosts.append(backup_volfile_server) - for gluster_server in g.config["gluster_servers"].keys(): - gluster_servers.append(g.config["gluster_servers"] - [gluster_server]["storage"]) - self.assertEqual(set(hosts), set(gluster_servers)) - g.log.info("Correctly updated backupvol file servers") - - # Retrieve heketi volume info - g.log.info("Retrieving heketi volume info") - out = heketi_volume_info( - self.heketi_client_node, self.heketi_server_url, volume_id, - json=True) - self.assertTrue(out, ("Failed to get heketi volume info")) - g.log.info("Successfully got the heketi volume info") - name = out["name"] - - # Get gluster volume info - g.log.info("Get gluster volume info") - if self.deployment_type == "cns": - gluster_pod = get_ocp_gluster_pod_names( - self.heketi_client_node)[1] - p = podcmd.Pod(self.heketi_client_node, gluster_pod) - out = get_volume_info(p, volname=name) - else: - out = get_volume_info(self.heketi_client_node, - volname=name) - self.assertTrue(out, ("Failed to get volume info")) - g.log.info("Successfully got the volume info") - self.assertEqual(out[name]["typeStr"], "Distributed-Replicate", - "Not a Distributed-Replicate volume") - - @podcmd.GlustoPod() - def test_to_create_and_delete_dist_rep_vol(self): - """ - Create distribute replicate heketi - volume and delete it and check the available - space - """ - - size = 610 - g.log.info("Creating a heketi volume") - out = heketi_volume_create(self.heketi_client_node, - self.heketi_server_url, - size, json=True) - self.assertTrue(out, ("Failed to create " - "heketi volume of size %s" % str(size))) - g.log.info("Successfully created heketi volume" - " of size %s" % str(size)) - volume_id = out["bricks"][0]["volume"] - name = out["name"] - - # Get gluster volume info - g.log.info("Get gluster volume info") - if self.deployment_type == "cns": - gluster_pod = get_ocp_gluster_pod_names( - self.heketi_client_node)[1] - p = podcmd.Pod(self.heketi_client_node, gluster_pod) - out = get_volume_info(p, volname=name) - else: - out = get_volume_info(self.heketi_client_node, - volname=name) - self.assertTrue(out, ("Failed to get volume info")) - g.log.info("Successfully got the volume info") - self.assertEqual(out[name]["typeStr"], "Distributed-Replicate", - "Not a Distributed-Replicate volume") - - # Get the free space - # After creating heketi volume - free_space_after_creating_vol, _ = self.get_free_space() - - # Delete heketi volumes of size 60gb which was created - g.log.info("Deleting heketi volumes") - out = heketi_volume_delete(self.heketi_client_node, - self.heketi_server_url, - volume_id) - if not out: - raise ExecutionError("Failed to delete " - "heketi volume %s" % volume_id) - g.log.info("Heketi volume successfully deleted %s" % out) - - # Check the heketi volume list - g.log.info("List heketi volumes") - volumes = heketi_volume_list(self.heketi_client_node, - self.heketi_server_url, - json=True) - self.assertTrue(volumes, ("Failed to list heketi volumes")) - g.log.info("Heketi volumes successfully listed") - - # Check the gluster volume list - g.log.info("Get the gluster volume list") - if self.deployment_type == "cns": - gluster_pod = get_ocp_gluster_pod_names( - self.heketi_client_node)[1] - p = podcmd.Pod(self.heketi_client_node, gluster_pod) - out = get_volume_list(p) - else: - out = get_volume_list(self.heketi_client_node) - self.assertTrue(out, ("Unable to get volume list")) - g.log.info("Successfully got the volume list" % out) - - # Check the volume count are equal - if (len(volumes["volumes"]) != len(out)): - raise ExecutionError("Heketi volume list %s is" - " not equal to gluster" - " volume list %s" % ((volumes), (out))) - g.log.info("Heketi volumes list %s and" - " gluster volumes list %s" % ((volumes), (out))) - - # Get the used space - # After deleting heketi volume - free_space_after_deleting_vol, _ = self.get_free_space() - - # Compare the free size before and after deleting volume - g.log.info("Comparing the free space before and after" - " deleting volume") - self.assertTrue( - free_space_after_creating_vol < free_space_after_deleting_vol) - g.log.info("Volume successfully deleted and space is" - " reallocated. Free space after creating" - " volume %s, Free space after deleting" - " volume %s" % ( - free_space_after_creating_vol, - free_space_after_deleting_vol)) |