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