From e6649698620af15e4cb933cf8bf1769e13e62e82 Mon Sep 17 00:00:00 2001 From: David Esparza Date: Mon, 7 Aug 2023 16:50:51 -0600 Subject: [PATCH] metrics: install kata once and run multiple checks This PR changes the metrics workflow in order to just install kata once, and run the checks for multiple hypervisor variations. In this way we save time avoiding installing kata for each hypervisor to be tested. Fixes: #7578 Signed-off-by: David Esparza --- .github/workflows/run-metrics.yaml | 24 +++++++++++++++++------- tests/common.bash | 27 +++++++++++++++++++-------- tests/metrics/gha-run.sh | 1 + 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/.github/workflows/run-metrics.yaml b/.github/workflows/run-metrics.yaml index 1801214962..e50f6bd21a 100644 --- a/.github/workflows/run-metrics.yaml +++ b/.github/workflows/run-metrics.yaml @@ -10,16 +10,11 @@ on: type: string jobs: - run-metrics: - strategy: - fail-fast: true - matrix: - vmm: ['clh', 'qemu'] - max-parallel: 1 + setup-kata: + name: Kata Setup runs-on: metrics env: GOPATH: ${{ github.workspace }} - KATA_HYPERVISOR: ${{ matrix.vmm }} steps: - uses: actions/checkout@v3 with: @@ -34,6 +29,21 @@ jobs: - name: Install kata run: bash tests/metrics/gha-run.sh install-kata kata-artifacts + run-metrics: + needs: setup-kata + strategy: + fail-fast: true + matrix: + vmm: ['clh', 'qemu'] + max-parallel: 1 + runs-on: metrics + env: + GOPATH: ${{ github.workspace }} + KATA_HYPERVISOR: ${{ matrix.vmm }} + steps: + - name: enabling the hypervisor + run: bash tests/metrics/gha-run.sh enabling-hypervisor + - name: run launch times test run: bash tests/metrics/gha-run.sh run-test-launchtimes diff --git a/tests/common.bash b/tests/common.bash index 224df23f52..295ac8c5cf 100644 --- a/tests/common.bash +++ b/tests/common.bash @@ -295,18 +295,29 @@ function install_kata() { sudo ln -sf "${b}" "${local_bin_dir}/$(basename $b)" done - if [[ ${KATA_HYPERVISOR} == "dragonball" ]]; then - sudo ln -sf "${katadir}/runtime-rs/bin/containerd-shim-kata-v2" "${local_bin_dir}/containerd-shim-kata-${KATA_HYPERVISOR}-v2" - else - sudo ln -sf "${katadir}/bin/containerd-shim-kata-v2" "${local_bin_dir}/containerd-shim-kata-${KATA_HYPERVISOR}-v2" - fi - - sudo ln -sf ${katadir}/share/defaults/kata-containers/configuration-${KATA_HYPERVISOR}.toml ${katadir}/share/defaults/kata-containers/configuration.toml - check_containerd_config_for_kata restart_containerd_service } +# creates a new kata configuration.toml hard link that +# points to the hypervisor passed by KATA_HYPERVISOR env var. +function enabling_hypervisor() { + declare -r KATA_DIR="/opt/kata" + declare -r CONFIG_DIR="${KATA_DIR}/share/defaults/kata-containers" + declare -r SRC_HYPERVISOR_CONFIG="${CONFIG_DIR}/configuration-${KATA_HYPERVISOR}.toml" + declare -r DEST_KATA_CONFIG="${CONFIG_DIR}/configuration.toml" + declare -r CONTAINERD_SHIM_KATA="/usr/local/bin/containerd-shim-kata-${KATA_HYPERVISOR}-v2" + + if [[ ${KATA_HYPERVISOR} == "dragonball" ]]; then + sudo ln -sf "${KATA_DIR}/runtime-rs/bin/containerd-shim-kata-v2" "${CONTAINERD_SHIM_KATA}" + else + sudo ln -sf "${KATA_DIR}/bin/containerd-shim-kata-v2" "${CONTAINERD_SHIM_KATA}" + fi + + sudo ln -sf "${SRC_HYPERVISOR_CONFIG}" "${DEST_KATA_CONFIG}" +} + + function check_containerd_config_for_kata() { # check containerd config declare -r line1="default_runtime_name = \"kata\"" diff --git a/tests/metrics/gha-run.sh b/tests/metrics/gha-run.sh index ac773eb33c..3f168dafec 100755 --- a/tests/metrics/gha-run.sh +++ b/tests/metrics/gha-run.sh @@ -105,6 +105,7 @@ function main() { action="${1:-}" case "${action}" in install-kata) install_kata && install_checkmetrics ;; + enabling-hypervisor) enabling_hypervisor ;; make-tarball-results) make_tarball_results ;; run-test-launchtimes) run_test_launchtimes ;; run-test-memory-usage) run_test_memory_usage ;;