github.com/containers/podman/v5@v5.1.0-rc1/test/minikube/helpers.bash (about)

     1  # -*- bash -*-
     2  
     3  load ../system/helpers.bash
     4  
     5  KUBECONFIG="$HOME/.kube/config"
     6  
     7  ##################
     8  #  run_minikube  #  Local helper, with instrumentation for debugging failures
     9  ##################
    10  function run_minikube() {
    11      # Number as first argument = expected exit code; default 0
    12      local expected_rc=0
    13      case "$1" in
    14          [0-9])           expected_rc=$1; shift;;
    15          [1-9][0-9])      expected_rc=$1; shift;;
    16          [12][0-9][0-9])  expected_rc=$1; shift;;
    17          '?')             expected_rc=  ; shift;;  # ignore exit code
    18      esac
    19  
    20      # stdout is only emitted upon error; this printf is to help in debugging
    21      printf "\n%s %s %s %s\n" "$(timestamp)" "\$" "minikube" "$*"
    22      run minikube "$@"
    23      # without "quotes", multiple lines are glommed together into one
    24      if [[ -n "$output" ]]; then
    25          echo "$(timestamp) $output"
    26      fi
    27      if [[ "$status" -ne 0 ]]; then
    28          echo -n "$(timestamp) [ rc=$status ";
    29          if [[ -n "$expected_rc" ]]; then
    30              if [[ "$status" -eq "$expected_rc" ]]; then
    31                  echo -n "(expected) ";
    32              else
    33                  echo -n "(** EXPECTED $expected_rc **) ";
    34              fi
    35          fi
    36          echo "]"
    37      fi
    38  
    39      if [[ -n "$expected_rc" ]]; then
    40          if [[ "$status" -ne "$expected_rc" ]]; then
    41              # Further debugging
    42              echo "\$ minikube logs"
    43              run minikube logs
    44              echo "$output"
    45  
    46              die "exit code is $status; expected $expected_rc"
    47          fi
    48      fi
    49  }
    50  
    51  
    52  function setup(){
    53      # only set up the minikube cluster before the first test
    54      if [[ "$BATS_TEST_NUMBER" -eq 1 ]]; then
    55          run_minikube start
    56          wait_for_default_sa
    57      fi
    58      basic_setup
    59  }
    60  
    61  function teardown(){
    62      # only delete the minikube cluster if we are done with the last test
    63      # the $DEBUG_MINIKUBE env can be set to preserve the cluster to debug if needed
    64      if [[ "$BATS_TEST_NUMBER" -eq ${#BATS_TEST_NAMES[@]} ]] && [[ "$DEBUG_MINIKUBE" == "" ]]; then
    65          run_minikube delete
    66      fi
    67  
    68      # Prevents nasty red warnings in log
    69      run_podman rmi --ignore $(pause_image)
    70  
    71      basic_teardown
    72  }
    73  
    74  function wait_for_default_sa(){
    75      count=0
    76      sa_ready=false
    77      # timeout after 30 seconds
    78      # if the default service account hasn't been created yet, there is something else wrong
    79      while [[ $count -lt 30 ]] && [[ $sa_ready == false ]]
    80      do
    81          run_minikube kubectl get sa
    82          if [[ "$output" != "No resources found in default namespace." ]]; then
    83              sa_ready=true
    84          fi
    85          count=$((count + 1))
    86          sleep 1
    87      done
    88      if [[ $sa_ready == false ]]; then
    89          die "Timed out waiting for default service account to be created"
    90      fi
    91  }
    92  
    93  function wait_for_pods_to_start(){
    94      count=0
    95      running=false
    96      # timeout after 30 seconds
    97      # if the pod hasn't started running after 30 seconds, there is something else wrong
    98      while [[ $count -lt 30 ]] && [[ $running == false ]]
    99      do
   100          run_minikube kubectl get pods
   101          assert "$status" -eq 0
   102          if [[ "$output" =~ "Running" ]]; then
   103              running=true
   104          fi
   105          count=$((count + 1))
   106          sleep 1
   107      done
   108      if [[ $running == false ]]; then
   109          die "Timed out waiting for pod to move to 'Running' state"
   110      fi
   111  }