summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun <arukumar@redhat.com>2019-11-15 11:53:37 +0530
committervponomar <vponomar@redhat.com>2019-12-11 12:00:16 +0000
commite3d38114d334fa99f574a37ee8b5af7f60291be7 (patch)
treee67d32c408cc81d875f32d62bff3227ef4aeff79
parent43f3d2c2b39db3b492f10e88724be71cf47f9cbb (diff)
Add TC creating and deleting bunch of PVCs during network failure
Create network side failure during creation and deletion of the PVC's Network side failure is introduced by opening and closing the ports related to gluster-blockd Change-Id: I0e7d97f0bf4a786f9ebb4cb5ccba5e5fd5812fc6
-rw-r--r--tests/functional/gluster_stability/test_gluster_block_stability.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/functional/gluster_stability/test_gluster_block_stability.py b/tests/functional/gluster_stability/test_gluster_block_stability.py
index d62c8c2..8f31fd2 100644
--- a/tests/functional/gluster_stability/test_gluster_block_stability.py
+++ b/tests/functional/gluster_stability/test_gluster_block_stability.py
@@ -1463,3 +1463,53 @@ class TestGlusterBlockStability(GlusterBlockBaseClass):
"Failed to get block list from bhv %s" % bhv_id)
for blockvol in gluster_vol_info:
self.assertNotIn("blockvol_", blockvol)
+
+ def test_create_and_delete_block_pvcs_with_network_failure(self):
+ """Create and delete volumes after blocking the port 24010 on 51% of
+ the nodes"""
+ chain, pvc_amount = 'OS_FIREWALL_ALLOW', 5
+ rules = '-p tcp -m state --state NEW -m tcp --dport 24010 -j ACCEPT'
+
+ # Create 5 PVC's, get PV names and volume ids
+ sc_name = self.create_storage_class(hacount=len(self.gluster_servers))
+ pvc_names = self.create_and_wait_for_pvcs(
+ sc_name=sc_name, pvc_amount=pvc_amount)
+ vol_details = self.get_vol_id_and_vol_names_from_pvc_names(pvc_names)
+ vol_names = [vol_name['gluster_vol'] for vol_name in vol_details]
+ vol_ids = [vol_id['heketi_vol'] for vol_id in vol_details]
+
+ # Get the time to collect logs
+ since_time = cmd_run(
+ 'date -u --rfc-3339=ns| cut -d "+" -f 1', self.node).replace(
+ " ", "T") + "Z"
+
+ # Close the port 24010 on 51% of the nodes
+ for i in range(len(self.gluster_servers) // 2 + 1):
+ node_delete_iptables_rules(self.gluster_servers[i], chain, rules)
+ self.addCleanup(
+ node_add_iptables_rules, self.gluster_servers[i], chain, rules)
+
+ # Create and delete 5 PVC's
+ pvc_names_for_creations = self.create_pvcs_not_waiting(
+ pvc_amount=pvc_amount, sc_name=sc_name)
+ for pvc_name in pvc_names:
+ oc_delete(self.node, 'pvc', pvc_name)
+ self.addCleanup(
+ wait_for_resource_absence, self.node, 'pvc', pvc_name)
+
+ # Check errors in heketi pod logs and get pending creations
+ self.check_errors_in_heketi_pod_network_failure_after_deletion(
+ since_time, vol_names)
+
+ # Open the port 24010, wait for PVC's to get bound
+ for i in range(len(self.gluster_servers) // 2 + 1):
+ node_add_iptables_rules(self.gluster_servers[i], chain, rules)
+ wait_for_pvcs_be_bound(self.node, pvc_names_for_creations, timeout=300)
+
+ # Verify volume deletion
+ blockvolume_list = heketi_blockvolume_list(
+ self.heketi_client_node, self.heketi_server_url)
+ msg = "Unexpectedly volume '%s' exists in the volume list %s"
+ for vol_id in vol_ids:
+ self.assertNotIn(
+ vol_id, blockvolume_list, msg % (vol_id, blockvolume_list))