github.com/kata-containers/tests@v0.0.0-20240307153542-772105b56064/integration/kubernetes/k8s-nginx-connectivity.bats (about)

     1  #!/usr/bin/env bats
     2  #
     3  # Copyright (c) 2018 Intel Corporation
     4  #
     5  # SPDX-License-Identifier: Apache-2.0
     6  #
     7  
     8  load "${BATS_TEST_DIRNAME}/../../.ci/lib.sh"
     9  load "${BATS_TEST_DIRNAME}/tests_common.sh"
    10  
    11  setup() {
    12  	nginx_version=$(get_test_version "docker_images.nginx.version")
    13  	nginx_image="nginx:$nginx_version"
    14  	busybox_image="busybox"
    15  	deployment="nginx-deployment"
    16  	# Pull the images before launching workload.
    17  	crictl_pull "$busybox_image"
    18  	crictl_pull "$nginx_image"
    19  
    20  	get_pod_config_dir
    21  }
    22  
    23  @test "Verify nginx connectivity between pods" {
    24  
    25  	# Create test .yaml
    26  	sed -e "s/\${nginx_version}/${nginx_image}/" \
    27  		"${pod_config_dir}/${deployment}.yaml" > "${pod_config_dir}/test-${deployment}.yaml"
    28  
    29  	kubectl create -f "${pod_config_dir}/test-${deployment}.yaml"
    30  	kubectl wait --for=condition=Available --timeout=$timeout deployment/${deployment}
    31  	kubectl expose deployment/${deployment}
    32  
    33  	busybox_pod="test-nginx"
    34  	kubectl run $busybox_pod --restart=Never -it --image="$busybox_image" \
    35  		-- sh -c 'i=1; while [ $i -le '"$wait_time"' ]; do wget --timeout=5 '"$deployment"' && break; sleep 1; i=$(expr $i + 1); done'
    36  
    37  	# check pod's status, it should be Succeeded.
    38  	# or {.status.containerStatuses[0].state.terminated.reason} = "Completed"
    39  	[ $(kubectl get pods/$busybox_pod -o jsonpath="{.status.phase}") = "Succeeded" ]
    40  	kubectl logs "$busybox_pod" | grep "index.html"
    41  }
    42  
    43  teardown() {
    44  	# Debugging information
    45  	kubectl describe "pod/$busybox_pod"
    46  	kubectl get "pod/$busybox_pod" -o yaml
    47  	kubectl logs "$busybox_pod"
    48  	kubectl get deployment/${deployment} -o yaml
    49  	kubectl get service/${deployment} -o yaml
    50  	kubectl get endpoints/${deployment} -o yaml
    51  
    52  	rm -f "${pod_config_dir}/test-${deployment}.yaml"
    53  	kubectl delete deployment "$deployment"
    54  	kubectl delete service "$deployment"
    55  	kubectl delete pod "$busybox_pod"
    56  }