From fda018ded723a6beffbf35ca142069fbba583421 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 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 ís very crude and does not follow the upstream schedule. That should not be a problem. A part of an existing test has been reused an made into a helper function to implement this. https://github.com/containers/toolbox/pull/899 --- test/system/000-setup.bats | 15 +++++++++--- test/system/103-container.bats | 43 ++++++++++++++++++++-------------- test/system/libs/helpers.bash | 32 +++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 21 deletions(-) diff --git a/test/system/000-setup.bats b/test/system/000-setup.bats index 019b03594..2e776c9d9 100644 --- a/test/system/000-setup.bats +++ b/test/system/000-setup.bats @@ -4,8 +4,17 @@ load 'libs/helpers' @test "test suite: Setup" { # Cache the default image for the system - _pull_and_cache_distro_image $(get_system_id) $(get_system_version) || die + _pull_and_cache_distro_image $(get_system_id) $(get_system_version) || false # Cache all images that will be needed during the tests - _pull_and_cache_distro_image fedora 32 || die - _pull_and_cache_distro_image busybox || die + _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 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" ] && [ -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 e442db17e..9e87bccbe 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 + create_distro_container "$system_id" "$((system_version-1))" second + create_distro_container "$system_id" "$((system_version-2))" third + + res1="$(container_started latest)" + res2="$(container_started second)" + res3="$(container_started third)" + + assert [ "$res1" -eq 1 ] + assert [ "$res2" -eq 1 ] + assert [ "$res3" -eq 1 ] +} diff --git a/test/system/libs/helpers.bash b/test/system/libs/helpers.bash index 883d80e37..1f6579e42 100644 --- a/test/system/libs/helpers.bash +++ b/test/system/libs/helpers.bash @@ -208,6 +208,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 + 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"