def main(): print("End-to-end test main start") # If this is a PUSH, the test needs to wait for the new containers to be # built/pushed. In this case, the workflow will set /tmp/sleep_duration.txt to # the number of seconds to sleep. # If this is a MANUALLY triggerd or a PULL-REQUEST, no new containers will # be built/pushed, the workflows will not set /tmp/sleep_duration.txt and # this test will execute immediately. shared_test_code.initial_sleep() # Update Helm and install this version's chart os.system("helm repo update") # Get version of akri to test test_version = shared_test_code.get_test_version() print("Testing version: {}".format(test_version)) shared_test_code.major_version = "v" + test_version.split(".")[0] print("Testing major version: {}".format(shared_test_code.major_version)) helm_chart_location = shared_test_code.get_helm_chart_location() print("Get Akri Helm chart: {}".format(helm_chart_location)) cri_args = shared_test_code.get_cri_args() print("Providing Akri Helm chart with CRI args: {}".format(cri_args)) extra_helm_args = shared_test_code.get_extra_helm_args() print("Providing Akri Helm chart with extra helm args: {}".format( extra_helm_args)) helm_install_command = "helm install akri {} --set debugEcho.enabled=true --set debugEcho.name={} --set debugEcho.shared=false --set agent.allowDebugEcho=true {} {} --debug ".format( helm_chart_location, shared_test_code.DEBUG_ECHO_NAME, cri_args, extra_helm_args) print("Helm command: {}".format(helm_install_command)) os.system(helm_install_command) try: res = do_test() except Exception as e: print(e) res = False finally: # Best effort cleanup work try: # Save Agent and controller logs shared_test_code.save_agent_and_controller_logs() finally: # Delete akri and check that controller and Agent pods deleted os.system("helm delete akri") if res: # Only test cleanup if the test has succeeded up to now if not shared_test_code.check_akri_state(0, 0, 0, 0, 0, 0): print( "Akri not running in expected state after helm delete") raise RuntimeError("Scenario Failed") if not res: raise RuntimeError("Scenario Failed")
def main(): print("End-to-end test using validating webhook") # If this is a PUSH, the test needs to wait for the new containers to be # built/pushed. In this case, the workflow will set /tmp/sleep_duration.txt to # the number of seconds to sleep. # If this is a MANUALLY triggerd or a PULL-REQUEST, no new containers will # be built/pushed, the workflows will not set /tmp/sleep_duration.txt and # this test will execute immediately. shared_test_code.initial_sleep() # Webhook expects TLS-containing Secret (of the same name) mounted as a volume kubeconfig_path = shared_test_code.get_kubeconfig_path() print("Loading k8s config: {}".format(kubeconfig_path)) config.load_kube_config(config_file=kubeconfig_path) print("Creating Secret: {namespace}/{name}".format(namespace=NAMESPACE, name=WEBHOOK_NAME)) client.CoreV1Api().create_namespaced_secret(body=SECRET, namespace=NAMESPACE) # Update Helm and install this version's chart os.system("helm repo update") # Get version of akri to test test_version = shared_test_code.get_test_version() print("Testing version: {}".format(test_version)) shared_test_code.major_version = "v" + test_version.split(".")[0] print("Testing major version: {}".format(shared_test_code.major_version)) helm_chart_location = shared_test_code.get_helm_chart_location() print("Get Akri Helm chart: {}".format(helm_chart_location)) k8s_distro_arg = shared_test_code.get_k8s_distro_arg() print("Providing Akri Helm chart with K8s distro arg: {}".format( k8s_distro_arg)) extra_helm_args = shared_test_code.get_extra_helm_args() print("Providing Akri Helm chart with extra helm args: {}".format( extra_helm_args)) helm_install_command = "\ helm install {chart_name} {location} \ --namespace={namespace} \ --set=agent.full=true \ --set=agent.allowDebugEcho=true \ {webhook_config} \ {k8s_distro_arg} \ {helm_args} \ --debug\ ".format(chart_name=HELM_CHART_NAME, location=helm_chart_location, namespace=NAMESPACE, webhook_config=get_webhook_helm_config(), k8s_distro_arg=k8s_distro_arg, helm_args=extra_helm_args) print("Helm command: {}".format(helm_install_command)) os.system(helm_install_command) res = False try: res = do_test() except Exception as e: print(e) res = False finally: # Best effort cleanup work try: # Save Agent and controller logs shared_test_code.save_agent_and_controller_logs( namespace=NAMESPACE) finally: # Delete akri and check that controller and Agent pods deleted os.system("\ helm delete {chart_name} \ --namespace={namespace}\ ".format( chart_name=HELM_CHART_NAME, namespace=NAMESPACE, )) # Delete Webhook Secret client.CoreV1Api().delete_namespaced_secret(name=WEBHOOK_NAME, namespace=NAMESPACE) if res: # Only test cleanup if the test has succeeded up to now if not shared_test_code.check_akri_state( 0, 0, 0, 0, 0, 0, namespace=NAMESPACE): print( "Akri not running in expected state after helm delete") raise RuntimeError("Scenario Failed") if not res: raise RuntimeError("Scenario Failed")
def main(): print("End-to-end test main start") # If this is a PUSH, the test needs to wait for the new containers to be # built/pushed. In this case, the workflow will set /tmp/sleep_duration.txt to # the number of seconds to sleep. # If this is a MANUALLY triggerd or a PULL-REQUEST, no new containers will # be built/pushed, the workflows will not set /tmp/sleep_duration.txt and # this test will execute immediately. shared_test_code.initial_sleep() # Update Helm and install this version's chart os.system("helm repo update") # Get version of akri to test test_version = shared_test_code.get_test_version() print("Testing version: {}".format(test_version)) shared_test_code.major_version = "v" + test_version.split(".")[0] print("Testing major version: {}".format(shared_test_code.major_version)) helm_chart_location = shared_test_code.get_helm_chart_location() print("Get Akri Helm chart: {}".format(helm_chart_location)) cri_args = shared_test_code.get_cri_args() print("Providing Akri Helm chart with CRI args: {}".format(cri_args)) extra_helm_args = shared_test_code.get_extra_helm_args() print("Providing Akri Helm chart with extra helm args: {}".format( extra_helm_args)) helm_install_command = "\ helm install akri {location} \ --set agent.full=true \ --set debugEcho.configuration.enabled=true \ --set debugEcho.configuration.name={config_name} \ --set debugEcho.configuration.shared=false \ --set debugEcho.configuration.discoveryDetails.descriptions[0]='{description_prefix}0' \ --set debugEcho.configuration.discoveryDetails.descriptions[1]='{description_prefix}1' \ --set debugEcho.configuration.brokerProperties.{res_width_key}={res_width_val} \ --set debugEcho.configuration.brokerProperties.{res_height_key}={res_height_val} \ --set agent.allowDebugEcho=true \ {cri_args} \ {helm_args} \ --debug \ ".format( location=helm_chart_location, config_name=shared_test_code.DEBUG_ECHO_NAME, description_prefix=shared_test_code.DEBUG_ECHO_DESCRIPTIONS_PREFIX, res_width_key=shared_test_code.PROPERTIES_RESOLUTION_WIDTH_KEY, res_width_val=shared_test_code.PROPERTIES_RESOLUTION_WIDTH_VALUE, res_height_key=shared_test_code.PROPERTIES_RESOLUTION_HEIGHT_KEY, res_height_val=shared_test_code.PROPERTIES_RESOLUTION_HEIGHT_VALUE, cri_args=cri_args, helm_args=extra_helm_args) print("Helm command: {}".format(helm_install_command)) os.system(helm_install_command) try: res = do_test() except Exception as e: print(e) res = False finally: # Best effort cleanup work try: # Save Agent and controller logs shared_test_code.save_agent_and_controller_logs() finally: # Delete akri and check that controller and Agent pods deleted os.system("helm delete akri") if res: # Only test cleanup if the test has succeeded up to now if not shared_test_code.check_akri_state(0, 0, 0, 0, 0, 0): print( "Akri not running in expected state after helm delete") raise RuntimeError("Scenario Failed") if not res: raise RuntimeError("Scenario Failed")