diff options
author | Apeksha D Khakharia <akhakhar@redhat.com> | 2018-02-05 11:14:21 +0530 |
---|---|---|
committer | Apeksha D Khakharia <akhakhar@redhat.com> | 2018-02-21 17:20:04 +0530 |
commit | 1aba0134455b846ffb3a9a4dd9b4ba622c6515ca (patch) | |
tree | d7c95e1a678a34eb07122b11574c3a90324d8eb3 /tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py | |
parent | 3ecdfb197aeb68665ff3264d8effe32af6066240 (diff) |
CNS: heketi_url change
Change-Id: I927166d4649a5318cea221219d471534bd258545
Signed-off-by: Apeksha D Khakharia <akhakhar@redhat.com>
Diffstat (limited to 'tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py')
-rw-r--r-- | tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py | 113 |
1 files changed, 96 insertions, 17 deletions
diff --git a/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py b/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py index 9ae0e987..0167573f 100644 --- a/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py +++ b/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py @@ -4,14 +4,20 @@ from cnslibs.common.dynamic_provisioning import ( create_storage_class_file, get_pvc_status, verify_pod_status_running) +from cnslibs.cns.cns_baseclass import ( + CnsBaseClass, + CnsSetupBaseClass) +from cnslibs.common.exceptions import ( + ConfigError, + ExecutionError) from cnslibs.common.openshift_ops import ( get_ocp_gluster_pod_names, - oc_rsh) -from cnslibs.cns.cns_baseclass import CnsBaseClass -from cnslibs.common.openshift_ops import ( oc_create, - oc_delete) + oc_delete, + oc_rsh) +from cnslibs.common.waiter import Waiter from glusto.core import Glusto as g +import unittest class TestDynamicProvisioningP0(CnsBaseClass): @@ -19,16 +25,22 @@ class TestDynamicProvisioningP0(CnsBaseClass): Class that contain P0 dynamic provisioning test cases for glusterfile volume ''' - def test_dynamic_provisioning_glusterfile(self): g.log.info("test_dynamic_provisioning_glusterfile") storage_class = self.cns_storage_class['storage_class1'] sc_name = storage_class['name'] pvc_name1 = "mongodb1" + cmd = ("oc get svc | grep heketi | grep -v endpoints " + "| awk '{print $2}'") + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( + cmd, self.ocp_master_node[0])) + heketi_cluster_ip = out.strip().split("\n")[0] + resturl = "http://%s:8080" % heketi_cluster_ip ret = create_storage_class_file( self.ocp_master_node[0], sc_name, - storage_class['resturl'], + resturl, storage_class['provisioner'], restuser=storage_class['restuser'], secretnamespace=storage_class['secretnamespace'], @@ -44,7 +56,7 @@ class TestDynamicProvisioningP0(CnsBaseClass): ret = create_secret_file(self.ocp_master_node[0], secret['secret_name'], secret['namespace'], - secret['data_key'], + self.secret_data_key, secret['type']) self.assertTrue(ret, "creation of heketi-secret file failed") oc_create(self.ocp_master_node[0], @@ -77,7 +89,6 @@ class TestDynamicProvisioningP0(CnsBaseClass): oc_delete(self.ocp_master_node[0], 'pod', pod_name) ret = verify_pod_status_running(self.ocp_master_node[0], pvc_name1) - ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") self.assertTrue(ret, "verify mongodb pod status as running failed") cmd = ("oc get pods | grep %s | grep -v deploy " "| awk {'print $1'}") % pvc_name1 @@ -94,15 +105,23 @@ class TestDynamicProvisioningP0(CnsBaseClass): 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_glusterfile_heketipod_failure(self): g.log.info("test_dynamic_provisioning_glusterfile_Heketipod_Failure") storage_class = self.cns_storage_class['storage_class1'] sc_name = storage_class['name'] pvc_name2 = "mongodb2" + cmd = ("oc get svc | grep heketi | grep -v endpoints " + "| awk '{print $2}'") + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( + cmd, self.ocp_master_node[0])) + heketi_cluster_ip = out.strip().split("\n")[0] + resturl = "http://%s:8080" % heketi_cluster_ip ret = create_storage_class_file( self.ocp_master_node[0], sc_name, - storage_class['resturl'], + resturl, storage_class['provisioner'], restuser=storage_class['restuser'], secretnamespace=storage_class['secretnamespace'], @@ -118,7 +137,7 @@ class TestDynamicProvisioningP0(CnsBaseClass): ret = create_secret_file(self.ocp_master_node[0], secret['secret_name'], secret['namespace'], - secret['data_key'], + self.secret_data_key, secret['type']) self.assertTrue(ret, "creation of heketi-secret file failed") oc_create(self.ocp_master_node[0], @@ -172,15 +191,57 @@ class TestDynamicProvisioningP0(CnsBaseClass): cmd, self.ocp_master_node[0])) ret = verify_pod_status_running(self.ocp_master_node[0], "heketi") self.assertTrue(ret, "verify heketi pod status as running failed") - ret, status = get_pvc_status(self.ocp_master_node[0], + cmd = ("oc get svc | grep heketi | grep -v endpoints " + "| awk '{print $2}'") + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( + cmd, self.ocp_master_node[0])) + heketi_cluster_new_ip = out.strip().split("\n")[0] + if heketi_cluster_new_ip != heketi_cluster_ip: + oc_delete(self.ocp_master_node[0], 'sc', sc_name) + resturl = "http://%s:8080" % heketi_cluster_ip + ret = create_storage_class_file( + self.ocp_master_node[0], + sc_name, + resturl, + storage_class['provisioner'], + restuser=storage_class['restuser'], + secretnamespace=storage_class['secretnamespace'], + secretname=storage_class['secretname']) + self.assertTrue(ret, "creation of storage-class file failed") + provisioner_name = storage_class['provisioner'].split("/") + file_path = "/%s-%s-storage-class.yaml" % ( + sc_name, provisioner_name[1]) + oc_create(self.ocp_master_node[0], file_path) + for w in Waiter(600, 30): + ret, status = get_pvc_status(self.ocp_master_node[0], pvc_name3) - self.assertTrue(ret, "failed to get pvc status of %s" % pvc_name3) + self.assertTrue(ret, "failed to get pvc status of %s" % ( + pvc_name3)) + if status != "Bound": + g.log.info("pvc status of %s is not in Bound state," + " sleeping for 30 sec" % pvc_name3) + continue + else: + break + if w.expired: + error_msg = ("exceeded timeout 300 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" % pvc_name3) + "is not in Bound state, its state is %s" % ( + pvc_name3, status)) ret = verify_pod_status_running(self.ocp_master_node[0], pvc_name3) self.assertTrue(ret, "verify %s pod status " "as running failed" % pvc_name3) + cmd = ("oc get pods | grep %s | grep -v deploy " + "|awk {'print $1'}") % pvc_name3 + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( + cmd, self.ocp_master_node[0])) + pod_name = out.strip().split("\n")[0] cmd = ("dd if=/dev/urandom of=/var/lib/mongodb/data/file " "bs=1K count=100") ret, out, err = oc_rsh(self.ocp_master_node[0], pod_name, cmd) @@ -192,10 +253,17 @@ class TestDynamicProvisioningP0(CnsBaseClass): storage_class = self.cns_storage_class['storage_class1'] sc_name = storage_class['name'] pvc_name4 = "mongodb4" + cmd = ("oc get svc | grep heketi | grep -v endpoints " + "| awk '{print $2}'") + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( + cmd, self.ocp_master_node[0])) + heketi_cluster_ip = out.strip().split("\n")[0] + resturl = "http://%s:8080" % heketi_cluster_ip ret = create_storage_class_file( self.ocp_master_node[0], sc_name, - storage_class['resturl'], + resturl, storage_class['provisioner'], restuser=storage_class['restuser'], secretnamespace=storage_class['secretnamespace'], @@ -211,7 +279,7 @@ class TestDynamicProvisioningP0(CnsBaseClass): ret = create_secret_file(self.ocp_master_node[0], secret['secret_name'], secret['namespace'], - secret['data_key'], + self.secret_data_key, secret['type']) self.assertTrue(ret, "creation of heketi-secret file failed") oc_create(self.ocp_master_node[0], @@ -245,7 +313,7 @@ class TestDynamicProvisioningP0(CnsBaseClass): g.log.info("gluster_pod_list - %s" % gluster_pod_list) gluster_pod_name = gluster_pod_list[0] cmd = ("oc get pods -o wide | grep %s | grep -v deploy " - "|awk '{print $7}'") % gluster_pod_name + "| awk '{print $7}'") % gluster_pod_name ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( cmd, self.ocp_master_node[0])) @@ -254,10 +322,21 @@ class TestDynamicProvisioningP0(CnsBaseClass): cmd = ("oc get pods -o wide | grep glusterfs | grep %s | " "grep -v Terminating | awk '{print $1}'") % ( gluster_pod_node_name) - ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + for w in Waiter(600, 30): + ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") + new_gluster_pod_name = out.strip().split("\n")[0].strip() + if ret == 0 and not new_gluster_pod_name: + continue + else: + break + if w.expired: + error_msg = "exceeded timeout, new gluster pod not created" + g.log.error(error_msg) + raise ExecutionError(error_msg) self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( cmd, self.ocp_master_node[0])) new_gluster_pod_name = out.strip().split("\n")[0].strip() + g.log.info("new gluster pod name is %s" % new_gluster_pod_name) ret = verify_pod_status_running(self.ocp_master_node[0], new_gluster_pod_name) self.assertTrue(ret, "verify %s pod status as running " |