robot tcs, test charts, robot container added
[ta/cloudtaf.git] / testcases / basic_func_tests / tc_008_storage_check.py
diff --git a/testcases/basic_func_tests/tc_008_storage_check.py b/testcases/basic_func_tests/tc_008_storage_check.py
new file mode 100644 (file)
index 0000000..90a79c8
--- /dev/null
@@ -0,0 +1,94 @@
+import sys\r
+import os\r
+from robot.libraries.BuiltIn import BuiltIn\r
+from robot.api import logger\r
+from decorators_for_robot_functionalities import *\r
+from test_constants import *\r
+\r
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common'))\r
+import common_utils  # noqa\r
+\r
+BuiltIn().import_library('pabot.PabotLib')\r
+pabot = BuiltIn().get_library_instance('pabot.PabotLib')\r
+\r
+execute = BuiltIn().get_library_instance('execute_command')\r
+stack_infos = BuiltIn().get_library_instance('stack_infos')\r
+pv_name = ""\r
+\r
+\r
+def tc_008_storage_check():\r
+    steps = ['step1_read_write_pv',\r
+             'step2_check_pv_retaining',\r
+             'step3_read_write_pv']\r
+    BuiltIn().run_keyword("tc_008_storage_check.Setup")\r
+    common_utils.keyword_runner(steps)\r
+\r
+\r
+def Setup():\r
+    pabot.acquire_lock("pv_test_ip")\r
+    install_charts()\r
+\r
+\r
+def step1_read_write_pv():\r
+    read_write_pv("step1.log")\r
+\r
+\r
+@pabot_lock("health_check_2")\r
+def step2_check_pv_retaining():\r
+    common_utils.helm_delete("storage-test")\r
+    common_utils.check_kubernetes_object(kube_object=pv_test_pod,\r
+                                         tester_function=common_utils.test_kubernetes_object_not_available,\r
+                                         timeout=90)\r
+    _install_storage_test_helm_chart()\r
+    pabot.release_lock("pv_test_ip")\r
+\r
+\r
+def step3_read_write_pv():\r
+    read_write_pv("step3.log")\r
+\r
+\r
+def read_write_pv(file_name):\r
+    pod_list = execute.execute_unix_command("kubectl get pod | grep pv-test-deployment | grep -i running | "\r
+                                            "awk '{print $1}'")\r
+\r
+    # write log on persistent storage from pods\r
+    for pod in pod_list.split("\n"):\r
+        pod = pod.strip()\r
+        logger.info("POD NAME: " + pod)\r
+        execute.execute_unix_command(\r
+            "kubectl exec " + pod + " -- sh -c 'echo test_log_" + pod + " >> /usr/share/storage_test/" + file_name +\r
+            "'")\r
+\r
+    # check if logs can be reached from containers\r
+    for pod in pod_list.split("\n"):\r
+        pod = pod.strip()\r
+        log = execute.execute_unix_command(\r
+            "kubectl exec " + pod + " -- sh -c 'cat /usr/share/storage_test/" + file_name + "'")\r
+        for pod_log in pod_list.split("\n"):\r
+            pod_log = pod_log.strip()\r
+            if pod_log not in log:\r
+                raise Exception("Log entry: test_log_" + pod_log + " is not found in log file")\r
+\r
+\r
+@pabot_lock("health_check_2")\r
+def install_charts():\r
+    common_utils.helm_install(chart_name="default/persistentvolume-claim", release_name="pvc")\r
+    common_utils.wait_if_pressure()\r
+    common_utils.check_kubernetes_object(kube_object=pv_test_pvc,\r
+                                         tester_function=common_utils.test_kubernetes_object_available,\r
+                                         additional_filter="Bound", timeout=90)\r
+    _install_storage_test_helm_chart()\r
+\r
+    global pv_name  # pylint: disable=global-statement\r
+    pv_name = execute.execute_unix_command("kubectl get pvc | grep pvc- | awk {'print$3'}")\r
+\r
+\r
+def _install_storage_test_helm_chart():\r
+    if stack_infos.get_worker_nodes():\r
+        common_utils.helm_install(chart_name="default/storage-test-worker", release_name="storage-test")\r
+    else:\r
+        common_utils.helm_install(chart_name="default/storage-test-oam", release_name="storage-test")\r
+    common_utils.wait_if_pressure()\r
+    common_utils.check_kubernetes_object(kube_object=pv_test_pod,\r
+                                         tester_function=common_utils.test_kubernetes_object_available,\r
+                                         additional_filter="Running", timeout=60)\r