github.com/dmaizel/tests@v0.0.0-20210728163746-cae6a2d9cee8/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  	export KUBECONFIG="${KUBECONFIG:-$HOME/.kube/config}"
    17  	# Pull the images before launching workload.
    18  	crictl_pull "$busybox_image"
    19  	crictl_pull "$nginx_image"
    20  
    21  	get_pod_config_dir
    22  }
    23  
    24  @test "Verify nginx connectivity between pods" {
    25  
    26  	# Create test .yaml
    27  	sed -e "s/\${nginx_version}/${nginx_image}/" \
    28  		"${pod_config_dir}/${deployment}.yaml" > "${pod_config_dir}/test-${deployment}.yaml"
    29  
    30  	kubectl create -f "${pod_config_dir}/test-${deployment}.yaml"
    31  	kubectl wait --for=condition=Available --timeout=$timeout deployment/${deployment}
    32  	kubectl expose deployment/${deployment}
    33  
    34  	busybox_pod="test-nginx"
    35  	kubectl run $busybox_pod --restart=Never -it --image="$busybox_image" \
    36  		-- sh -c 'i=1; while [ $i -le '"$wait_time"' ]; do wget --timeout=5 '"$deployment"' && break; sleep 1; i=$(expr $i + 1); done'
    37  
    38  	# check pod's status, it should be Succeeded.
    39  	# or {.status.containerStatuses[0].state.terminated.reason} = "Completed"
    40  	[ $(kubectl get pods/$busybox_pod -o jsonpath="{.status.phase}") = "Succeeded" ]
    41  	kubectl logs "$busybox_pod" | grep "index.html"
    42  }
    43  
    44  teardown() {
    45  	# Debugging information
    46  	kubectl describe "pod/$busybox_pod"
    47  	kubectl get "pod/$busybox_pod" -o yaml
    48  	kubectl logs "$busybox_pod"
    49  	kubectl get deployment/${deployment} -o yaml
    50  	kubectl get service/${deployment} -o yaml
    51  	kubectl get endpoints/${deployment} -o yaml
    52  
    53  	rm -f "${pod_config_dir}/test-${deployment}.yaml"
    54  	kubectl delete deployment "$deployment"
    55  	kubectl delete service "$deployment"
    56  	kubectl delete pod "$busybox_pod"
    57  }