mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 18:08:51 +08:00 
			
		
		
		
	 aa5c4879b4
			
		
	
	aa5c4879b4
	
	
	
		
			
			New run_minikube() helper, modeled after run_podman(). Echoes each command being run and its output. On failure, runs minikube logs. Addresses (does not close) #21931 which is hitting us hard in CI. Probably quay flakes, but it's impossible to tell without logs. Also: bug fix: one "run podman" fixed to run_podman Signed-off-by: Ed Santiago <santiago@redhat.com>
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # -*- bash -*-
 | |
| 
 | |
| load ../system/helpers.bash
 | |
| 
 | |
| KUBECONFIG="$HOME/.kube/config"
 | |
| 
 | |
| ##################
 | |
| #  run_minikube  #  Local helper, with instrumentation for debugging failures
 | |
| ##################
 | |
| function run_minikube() {
 | |
|     # Number as first argument = expected exit code; default 0
 | |
|     local expected_rc=0
 | |
|     case "$1" in
 | |
|         [0-9])           expected_rc=$1; shift;;
 | |
|         [1-9][0-9])      expected_rc=$1; shift;;
 | |
|         [12][0-9][0-9])  expected_rc=$1; shift;;
 | |
|         '?')             expected_rc=  ; shift;;  # ignore exit code
 | |
|     esac
 | |
| 
 | |
|     # stdout is only emitted upon error; this printf is to help in debugging
 | |
|     printf "\n%s %s %s %s\n" "$(timestamp)" "\$" "minikube" "$*"
 | |
|     run minikube "$@"
 | |
|     # without "quotes", multiple lines are glommed together into one
 | |
|     if [[ -n "$output" ]]; then
 | |
|         echo "$(timestamp) $output"
 | |
|     fi
 | |
|     if [[ "$status" -ne 0 ]]; then
 | |
|         echo -n "$(timestamp) [ rc=$status ";
 | |
|         if [[ -n "$expected_rc" ]]; then
 | |
|             if [[ "$status" -eq "$expected_rc" ]]; then
 | |
|                 echo -n "(expected) ";
 | |
|             else
 | |
|                 echo -n "(** EXPECTED $expected_rc **) ";
 | |
|             fi
 | |
|         fi
 | |
|         echo "]"
 | |
|     fi
 | |
| 
 | |
|     if [[ -n "$expected_rc" ]]; then
 | |
|         if [[ "$status" -ne "$expected_rc" ]]; then
 | |
|             # Further debugging
 | |
|             echo "\$ minikube logs"
 | |
|             run minikube logs
 | |
|             echo "$output"
 | |
| 
 | |
|             die "exit code is $status; expected $expected_rc"
 | |
|         fi
 | |
|     fi
 | |
| }
 | |
| 
 | |
| 
 | |
| function setup(){
 | |
|     # only set up the minikube cluster before the first test
 | |
|     if [[ "$BATS_TEST_NUMBER" -eq 1 ]]; then
 | |
|         run_minikube start
 | |
|         wait_for_default_sa
 | |
|     fi
 | |
|     basic_setup
 | |
| }
 | |
| 
 | |
| function teardown(){
 | |
|     # only delete the minikube cluster if we are done with the last test
 | |
|     # the $DEBUG_MINIKUBE env can be set to preserve the cluster to debug if needed
 | |
|     if [[ "$BATS_TEST_NUMBER" -eq ${#BATS_TEST_NAMES[@]} ]] && [[ "$DEBUG_MINIKUBE" == "" ]]; then
 | |
|         run_minikube delete
 | |
|     fi
 | |
| 
 | |
|     # Prevents nasty red warnings in log
 | |
|     run_podman rmi --ignore $(pause_image)
 | |
| 
 | |
|     basic_teardown
 | |
| }
 | |
| 
 | |
| function wait_for_default_sa(){
 | |
|     count=0
 | |
|     sa_ready=false
 | |
|     # timeout after 30 seconds
 | |
|     # if the default service account hasn't been created yet, there is something else wrong
 | |
|     while [[ $count -lt 30 ]] && [[ $sa_ready == false ]]
 | |
|     do
 | |
|         run_minikube kubectl get sa
 | |
|         if [[ "$output" != "No resources found in default namespace." ]]; then
 | |
|             sa_ready=true
 | |
|         fi
 | |
|         count=$((count + 1))
 | |
|         sleep 1
 | |
|     done
 | |
|     if [[ $sa_ready == false ]]; then
 | |
|         die "Timed out waiting for default service account to be created"
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function wait_for_pods_to_start(){
 | |
|     count=0
 | |
|     running=false
 | |
|     # timeout after 30 seconds
 | |
|     # if the pod hasn't started running after 30 seconds, there is something else wrong
 | |
|     while [[ $count -lt 30 ]] && [[ $running == false ]]
 | |
|     do
 | |
|         run_minikube kubectl get pods
 | |
|         assert "$status" -eq 0
 | |
|         if [[ "$output" =~ "Running" ]]; then
 | |
|             running=true
 | |
|         fi
 | |
|         count=$((count + 1))
 | |
|         sleep 1
 | |
|     done
 | |
|     if [[ $running == false ]]; then
 | |
|         die "Timed out waiting for pod to move to 'Running' state"
 | |
|     fi
 | |
| }
 |