Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[skip-ci] TMT: run system tests on Fedora #24369

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 38 additions & 2 deletions .packit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,27 @@
downstream_package_name: podman
upstream_tag_template: v{version}

# These files get synced from upstream to downstream (Fedora / CentOS Stream) on every
# propose-downstream job. This is done so tests maintained upstream can be run
# downstream in Zuul CI and Bodhi.
# Ref: https://packit.dev/docs/configuration#files_to_sync
files_to_sync:
- src: rpm/gating.yaml
dest: gating.yaml
delete: true
- src: plans/
dest: plans/
delete: true
mkpath: true
- src: test/tmt/
dest: test/tmt/
delete: true
mkpath: true
- src: .fmf/
dest: .fmf/
delete: true
- .packit.yaml

packages:
podman-fedora:
pkg_tool: fedpkg
Expand All @@ -31,7 +52,7 @@ jobs:
failure_comment:
message: "Ephemeral COPR build failed. @containers/packit-build please check."
enable_net: true
targets:
targets: &fedora_copr_targets
- fedora-all-x86_64
- fedora-all-aarch64

Expand All @@ -53,7 +74,7 @@ jobs:
packages: [podman-centos]
notifications: *packit_build_failure_notification
enable_net: true
targets:
targets: &centos_copr_targets
- centos-stream-9-x86_64
- centos-stream-9-aarch64
- centos-stream-10-x86_64
Expand All @@ -71,6 +92,21 @@ jobs:
project: podman-next
enable_net: true

# Tests on Fedora
- job: tests
trigger: pull_request
packages: [podman-fedora]
targets:
- fedora-rawhide
- fedora-42
- fedora-41
tmt_plan: "/plans/system/*"
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/fedora-$releasever/rhcontainerbot-podman-next-fedora-$releasever.repo

- job: tests
identifier: cockpit-revdeps
trigger: pull_request
Expand Down
56 changes: 56 additions & 0 deletions plans/system.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
discover:
how: fmf

execute:
how: tmt

prepare:
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
- when: initiator == packit
how: shell
script: |
COPR_REPO_FILE="/etc/yum.repos.d/*podman-next*.repo"
if compgen -G $COPR_REPO_FILE > /dev/null; then
sed -i -n '/^priority=/!p;$apriority=1' $COPR_REPO_FILE
fi
dnf -y upgrade --allowerasing
order: 20

adjust+:
- enabled: false
when: revdeps == yes

provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"

/local-root:
summary: Local rootful tests
discover+:
filter: 'tag:local & tag:root'

/local-rootless:
summary: Local rootless tests
discover+:
filter: 'tag:local & tag:rootless'

/remote-root:
summary: Remote rootful tests
discover+:
filter: 'tag:remote & tag:root'

/remote-rootless:
summary: Remote rootless tests
discover+:
filter: 'tag:remote & tag:rootless'
21 changes: 21 additions & 0 deletions plans/tmt.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
summary: Run tmt container provision test (downstream only)

enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro != rhel

discover:
how: fmf
filter: 'tag:tmt & tag:downstream'

execute:
how: tmt

prepare:
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
29 changes: 29 additions & 0 deletions plans/toolbox.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
summary: Run toolbox tests (downstream only)

enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro == fedora

provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"

prepare:
- name: packages
how: install
package: [toolbox-tests]

discover:
how: fmf
url: https://src.fedoraproject.org/rpms/toolbox
ref: "rawhide"

execute:
how: tmt
17 changes: 17 additions & 0 deletions rpm/gating.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts:
- bodhi_update_push_stable
- bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

# recipients: jnovy, lsm5, santiago
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
7 changes: 5 additions & 2 deletions rpm/podman.spec
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,10 @@ pages and %{name}.
Summary: Tests for %{name}

Requires: %{name} = %{epoch}:%{version}-%{release}
%if %{defined fedora}
%if %{defined bats_epel}
Requires: bats
%else
Recommends: bats
%endif
Requires: attr
Requires: jq
Expand All @@ -155,7 +157,8 @@ Requires: gnupg
%description tests
%{summary}

This package contains system tests for %{name}
This package contains system tests for %{name}. Only intended to be used for
gating tests. Not supported for end users / customers.

%package remote
Summary: (Experimental) Remote client for managing %{name} containers
Expand Down
48 changes: 48 additions & 0 deletions test/tmt/system.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
require:
- attr
- bats
- podman-remote
- podman-tests
- psmisc
- slirp4netns

environment:
PODMAN: /usr/bin/podman
PODMAN_TESTING: /usr/bin/podman-testing
QUADLET: /usr/libexec/podman/quadlet
ROOTLESS_USER: "fedora"
adjust+:
- when: distro == centos-stream
environment+:
ROOTLESS_USER: "ec2-user"
- when: distro == rhel
environment+:
ROOTLESS_USER: "cloud-user"

/local-root:
tag: [ local, root ]
summary: local rootful test
test: bash ./system.sh
duration: 30m

/local-rootless:
tag: [ local, rootless ]
summary: rootless test
test: bash ./system.sh rootless
duration: 30m

/remote-root:
tag: [ remote, root ]
summary: remote rootful test
test: bash ./system.sh
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote

/remote-rootless:
tag: [ remote, rootless ]
summary: remote rootless test
test: bash ./system.sh rootless
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote
44 changes: 44 additions & 0 deletions test/tmt/system.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bash

set -exo pipefail

uname -r

loginctl enable-linger "$ROOTLESS_USER"

rpm -q \
aardvark-dns \
buildah \
conmon \
container-selinux \
containers-common \
criu \
crun \
netavark \
passt \
podman \
podman-tests \
skopeo \
slirp4netns \
systemd

export system_service_cmd="/usr/bin/podman system service --timeout=0 &"
export test_cmd="whoami && cd /usr/share/podman/test/system && bats ."

if [[ -z $1 ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
eval $system_service_cmd
fi
eval $test_cmd
elif [[ $1 == "rootless" ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
su - "$ROOTLESS_USER" -c "eval $system_service_cmd"
fi
su --whitelist-environment=$(cat ./tmt-envvars | tr '\n' ',') - "$ROOTLESS_USER" -c "eval $test_cmd"
fi

# Kill all podman processes for remote tests
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
killall -q podman
fi
exit 0
20 changes: 20 additions & 0 deletions test/tmt/tmt-envvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
TMT_TREE
TMT_PLAN_DATA
TMT_VERSION
TMT_TEST_NAME
TMT_TEST_DATA
TMT_TEST_SERIAL_NUMBER
TMT_TEST_ITERATION_ID
TMT_TEST_METADATA
TMT_SOURCE_DIR
TMT_REBOOT_COUNT
TMT_TEST_RESTART_COUNT
TMT_TOPOLOGY_BASH
TMT_TOPOLOGY_YAML
TMT_TEST_PIDFILE
TMT_TEST_PIDFILE_LOCK
TMT_TEST_PIDFILE_ROOT
PODMAN
PODMAN_TESTING
QUADLET
ROOTLESS_USER
13 changes: 13 additions & 0 deletions test/tmt/tmt.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
enabled: false
adjust:
enabled: true
when: initiator != packit && distro != rhel
summary: Make sure that TMT container provision works
tag: [downstream]
require:
- tmt+provision-container
test:
tmt run --verbose --remove
provision --how container --image fedora
login --command 'cat /etc/os-release'
finish