From ae43560d45842eeac019d8807b5cbffee0faa39e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20M=C3=ADchal?= Date: Fri, 22 Oct 2021 03:06:53 +0300 Subject: [PATCH] test/system: Test startup on Rawhide with supported versions We need to know if the latest changes in the libc (that is dynamically linked to the binary) causes problems in containers based on older releases of Fedora. The estimate of the version numbers is very crude and does not follow the upstream schedule. That should not be a problem, though. A part of an existing test has been reused and made into a helper function to implement this. This increases the run time of the test suite on Rawhide which already takes longer than the same test suite on released versions of Fedora. Make up for it by increasing the timeout by 2 minutes. https://github.com/containers/toolbox/pull/899 --- .zuul.yaml | 2 +- test/system/000-setup.bats | 12 +++++++++- test/system/103-container.bats | 43 ++++++++++++++++++++-------------- test/system/libs/helpers.bash | 32 +++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 20 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index e6084bc13..3f8019b3a 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -35,7 +35,7 @@ - job: name: system-test-fedora-rawhide description: Run Toolbox's system tests in Fedora Rawhide - timeout: 1200 + timeout: 1320 nodeset: nodes: - name: ci-node-rawhide diff --git a/test/system/000-setup.bats b/test/system/000-setup.bats index de9303123..f1901bebc 100644 --- a/test/system/000-setup.bats +++ b/test/system/000-setup.bats @@ -3,10 +3,20 @@ load 'libs/helpers' @test "test suite: Setup" { + local os_release="$(find_os_release)" + local system_id="$(get_system_id)" + local system_version="$(get_system_version)" + _setup_environment # Cache the default image for the system - _pull_and_cache_distro_image $(get_system_id) $(get_system_version) || false + _pull_and_cache_distro_image "$system_id" "$system_version" || false # Cache all images that will be needed during the tests _pull_and_cache_distro_image fedora 32 || false _pull_and_cache_distro_image busybox || false + # If run on Fedora Rawhide, cache 2 extra images (previous Fedora versions) + local rawhide_res="$(awk '/rawhide/' $os_release)" + if [ "$system_id" = "fedora" ] && [ -n "$rawhide_res" ]; then + _pull_and_cache_distro_image fedora "$((system_version-1))" || false + _pull_and_cache_distro_image fedora "$((system_version-2))" || false + fi } diff --git a/test/system/103-container.bats b/test/system/103-container.bats index 1ed8fe209..e026a9da7 100644 --- a/test/system/103-container.bats +++ b/test/system/103-container.bats @@ -19,23 +19,30 @@ teardown() { create_default_container - run $PODMAN start $CONTAINER_NAME - - CONTAINER_INITIALIZED=0 - - for TRIES in 1 2 3 4 5 - do - run $PODMAN logs $CONTAINER_NAME - CONTAINER_OUTPUT=$output - run grep 'Listening to file system and ticker events' <<< $CONTAINER_OUTPUT - if [[ "$status" -eq 0 ]]; then - CONTAINER_INITIALIZED=1 - break - fi - sleep 1 - done - - echo $CONTAINER_OUTPUT - assert [ "$CONTAINER_INITIALIZED" -eq 1 ] + res="$(container_started $CONTAINER_NAME)" + + assert [ "$res" -eq 1 ] } +@test "container(Fedora Rawhide): Containers with supported versions start without issues" { + local os_release="$(find_os_release)" + local system_id="$(get_system_id)" + local system_version="$(get_system_version)" + local rawhide_res="$(awk '/rawhide/' $os_release)" + + if [ "$system_id" != "fedora" ] || [ -z "$rawhide_res" ]; then + skip "This test is only for Fedora Rawhide" + fi + + create_distro_container "$system_id" "$system_version" latest + res1="$(container_started latest)" + assert [ "$res1" -eq 1 ] + + create_distro_container "$system_id" "$((system_version-1))" second + res2="$(container_started second)" + assert [ "$res2" -eq 1 ] + + create_distro_container "$system_id" "$((system_version-2))" third + res3="$(container_started third)" + assert [ "$res3" -eq 1 ] +} diff --git a/test/system/libs/helpers.bash b/test/system/libs/helpers.bash index 92dfe5b20..d728c0fc5 100644 --- a/test/system/libs/helpers.bash +++ b/test/system/libs/helpers.bash @@ -232,6 +232,38 @@ function start_container() { } +# Checks if a toolbox container started +# +# Parameters: +# =========== +# - container_name - name of the container +function container_started() { + local container_name + container_name="$1" + + run $PODMAN start $container_name + + container_initialized=0 + + for TRIES in 1 2 3 4 5 + do + run $PODMAN logs $container_name + container_output=$output + # Look for last line of the container startup log + run grep 'Listening to file system and ticker events' <<< $container_output + if [[ "$status" -eq 0 ]]; then + container_initialized=1 + break + fi + sleep 1 + done + + echo $container_output >2 + + echo $container_initialized +} + + function stop_container() { local container_name container_name="$1"