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
This commit is contained in:
Ondřej Míchal 2021-10-22 03:06:53 +03:00
parent ae8bd1a9c9
commit ae43560d45
4 changed files with 68 additions and 19 deletions

View File

@ -35,7 +35,7 @@
- job: - job:
name: system-test-fedora-rawhide name: system-test-fedora-rawhide
description: Run Toolbox's system tests in Fedora Rawhide description: Run Toolbox's system tests in Fedora Rawhide
timeout: 1200 timeout: 1320
nodeset: nodeset:
nodes: nodes:
- name: ci-node-rawhide - name: ci-node-rawhide

View File

@ -3,10 +3,20 @@
load 'libs/helpers' load 'libs/helpers'
@test "test suite: Setup" { @test "test suite: Setup" {
local os_release="$(find_os_release)"
local system_id="$(get_system_id)"
local system_version="$(get_system_version)"
_setup_environment _setup_environment
# Cache the default image for the system # 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 # Cache all images that will be needed during the tests
_pull_and_cache_distro_image fedora 32 || false _pull_and_cache_distro_image fedora 32 || false
_pull_and_cache_distro_image busybox || 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
} }

View File

@ -19,23 +19,30 @@ teardown() {
create_default_container create_default_container
run $PODMAN start $CONTAINER_NAME res="$(container_started $CONTAINER_NAME)"
CONTAINER_INITIALIZED=0 assert [ "$res" -eq 1 ]
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 ]
} }
@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 ]
}

View File

@ -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() { function stop_container() {
local container_name local container_name
container_name="$1" container_name="$1"