test/system: Optimize the D-Bus tests

The system tests can be very I/O intensive, because many of them copy
OCI images from the test suite's image cache directory to its local
container/storage store, create containers, and then delete everything
to run the next test with a clean slate.  This makes them slow.

The runtime environment tests, which includes the D-Bus tests, are
particularly slow because they don't skip the I/O even when testing
error handling.  This makes them a good target for optimizations.

The D-Bus tests check if methods can be called across the user or
session and system D-Bus instances from different containers without
changing their state.  Therefore, a lot of disk I/O can be avoided by
reating these containers only once for all the tests.

This can reduce the time needed to run the D-Bus tests from almost 10
minutes to almost 5 minutes.

https://github.com/containers/toolbox/pull/1641
This commit is contained in:
Debarshi Ray 2025-05-06 22:13:29 +02:00
parent 7a413e66b9
commit 5881bc43f3
1 changed files with 19 additions and 31 deletions

View File

@ -1,6 +1,6 @@
# shellcheck shell=bats # shellcheck shell=bats
# #
# Copyright © 2023 2024 Red Hat, Inc. # Copyright © 2023 2025 Red Hat, Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -21,14 +21,30 @@ load 'libs/bats-support/load'
load 'libs/bats-assert/load' load 'libs/bats-assert/load'
load 'libs/helpers' load 'libs/helpers'
setup() { setup_file() {
bats_require_minimum_version 1.10.0 bats_require_minimum_version 1.10.0
_setup_environment _setup_environment
cleanup_all cleanup_all
pushd "$HOME" || return 1 pushd "$HOME" || return 1
if echo "$TOOLBX_TEST_SYSTEM_TAGS" | grep "arch" >/dev/null 2>/dev/null; then
create_distro_container arch latest arch-toolbox-latest
fi
if echo "$TOOLBX_TEST_SYSTEM_TAGS" | grep "fedora" >/dev/null 2>/dev/null; then
create_default_container
create_distro_container fedora 34 fedora-toolbox-34
create_distro_container rhel 8.10 rhel-toolbox-8.10
fi
if echo "$TOOLBX_TEST_SYSTEM_TAGS" | grep "ubuntu" >/dev/null 2>/dev/null; then
create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04
create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04
create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04
fi
} }
teardown() { teardown_file() {
popd || return 1 popd || return 1
cleanup_all cleanup_all
} }
@ -42,8 +58,6 @@ teardown() {
--object-path /org/freedesktop/DBus \ --object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.Peer.Ping)" --method org.freedesktop.DBus.Peer.Ping)"
create_default_container
run --keep-empty-lines --separate-stderr "$TOOLBX" run gdbus call \ run --keep-empty-lines --separate-stderr "$TOOLBX" run gdbus call \
--session \ --session \
--dest org.freedesktop.DBus \ --dest org.freedesktop.DBus \
@ -67,8 +81,6 @@ teardown() {
--object-path /org/freedesktop/DBus \ --object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.Peer.Ping)" --method org.freedesktop.DBus.Peer.Ping)"
create_distro_container arch latest arch-toolbox-latest
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro arch \ --distro arch \
gdbus call \ gdbus call \
@ -94,8 +106,6 @@ teardown() {
--object-path /org/freedesktop/DBus \ --object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.Peer.Ping)" --method org.freedesktop.DBus.Peer.Ping)"
create_distro_container fedora 34 fedora-toolbox-34
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro fedora \ --distro fedora \
--release 34 \ --release 34 \
@ -122,8 +132,6 @@ teardown() {
--object-path /org/freedesktop/DBus \ --object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.Peer.Ping)" --method org.freedesktop.DBus.Peer.Ping)"
create_distro_container rhel 8.10 rhel-toolbox-8.10
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro rhel \ --distro rhel \
--release 8.10 \ --release 8.10 \
@ -145,8 +153,6 @@ teardown() {
@test "dbus: session bus inside Ubuntu 16.04" { @test "dbus: session bus inside Ubuntu 16.04" {
busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping
create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 16.04 \ --release 16.04 \
@ -165,8 +171,6 @@ teardown() {
@test "dbus: session bus inside Ubuntu 18.04" { @test "dbus: session bus inside Ubuntu 18.04" {
busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping
create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 18.04 \ --release 18.04 \
@ -185,8 +189,6 @@ teardown() {
@test "dbus: session bus inside Ubuntu 20.04" { @test "dbus: session bus inside Ubuntu 20.04" {
busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping busctl --user call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Peer Ping
create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 20.04 \ --release 20.04 \
@ -212,8 +214,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_default_container
run --keep-empty-lines --separate-stderr "$TOOLBX" run gdbus call \ run --keep-empty-lines --separate-stderr "$TOOLBX" run gdbus call \
--system \ --system \
--dest org.freedesktop.systemd1 \ --dest org.freedesktop.systemd1 \
@ -241,8 +241,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container arch latest arch-toolbox-latest
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro arch \ --distro arch \
gdbus call \ gdbus call \
@ -272,8 +270,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container fedora 34 fedora-toolbox-34
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro fedora \ --distro fedora \
--release 34 \ --release 34 \
@ -304,8 +300,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container rhel 8.10 rhel-toolbox-8.10
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro rhel \ --distro rhel \
--release 8.10 \ --release 8.10 \
@ -334,8 +328,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 16.04 \ --release 16.04 \
@ -362,8 +354,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 18.04 \ --release 18.04 \
@ -390,8 +380,6 @@ teardown() {
org.freedesktop.systemd1.Manager \ org.freedesktop.systemd1.Manager \
Version)" Version)"
create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04
run --keep-empty-lines --separate-stderr "$TOOLBX" run \ run --keep-empty-lines --separate-stderr "$TOOLBX" run \
--distro ubuntu \ --distro ubuntu \
--release 20.04 \ --release 20.04 \