robot tcs, test charts, robot container added
[ta/cloudtaf.git] / testcases / HPA_check / Custom_HPA_check.py
diff --git a/testcases/HPA_check/Custom_HPA_check.py b/testcases/HPA_check/Custom_HPA_check.py
new file mode 100644 (file)
index 0000000..7da09bc
--- /dev/null
@@ -0,0 +1,67 @@
+import sys
+import os
+from robot.libraries.BuiltIn import BuiltIn
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common'))
+from decorators_for_robot_functionalities import *  # noqa
+import common_utils  # noqa
+from test_constants import *  # noqa
+
+
+execute = BuiltIn().get_library_instance('execute_command')
+stack_infos = BuiltIn().get_library_instance('stack_infos')
+
+
+def Custom_HPA_check():
+    steps = ['step1_check_initial_replica_count_custom',
+             'step2_check_scale_out_custom',
+             'step3_check_scale_in_custom']
+    BuiltIn().run_keyword("Custom_HPA_check.setup")
+    common_utils.keyword_runner(steps)
+
+
+GET_POD_REPLICA_COUNT = "kubectl get hpa --namespace=kube-system | grep podinfo | awk '{print $6}'"
+
+
+def setup():
+    # flags = ["--horizontal-pod-autoscaler-downscale-stabilization=10s", "--horizontal-pod-autoscaler-sync-period=10s"]
+    # common_utils.modify_static_pod_config(common_utils.add_flag_to_command, "cm.yml", flags)
+    common_utils.helm_install(chart_name="default/custom-metrics", release_name="podinfo",
+                              values="registry_url={reg_url}".format(reg_url=reg))
+    common_utils.check_kubernetes_object(kube_object=podinfo_pod,
+                                         tester_function=common_utils.test_kubernetes_object_available,
+                                         additional_filter="Running",
+                                         timeout=90)
+
+
+def step1_check_initial_replica_count_custom():
+    expected_initial_replica_num = 2
+    timeout = 1000
+    check_scaling(expected_initial_replica_num, timeout)
+
+
+def step2_check_scale_out_custom():
+    common_utils.helm_install(chart_name="default/http-traffic-gen", release_name="http-traffic-gen",
+                              values="registry_url={reg_url}".format(reg_url=reg))
+    common_utils.check_kubernetes_object(kube_object=http_traffic_gen,
+                                         tester_function=common_utils.test_kubernetes_object_available,
+                                         additional_filter="Running",
+                                         timeout=45)
+    expected_replicas = 3
+    timeout = 1000
+    check_scaling(expected_replicas, timeout)
+
+
+def step3_check_scale_in_custom():
+    expected_replicas = 2
+    timeout = 1000
+    check_scaling(expected_replicas, timeout)
+
+
+@robot_log
+def check_scaling(expected_replicas, timeout=60):
+    for _ in range(timeout):
+        BuiltIn().sleep('1s')
+        actual_replicas = int(execute.execute_unix_command(GET_POD_REPLICA_COUNT))
+        if actual_replicas == expected_replicas:
+            break
+    BuiltIn().should_be_equal(actual_replicas, expected_replicas)