From 874dd8ccabd32bcf2d4cfb4a0be10db7ba1a565d Mon Sep 17 00:00:00 2001 From: Valerii Ponomarov Date: Wed, 2 Jan 2019 20:51:13 +0530 Subject: Properly skip TCs when 'additional gluster devices' not configured For the moment, we have 3 different test cases which use 'additional_devices' config option. All of them will fail in case of specific structure of config. So, make those test cases be smart enough to understand absence of such option data and skip test cases with useful info about it. Change-Id: Id31de7e20188041d2148edf37b3f8c95645c5e52 --- .../common/heketi/test_heketi_device_operations.py | 8 +++++-- .../heketi/test_volume_expansion_and_devices.py | 26 +++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/tests/functional/common/heketi/test_heketi_device_operations.py b/tests/functional/common/heketi/test_heketi_device_operations.py index 3fa90bc3..1c4b5457 100644 --- a/tests/functional/common/heketi/test_heketi_device_operations.py +++ b/tests/functional/common/heketi/test_heketi_device_operations.py @@ -178,8 +178,12 @@ class TestHeketiDeviceOperations(HeketiBaseClass): gluster_server_0 = g.config["gluster_servers"].values()[0] try: device_name = gluster_server_0["additional_devices"][0] - except IndexError: - self.skipTest("Additional disk is not specified for node.") + except (KeyError, IndexError): + self.skipTest( + "Additional disk is not specified for node with following " + "hostnames and IP addresses: %s, %s." % ( + gluster_server_0.get('manage', '?'), + gluster_server_0.get('storage', '?'))) manage_hostname = gluster_server_0["manage"] # Get node ID of the Gluster hostname diff --git a/tests/functional/common/heketi/test_volume_expansion_and_devices.py b/tests/functional/common/heketi/test_volume_expansion_and_devices.py index 05f39700..90574f61 100644 --- a/tests/functional/common/heketi/test_volume_expansion_and_devices.py +++ b/tests/functional/common/heketi/test_volume_expansion_and_devices.py @@ -320,6 +320,7 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiBaseClass): # Prepare first 3 nodes smallest_size = None + err_msg = '' for node_id in heketi_node_id_list[0:3]: node_info = heketi_ops.heketi_node_info( h_node, h_server_url, node_id, json=True) @@ -341,6 +342,7 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiBaseClass): h_node, h_server_url, device["id"]) # Gather info about additional devices + additional_device_name = None for gluster_server in self.gluster_servers: gluster_server_data = self.gluster_servers_info[gluster_server] g_manage = gluster_server_data["manage"] @@ -348,12 +350,23 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiBaseClass): if not (g_manage in node_info["hostnames"]["manage"] or g_storage in node_info["hostnames"]["storage"]): continue + additional_device_name = (( + gluster_server_data.get("additional_devices") or [''])[0]) + break + + if not additional_device_name: + err_msg += ("No 'additional_devices' are configured for " + "'%s' node, which has following hostnames and " + "IP addresses: %s.\n" % ( + node_id, + ', '.join(node_info["hostnames"]["manage"] + + node_info["hostnames"]["storage"]))) + continue - heketi_ops.heketi_device_add( - h_node, h_server_url, - gluster_server_data["additional_devices"][0], node_id) - additional_devices_attached.update( - {node_id: gluster_server_data["additional_devices"][0]}) + heketi_ops.heketi_device_add( + h_node, h_server_url, additional_device_name, node_id) + additional_devices_attached.update( + {node_id: additional_device_name}) # Schedule cleanup of the added devices for node_id in additional_devices_attached.keys(): @@ -368,6 +381,9 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiBaseClass): self.fail("Could not find ID for added device on " "'%s' node." % node_id) + if err_msg: + self.skipTest(err_msg) + # Temporary disable new devices self.disable_devices(additional_devices_attached) -- cgit