Skip to content

Commit

Permalink
squash: add test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
happz committed Apr 10, 2024
1 parent 71ee332 commit d6b6d93
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 19 deletions.
8 changes: 7 additions & 1 deletion tests/test/check/data/main.fmf
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
/dmesg:
test: /bin/true
check: dmesg

/harmless:
test: /bin/true

/segfault:
test: echo Some segfault happened > /dev/kmsg

/custom-patterns:
check:
- how: dmesg
failure-pattern:
- 'Hypervisor detected'

/avc:
check:
- how: avc
Expand Down
64 changes: 46 additions & 18 deletions tests/test/check/test-dmesg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,18 @@ rlJournalStart

rlRun "results=$run/plan/execute/results.yaml"
rlRun "harmless=$run/plan/execute/data/guest/default-0/dmesg/harmless-1"
rlRun "segfault=$run/plan/execute/data/guest/default-0/dmesg/segfault-2"
rlRun "dump_before=$harmless/checks/dmesg-before-test.txt"
rlRun "dump_after=$harmless/checks/dmesg-after-test.txt"
rlRun "segfault=$run/plan/execute/data/guest/default-0/dmesg/segfault-1"
rlRun "custom_patterns=$run/plan/execute/data/guest/default-0/dmesg/custom-patterns-1"

rlRun "pushd data"
rlRun "set -o pipefail"
rlPhaseEnd

rlPhaseStartTest "Test dmesg check with $PROVISION_HOW"
# Segfault test only reproducible with virtual (needs root)
if [ "$PROVISION_HOW" = "virtual" ]; then
test_name=/dmesg
else
test_name=/dmesg/harmless
fi

rlRun "tmt run --id $run --scratch -a -vv provision -h $PROVISION_HOW test -n $test_name"
rlPhaseStartTest "Test dmesg check with $PROVISION_HOW in harmless run"
rlRun "dump_before=$harmless/checks/dmesg-before-test.txt"
rlRun "dump_after=$harmless/checks/dmesg-after-test.txt"

rlRun "tmt run --id $run --scratch -a -vv provision -h $PROVISION_HOW test -n /dmesg/harmless"
rlRun "cat $results"

if [ "$PROVISION_HOW" = "container" ]; then
Expand All @@ -48,28 +42,62 @@ rlJournalStart

rlAssertExists "$dump_before"
rlLogInfo "$(cat $dump_before)"

fi

if [ "$PROVISION_HOW" = "container" ]; then
assert_check_result "dmesg as an after-test should skip with containers" "skip" "after-test" "harmless"

rlAssertNotExists "$dump_after"

elif [ "$PROVISION_HOW" = "virtual" ]; then
else
assert_check_result "dmesg as an after-test should pass" "pass" "after-test" "harmless"

rlAssertExists "$dump_after"
rlLogInfo "$(cat $dump_after)"

fi
rlPhaseEnd

if [ "$PROVISION_HOW" = "virtual" ]; then
# Segfault test only reproducible with virtual (needs root)
rlPhaseStartTest "Test dmesg check with $PROVISION_HOW with a segfault"
rlRun "dump_before=$segfault/checks/dmesg-before-test.txt"
rlRun "dump_after=$segfault/checks/dmesg-after-test.txt"

rlRun "tmt run --id $run --scratch -a -vv provision -h $PROVISION_HOW test -n /dmesg/segfault"
rlRun "cat $results"

assert_check_result "dmesg as a before-test should pass" "pass" "before-test" "segfault"

rlAssertExists "$dump_before"
rlLogInfo "$(cat $dump_before)"

assert_check_result "dmesg as an after-test should fail" "fail" "after-test" "segfault"

rlAssertExists "$dump_after"
rlLogInfo "$(cat $dump_after)"
rlPhaseEnd

rlAssertGrep "Some segfault happened" "$segfault/checks/dmesg-after-test.txt"
# Reproducible only with reliably dmesg content, e.g. after booting a fresh VM
rlPhaseStartTest "Test dmesg check with $PROVISION_HOW with custom patterns"
rlRun "dump_before=$custom_patterns/checks/dmesg-before-test.txt"
rlRun "dump_after=$custom_patterns/checks/dmesg-after-test.txt"

else
assert_check_result "dmesg as an after-test should pass" "pass" "after-test" "harmless"
rlRun "tmt run --id $run --scratch -a -vv provision -h $PROVISION_HOW test -n /dmesg/custom-patterns"
rlRun "cat $results"

assert_check_result "dmesg as a before-test should fail" "fail" "before-test" "custom-patterns"

rlAssertExists "$dump_before"
rlLogInfo "$(cat $dump_before)"

assert_check_result "dmesg as an after-test should pass" "pass" "after-test" "custom-patterns"

rlAssertExists "$dump_after"
rlLogInfo "$(cat $dump_after)"
fi
rlPhaseEnd
rlPhaseEnd
fi

rlPhaseStartCleanup
rlRun "popd"
Expand Down

0 comments on commit d6b6d93

Please sign in to comment.