From 82131f985fbe5d496215c23cd0a198acfed75bcd Mon Sep 17 00:00:00 2001 From: Krisztian Litkey Date: Thu, 23 May 2024 15:08:55 +0300 Subject: [PATCH] e2e: cache/restore latest github versions. Once the latest github version of CRI-O, containerd or kubernetes has been determined, save it in a vm-specific cache. Always try restoring those versions from the cache first before turning to github to discover them. Signed-off-by: Krisztian Litkey --- test/e2e/lib/vm.bash | 52 ++++++++++++++++++++++++++++++++++++++++++++ test/e2e/run.sh | 32 ++++++++++++++++++++++----- 2 files changed, 78 insertions(+), 6 deletions(-) diff --git a/test/e2e/lib/vm.bash b/test/e2e/lib/vm.bash index d4e27f373..a52c87e87 100644 --- a/test/e2e/lib/vm.bash +++ b/test/e2e/lib/vm.bash @@ -36,6 +36,58 @@ vm-create-name() { echo "${topology}-${distro}-${runtime}" } +vm-save-cached-var() { + local output_dir="$1" + local var="$2" + local val="${3:-}" + local cache_dir="$output_dir/cache" + + if [ $# = 3 ]; then + val="$3" + else + val="${!var}" + fi + + if [ -z "$val" ]; then + echo "WARNING: not saving cached empty value for variable $var..." 1>&2 + return 0 + fi + + if [ ! -d "$cache_dir" ]; then + mkdir -p "$cache_dir" || \ + error "failed to create cache dir $cache_dir" + fi + + echo "$val" > "$cache_dir/$var" + if [ $? = 0 ]; then + echo "saved cached variable $var=$val..." 1>&2 + return 0 + fi + + return 1 +} + +vm-load-cached-var() { + local output_dir="$1" + local var="$2" + local cache_dir="$output_dir/cache" + local val + + if [ ! -d "$cache_dir" -o ! -f "$cache_dir/$var" ]; then + return 1 + fi + + val="$(cat $cache_dir/$var)" + if [ $? = 0 ]; then + echo "loaded cached variable $var=$val..." 1>&2 + echo $val + return 0 + fi + + error "failed to load cached variable $var" 1>&2 + return 1 +} + vm-setup() { local output_dir="$1" local vmname="$2" diff --git a/test/e2e/run.sh b/test/e2e/run.sh index 429639124..e7ba17f25 100755 --- a/test/e2e/run.sh +++ b/test/e2e/run.sh @@ -60,8 +60,14 @@ latest-github-release () { } if [ "$k8s_release" = "latest" ]; then - if ! k8s_release=$(latest-github-release $GH_K8S_REPO); then - error "$k8s_release" + if latest_k8s_release=$(vm-load-cached-var "$OUTPUT_DIR" latest_k8s_release); then + echo "Loaded cached latest_k8s_release=$latest_k8s_release..." + k8s_release="$latest_k8s_release" + else + if ! k8s_release=$(latest-github-release $GH_K8S_REPO); then + error "$k8s_release" + fi + vm-save-cached-var "$OUTPUT_DIR" latest_k8s_release $k8s_release fi k8s_release="${k8s_release#v}" echo "Latest Kubernetes release: $k8s_release" @@ -104,13 +110,20 @@ GH_CONTAINERD_REPO="containerd/containerd" export containerd_release=${containerd_release:-latest} if [ "$k8scri" = "containerd" -a "$containerd_release" = "latest" ]; then - if ! containerd_release=$(latest-github-release $GH_CONTAINERD_REPO); then - error "$containerd_release" + if latest_containerd_release=$(vm-load-cached-var "$OUTPUT_DIR" latest_containerd_release); then + echo "Loaded cached latest_containerd_release=$latest_containerd_release..." + containerd_release="$latest_containerd_release" + else + if ! containerd_release=$(latest-github-release $GH_CONTAINERD_REPO); then + error "$containerd_release" + fi + vm-save-cached-var "$OUTPUT_DIR" latest_containerd_release $containerd_release fi containerd_release="${containerd_release#v}" echo "Latest containerd release: $containerd_release" fi + export containerd_src=${containerd_src:-} @@ -123,9 +136,16 @@ export crio_release=${crio_release:-latest} export crio_src=${crio_src:-} if [ "$k8scri" = "crio" -a "$crio_release" = "latest" ]; then - if ! crio_release=$(latest-github-release $GH_CRIO_REPO); then - error "$crio_release" + if latest_crio_release=$(vm-load-cached-var "$OUTPUT_DIR" latest_crio_release); then + echo "Loaded cached latest_crio_release=$latest_crio_release..." + crio_release="$latest_crio_release" + else + if ! crio_release=$(latest-github-release $GH_CRIO_REPO); then + error "$crio_release" + fi + vm-save-cached-var "$OUTPUT_DIR" latest_crio_release $crio_release fi + crio_release="${crio_release#v}" echo "Latest CRI-O release: $crio_release" fi