3 from robot.libraries.BuiltIn import BuiltIn
\r
4 from robot.api import logger
\r
5 from decorators_for_robot_functionalities import *
\r
6 from test_constants import *
\r
8 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common'))
\r
9 import common_utils # noqa
\r
11 BuiltIn().import_library('pabot.PabotLib')
\r
12 pabot = BuiltIn().get_library_instance('pabot.PabotLib')
\r
14 execute = BuiltIn().get_library_instance('execute_command')
\r
15 stack_infos = BuiltIn().get_library_instance('stack_infos')
\r
19 def tc_008_storage_check():
\r
20 steps = ['step1_read_write_pv',
\r
21 'step2_check_pv_retaining',
\r
22 'step3_read_write_pv']
\r
23 BuiltIn().run_keyword("tc_008_storage_check.Setup")
\r
24 common_utils.keyword_runner(steps)
\r
28 pabot.acquire_lock("pv_test_ip")
\r
32 def step1_read_write_pv():
\r
33 read_write_pv("step1.log")
\r
36 @pabot_lock("health_check_2")
\r
37 def step2_check_pv_retaining():
\r
38 common_utils.helm_delete("storage-test")
\r
39 common_utils.check_kubernetes_object(kube_object=pv_test_pod,
\r
40 tester_function=common_utils.test_kubernetes_object_not_available,
\r
42 _install_storage_test_helm_chart()
\r
43 pabot.release_lock("pv_test_ip")
\r
46 def step3_read_write_pv():
\r
47 read_write_pv("step3.log")
\r
50 def read_write_pv(file_name):
\r
51 pod_list = execute.execute_unix_command("kubectl get pod | grep pv-test-deployment | grep -i running | "
\r
54 # write log on persistent storage from pods
\r
55 for pod in pod_list.split("\n"):
\r
57 logger.info("POD NAME: " + pod)
\r
58 execute.execute_unix_command(
\r
59 "kubectl exec " + pod + " -- sh -c 'echo test_log_" + pod + " >> /usr/share/storage_test/" + file_name +
\r
62 # check if logs can be reached from containers
\r
63 for pod in pod_list.split("\n"):
\r
65 log = execute.execute_unix_command(
\r
66 "kubectl exec " + pod + " -- sh -c 'cat /usr/share/storage_test/" + file_name + "'")
\r
67 for pod_log in pod_list.split("\n"):
\r
68 pod_log = pod_log.strip()
\r
69 if pod_log not in log:
\r
70 raise Exception("Log entry: test_log_" + pod_log + " is not found in log file")
\r
73 @pabot_lock("health_check_2")
\r
74 def install_charts():
\r
75 common_utils.helm_install(chart_name="default/persistentvolume-claim", release_name="pvc")
\r
76 common_utils.wait_if_pressure()
\r
77 common_utils.check_kubernetes_object(kube_object=pv_test_pvc,
\r
78 tester_function=common_utils.test_kubernetes_object_available,
\r
79 additional_filter="Bound", timeout=90)
\r
80 _install_storage_test_helm_chart()
\r
82 global pv_name # pylint: disable=global-statement
\r
83 pv_name = execute.execute_unix_command("kubectl get pvc | grep pvc- | awk {'print$3'}")
\r
86 def _install_storage_test_helm_chart():
\r
87 if stack_infos.get_worker_nodes():
\r
88 common_utils.helm_install(chart_name="default/storage-test-worker", release_name="storage-test")
\r
90 common_utils.helm_install(chart_name="default/storage-test-oam", release_name="storage-test")
\r
91 common_utils.wait_if_pressure()
\r
92 common_utils.check_kubernetes_object(kube_object=pv_test_pod,
\r
93 tester_function=common_utils.test_kubernetes_object_available,
\r
94 additional_filter="Running", timeout=60)
\r