summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorValerii Ponomarov <vponomar@redhat.com>2018-12-26 21:49:08 +0530
committerValerii Ponomarov <vponomar@redhat.com>2018-12-27 14:09:38 +0530
commitaea011ba00315fc7771808d4192824d36679ce77 (patch)
treec26bd9c25ed224c493994fb7488dd68f619c3207 /tests
parent919744fa9eee14bb983cfdc58b9f873afa705c6d (diff)
Refactor and enable 'test_device_remove_basic_validation' tc
It was skipped some time ago due to the bug. Now this bug is fixed. So, we need to unskip it. So, do it, in addition to the required refactor. Change-Id: I7c426e9cd3dc38ed48e5b91870bc10bd63998694
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/common/heketi/test_heketi_device_operations.py52
-rw-r--r--tests/functional/common/heketi/test_heketi_volume_operations.py96
2 files changed, 43 insertions, 105 deletions
diff --git a/tests/functional/common/heketi/test_heketi_device_operations.py b/tests/functional/common/heketi/test_heketi_device_operations.py
index 202da90f..718ed80b 100644
--- a/tests/functional/common/heketi/test_heketi_device_operations.py
+++ b/tests/functional/common/heketi/test_heketi_device_operations.py
@@ -1,5 +1,6 @@
import json
+import ddt
from glusto.core import Glusto as g
from cnslibs.common.heketi_libs import HeketiBaseClass
@@ -17,6 +18,7 @@ from cnslibs.common.heketi_ops import (heketi_node_enable,
heketi_topology_info)
+@ddt.ddt
class TestHeketiDeviceOperations(HeketiBaseClass):
"""Test Heketi device enable/disable and remove functionality."""
@@ -168,8 +170,10 @@ class TestHeketiDeviceOperations(HeketiBaseClass):
"None of '%s' volume bricks is present on the '%s' device." % (
vol_info['id'], online_device_id))
- def test_device_remove_operation(self):
- """Test case CNS-766. Test device remove functionality."""
+ @ddt.data(True, False)
+ def test_device_remove_operation(self, delete_device):
+ """Test cases CNS-623,766."""
+
gluster_server_0 = g.config["gluster_servers"].values()[0]
try:
device_name = gluster_server_0["additional_devices"][0]
@@ -206,6 +210,7 @@ class TestHeketiDeviceOperations(HeketiBaseClass):
device["storage"]["total"] < lowest_device_size):
lowest_device_size = device["storage"]["total"]
lowest_device_id = device["id"]
+ lowest_device_name = device["name"]
if lowest_device_id is None:
self.skipTest(
"Didn't find suitable device for disablement on '%s' node." % (
@@ -260,15 +265,41 @@ class TestHeketiDeviceOperations(HeketiBaseClass):
# Need to disable device before removing
heketi_device_disable(
- self.heketi_client_node, self.heketi_server_url, lowest_device_id)
- self.addCleanup(heketi_device_enable, self.heketi_client_node,
- self.heketi_server_url, lowest_device_id)
+ self.heketi_client_node, self.heketi_server_url,
+ lowest_device_id)
+ if not delete_device:
+ self.addCleanup(heketi_device_enable, self.heketi_client_node,
+ self.heketi_server_url, lowest_device_id)
# Remove device from Heketi
- heketi_device_remove(
- self.heketi_client_node, self.heketi_server_url, lowest_device_id)
- self.addCleanup(heketi_device_disable, self.heketi_client_node,
- self.heketi_server_url, lowest_device_id)
+ try:
+ heketi_device_remove(
+ self.heketi_client_node, self.heketi_server_url,
+ lowest_device_id)
+ except Exception:
+ if delete_device:
+ self.addCleanup(heketi_device_enable, self.heketi_client_node,
+ self.heketi_server_url, lowest_device_id)
+ raise
+ if not delete_device:
+ self.addCleanup(heketi_device_disable, self.heketi_client_node,
+ self.heketi_server_url, lowest_device_id)
+
+ if delete_device:
+ try:
+ heketi_device_delete(
+ self.heketi_client_node, self.heketi_server_url,
+ lowest_device_id)
+ except Exception:
+ self.addCleanup(heketi_device_enable, self.heketi_client_node,
+ self.heketi_server_url, lowest_device_id)
+ self.addCleanup(heketi_device_disable, self.heketi_client_node,
+ self.heketi_server_url, lowest_device_id)
+ raise
+ self.addCleanup(
+ heketi_device_add,
+ self.heketi_client_node, self.heketi_server_url,
+ lowest_device_name, node_id)
# Create volume
vol_info = heketi_volume_create(self.heketi_client_node,
@@ -278,6 +309,9 @@ class TestHeketiDeviceOperations(HeketiBaseClass):
"Failed to create heketi volume of size %d" % vol_size))
self.addCleanup(self.delete_volumes, vol_info['id'])
+ if delete_device:
+ return
+
# Check that none of volume's bricks is present on the device
present = self.check_any_of_bricks_present_in_device(
vol_info['bricks'], lowest_device_id)
diff --git a/tests/functional/common/heketi/test_heketi_volume_operations.py b/tests/functional/common/heketi/test_heketi_volume_operations.py
index ac7df139..404d11cb 100644
--- a/tests/functional/common/heketi/test_heketi_volume_operations.py
+++ b/tests/functional/common/heketi/test_heketi_volume_operations.py
@@ -5,7 +5,6 @@ from cnslibs.common.heketi_ops import (heketi_volume_delete,
heketi_volume_create,
heketi_volume_expand,
heketi_volume_info,
- heketi_topology_info,
heketi_device_add,
heketi_device_enable,
heketi_device_disable,
@@ -229,98 +228,3 @@ class TestHeketiVolumeOperations(HeketiBaseClass):
self.assertNotEqual(
device_enable, False,
"Device %s could not be enabled" % device["id"])
-
- @skip("Blocked by BZ-1629889")
- def test_device_remove_basic_validation(self):
- """
- Test to create volume after a device removal and with new device added.
- """
-
- vol_info = heketi_volume_create(self.heketi_client_node,
- self.heketi_server_url,
- self.volume_size, json=True)
- self.assertTrue(vol_info, ("Failed to create heketi volume of size %s"
- % self.volume_size))
- self.addCleanup(self.volume_cleanup, vol_info['id'])
-
- self.assertEqual(vol_info['size'], self.volume_size,
- ("Failed to create volume with default options."
- "Expected Size: %s, Actual Size: %s"
- % (self.volume_size, vol_info['size'])))
-
- # 1. Device addition
- gluster_srvrs = self.gluster_servers
-
- device_name = (g.config["gluster_servers"][gluster_srvrs[0]]
- ["additional_devices"][0])
- manage_hostname = (g.config["gluster_servers"]
- [gluster_srvrs[0]]["manage"])
- # Now, get node id of corresponding hostname
- topo_info = heketi_topology_info(self.heketi_client_node,
- self.heketi_server_url,
- json=True)
-
- self.assertNotEqual(
- topo_info["clusters"][0]["nodes"], [],
- "Nodes don't exist, empty cluster")
-
- node_id = None
- for node in topo_info["clusters"][0]["nodes"]:
- if manage_hostname == node['hostnames']["manage"][0]:
- node_id = node["id"]
- break
- self.assertNotEqual(
- node_id, None,
- "No information about node_id for %s" % manage_hostname)
- self.add_device(device_name, node_id)
-
- # get other device id for deletion
- topo_info = heketi_topology_info(self.heketi_client_node,
- self.heketi_server_url,
- json=True)
-
- self.assertNotEqual(
- topo_info["clusters"][0]["nodes"], [],
- "No information about nodes")
-
- device_id_flag1 = False
- device_id_flag2 = False
-
- for node in topo_info["clusters"][0]["nodes"]:
- if node["id"] != node_id:
- continue
- self.assertNotEqual(
- node["devices"], [],
- "Device list empty for node %s" % node_id)
- for device in node["devices"]:
- device_id = device["id"]
- if device_name != device["name"]:
- device_id_flag1 = True
- else:
- self.addCleanup(self.detach_devices_attached, device_id)
- device_id_flag2 = True
- if device_id_flag1 and device_id_flag2:
- break
- break
-
- self.detach_devices_attached(device_id)
-
- # Check whether deleted device removed from topology info.
- topo_info = heketi_topology_info(self.heketi_client_node,
- self.heketi_server_url,
- json=True)
- match = False
- for device in topo_info["clusters"][0]["nodes"][0]["devices"]:
- if device_id == device["id"]:
- match = True
- break
- self.assertFalse(match, "Device:%s still present in topology"
- % device_id)
-
- # Volume creation after device update
- vol_info = heketi_volume_create(self.heketi_client_node,
- self.heketi_server_url,
- self.volume_size, json=True)
- self.assertTrue(vol_info, ("Failed to create heketi volume of size %s"
- % self.volume_size))
- self.addCleanup(self.volume_cleanup, vol_info['id'])