summaryrefslogtreecommitdiffstats
path: root/tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py')
-rw-r--r--tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py57
1 files changed, 38 insertions, 19 deletions
diff --git a/tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py b/tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py
index 8db0b01d..f756a759 100644
--- a/tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py
+++ b/tests/functional/common/provisioning/test_dynamic_provisioning_block_p0_cases.py
@@ -5,19 +5,17 @@ from cnslibs.common.dynamic_provisioning import (
get_pvc_status,
verify_pod_status_running)
from cnslibs.cns.cns_baseclass import CnsGlusterBlockBaseClass
-from cnslibs.common.exceptions import (
- ConfigError,
- ExecutionError)
+from cnslibs.common.exceptions import ExecutionError
from cnslibs.common.heketi_ops import (
export_heketi_cli_server)
from cnslibs.common.openshift_ops import (
get_ocp_gluster_pod_names,
oc_create,
oc_delete,
- oc_rsh)
+ oc_rsh,
+ wait_for_resource_absence)
from cnslibs.common.waiter import Waiter
from glusto.core import Glusto as g
-import unittest
class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
@@ -135,7 +133,6 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
self.assertEqual(ret, 0, "failed to execute command %s on %s" % (
cmd, self.ocp_master_node[0]))
- @unittest.skip("skiping heketi-pod failure testcase")
def test_dynamic_provisioning_glusterblock_heketipod_failure(self):
g.log.info("test_dynamic_provisioning_glusterblock_Heketipod_Failure")
storage_class = self.cns_storage_class['storage_class2']
@@ -189,6 +186,8 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
"/%s.yaml" % secret['secret_name'])
self.addCleanup(oc_delete, self.ocp_master_node[0], 'secret',
secret['secret_name'])
+
+ # Create App pod #1 and write data to it
ret = create_mongodb_pod(self.ocp_master_node[0],
pvc_name2, 10, sc_name)
self.assertTrue(ret, "creation of mongodb pod failed")
@@ -198,8 +197,8 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
pvc_name2)
self.addCleanup(oc_delete, self.ocp_master_node[0], 'dc',
pvc_name2)
- ret = verify_pod_status_running(self.ocp_master_node[0],
- pvc_name2)
+ ret = verify_pod_status_running(
+ self.ocp_master_node[0], pvc_name2, wait_step=5, timeout=300)
self.assertTrue(ret, "verify mongodb pod status as running failed")
cmd = ("oc get pods | grep %s | grep -v deploy "
"| awk {'print $1'}") % pvc_name2
@@ -212,9 +211,23 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
ret, out, err = oc_rsh(self.ocp_master_node[0], pod_name, cmd)
self.assertEqual(ret, 0, "failed to execute command %s on %s" % (
cmd, self.ocp_master_node[0]))
- oc_delete(self.ocp_master_node[0], 'dc', "heketi")
- oc_delete(self.ocp_master_node[0], 'service', "heketi")
- oc_delete(self.ocp_master_node[0], 'route', "heketi")
+
+ # Remove Heketi pod
+ heketi_down_cmd = "oc scale --replicas=0 dc/%s --namespace %s" % (
+ self.heketi_dc_name, self.cns_project_name)
+ heketi_up_cmd = "oc scale --replicas=1 dc/%s --namespace %s" % (
+ self.heketi_dc_name, self.cns_project_name)
+ self.addCleanup(g.run, self.ocp_master_node[0], heketi_up_cmd, "root")
+ ret, out, err = g.run(self.ocp_master_node[0], heketi_down_cmd, "root")
+
+ get_heketi_podname_cmd = (
+ "oc get pods --all-namespaces -o=custom-columns=:.metadata.name "
+ "--no-headers=true "
+ "--selector deploymentconfig=%s" % self.heketi_dc_name)
+ ret, out, err = g.run(self.ocp_master_node[0], get_heketi_podname_cmd)
+ wait_for_resource_absence(self.ocp_master_node[0], 'pod', out.strip())
+
+ # Create App pod #2
pvc_name3 = "mongodb3-block"
ret = create_mongodb_pod(self.ocp_master_node[0],
pvc_name3, 10, sc_name)
@@ -230,12 +243,18 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
self.assertTrue(ret, "failed to get pvc status of %s" % pvc_name3)
self.assertEqual(status, "Pending", "pvc status of "
"%s is not in Pending state" % pvc_name3)
- cmd = "oc process heketi | oc create -f -"
- ret, out, err = g.run(self.ocp_master_node[0], cmd, "root")
+
+ # Bring Heketi pod back
+ ret, out, err = g.run(self.ocp_master_node[0], heketi_up_cmd, "root")
self.assertEqual(ret, 0, "failed to execute command %s on %s" % (
- cmd, self.ocp_master_node[0]))
- ret = verify_pod_status_running(self.ocp_master_node[0], "heketi")
+ heketi_up_cmd, self.ocp_master_node[0]))
+
+ ret, out, err = g.run(self.ocp_master_node[0], get_heketi_podname_cmd)
+ ret = verify_pod_status_running(
+ self.ocp_master_node[0], out.strip(), wait_step=5, timeout=120)
self.assertTrue(ret, "verify heketi pod status as running failed")
+
+ # Verify App pod #2
cmd = ("oc get svc %s "
"-o=custom-columns=:.spec.clusterIP" % self.heketi_service_name)
ret, out, err = g.run(self.ocp_master_node[0], cmd, "root")
@@ -270,15 +289,15 @@ class TestDynamicProvisioningBlockP0(CnsGlusterBlockBaseClass):
else:
break
if w.expired:
- error_msg = ("exceeded timeout 300 sec, pvc %s not in"
- " Bound state" % pvc_name3)
+ error_msg = ("exceeded timeout 600 sec, pvc %s not in"
+ " Bound state" % pvc_name3)
g.log.error(error_msg)
raise ExecutionError(error_msg)
self.assertEqual(status, "Bound", "pvc status of %s "
"is not in Bound state, its state is %s" % (
pvc_name3, status))
- ret = verify_pod_status_running(self.ocp_master_node[0],
- pvc_name3)
+ ret = verify_pod_status_running(
+ self.ocp_master_node[0], pvc_name3, wait_step=5, timeout=300)
self.assertTrue(ret, "verify %s pod status as "
"running failed" % pvc_name3)
cmd = ("oc get pods | grep %s | grep -v deploy "