From bd7878dd2323ec8a6b228242e3a44135d455d460 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Wed, 14 Apr 2021 17:02:36 +0200 Subject: [PATCH] Introduce Fedora CI gating. Introduce CI gating. This will introduce new testcase called fedora-ci.koji-build.tier0.functional and will configure it as a mandatory CI gating testcase for elfutils fedora builds. The provided test case is executed by running ./runtest.sh. The main.fmf file keeps the testcase metadata. The plans and .fmf folders contain configuration files needed for execution of provided testcases within the Fedora CI infrastructure. The provided testcase relies upon the debuginfod server providing needed kernel-debuginfo. It was tested with staging instance of the debuginfod server running at https://debuginfod.stg.fedoraproject.org/ . Provided test uses Flexible Metadata Format, as documented in https://fmf.readthedocs.io/ . --- .fmf/version | 1 + gating.yaml | 20 ++++++++++++ plans/ci.fmf | 6 ++++ tests/Sanity/quick-smoke-test/main.fmf | 15 +++++++++ tests/Sanity/quick-smoke-test/runtest.sh | 41 ++++++++++++++++++++++++ tests/dejagnu-smoketest/Makefile | 38 ---------------------- tests/dejagnu-smoketest/PURPOSE | 3 -- tests/dejagnu-smoketest/runtest.sh | 17 ---------- tests/tests.yml | 11 ------- 9 files changed, 83 insertions(+), 69 deletions(-) create mode 100644 .fmf/version create mode 100644 gating.yaml create mode 100644 plans/ci.fmf create mode 100644 tests/Sanity/quick-smoke-test/main.fmf create mode 100755 tests/Sanity/quick-smoke-test/runtest.sh delete mode 100644 tests/dejagnu-smoketest/Makefile delete mode 100644 tests/dejagnu-smoketest/PURPOSE delete mode 100755 tests/dejagnu-smoketest/runtest.sh delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..84b7773 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,20 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation} +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..1ad2c12 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + directory: tests +execute: + how: beakerlib diff --git a/tests/Sanity/quick-smoke-test/main.fmf b/tests/Sanity/quick-smoke-test/main.fmf new file mode 100644 index 0000000..0c8a945 --- /dev/null +++ b/tests/Sanity/quick-smoke-test/main.fmf @@ -0,0 +1,15 @@ +summary: Quick test that systemtap generally works +description: '' +contact: +- Petr Muller +component: +- systemtap +test: ./runtest.sh +framework: beakerlib +recommend: +- koji +- systemtap +- kernel-devel +duration: 1h +extra-summary: /tools/systemtap/Sanity/quick-smoke-test +extra-task: /tools/systemtap/Sanity/quick-smoke-test diff --git a/tests/Sanity/quick-smoke-test/runtest.sh b/tests/Sanity/quick-smoke-test/runtest.sh new file mode 100755 index 0000000..1381587 --- /dev/null +++ b/tests/Sanity/quick-smoke-test/runtest.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# runtest.sh of /tools/systemtap/Sanity/quick-smoke-test + +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +export DEBUGINFOD_URLS="https://debuginfod.stg.fedoraproject.org/ $DEBUGINFOD_URLS" +export DEBUGINFOD_TIMEOUT=300 +# export DEBUGINFOD_PROGRESS=1 + + +# On Rawhide, the running kernel packages won't probably be avail in +# configured repos. Debuginfo isn't a problem, we access that using +# the debuginfod. +__install_deps () +{ + set -xe + TMPD=$(mktemp -d) + pushd $TMPD + koji download-build --rpm kernel-`uname -r` --arch `uname -i` + koji download-build --rpm kernel-devel-`uname -r` --arch `uname -i` + koji download-build --rpm kernel-modules-`uname -r` --arch `uname -i` + dnf -y install kernel{,-devel,-modules}-`uname -r`.rpm + popd + rm -rf $TMPD + set +xe +} + +rlJournalStart +rlPhaseStartTest + rlRun "rpm -qa | egrep '^(kernel|systemtap)' | sort" + rlRun "uname -r" + rlRun "stap-prep || __install_deps" + rlRun "stap-prep" + rlRun "stap -L 'process(\"stap\").mark(\"*\")' | grep pass" + rlRun "stap -v --example helloworld.stp" + rlRun "stap -v -T 10 -p4 -e 'probe kernel.function(\"do_exit\") {println(\$\$vars)}'" + rlRun "stap -v -T 60 -e 'probe kernel.function(\"vfs_read\"){ println(\$\$vars); exit() }'" +rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/dejagnu-smoketest/Makefile b/tests/dejagnu-smoketest/Makefile deleted file mode 100644 index e212345..0000000 --- a/tests/dejagnu-smoketest/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -TOPLEVEL_NAMESPACE=fedora -PACKAGE_NAME=systemtap -RELATIVE_PATH=Sanity/dejagnu-smoketest -export TESTVERSION=1.0 -export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH) - -.PHONY: all install download clean -BUILT_FILES= -FILES=$(METADATA) runtest.sh Makefile PURPOSE - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - chmod a+x ./runtest.sh - -clean: - rm -f *~ *.rpm $(BUILT_FILES) - -include /usr/share/rhts/lib/rhts-make.include - -# Generate the testinfo.desc here: -$(METADATA): Makefile - @touch $(METADATA) -# Change to the test owner's name - @echo "Owner: Frank Ch. Eigler " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "Description: smoke test" >> $(METADATA) - @echo "TestTime: 10m" >> $(METADATA) - @echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA) - @echo "Requires: $(PACKAGE_NAME)" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - -# You may need other fields here; see the documentation - rhts-lint $(METADATA) diff --git a/tests/dejagnu-smoketest/PURPOSE b/tests/dejagnu-smoketest/PURPOSE deleted file mode 100644 index 5a6a058..0000000 --- a/tests/dejagnu-smoketest/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -Test Name: dejagnu-smoketest -Author: -Short Description: Run a minimal systemtap testsuite diff --git a/tests/dejagnu-smoketest/runtest.sh b/tests/dejagnu-smoketest/runtest.sh deleted file mode 100755 index d988142..0000000 --- a/tests/dejagnu-smoketest/runtest.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e -set -x - -dnf debuginfo-install -y kernel - -# on Fedora CI, can only assume about 1GB RAM to run these tests - -stap -L 'process("stap").mark("*")' | grep pass -# stap -L 'kernel.trace("sys_enter")' -stap -v --example helloworld.stp -stap -v -T 10 -p4 -e 'probe kernel.function("do_exit") {println($$vars)}' -# stap -v -T 10 -e 'probe syscall.* ? {println(argstr)}' - -echo -echo RESULT: PASS diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 5d88e66..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -- hosts: localhost - roles: - - role: standard-test-beakerlib - tags: - - classic - tests: - - dejagnu-smoketest - required_packages: - - systemtap-testsuite - - kernel-devel