Merge pull request #22736 from ypu/quadlet_journald

test/system: Add test for journald log check in quadlet
This commit is contained in:
openshift-merge-bot[bot] 2024-06-25 09:20:04 +00:00 committed by GitHub
commit c0ec20b98d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 49 additions and 2 deletions

View File

@ -143,6 +143,39 @@ function remove_secret() {
run_podman secret rm $secret_name run_podman secret rm $secret_name
} }
function wait_for_journal() {
local step=1
local count=10
local expect_str=
while [ "$#" -gt 0 ]; do
case "$1" in
-s|--step)
step="$2"
shift 2
;;
-c|--count)
count="$2"
shift 2
;;
*)
expect_str="$1"
shift 1
;;
esac
done
while [ "$count" -gt 0 ]; do
run journalctl "--since=$STARTED_TIME" --unit="$QUADLET_SERVICE_NAME"
if [[ "$output" =~ "$expect_str" ]]; then
return
fi
sleep "$step"
count=$(( count - 1 ))
done
die "Timed out waiting for '$expect_str' in journalctl output"
}
@test "quadlet - basic" { @test "quadlet - basic" {
# Network=none is to work around a Pasta bug, can be removed once a patched Pasta is available. # Network=none is to work around a Pasta bug, can be removed once a patched Pasta is available.
# Ref https://github.com/containers/podman/pull/21563#issuecomment-1965145324 # Ref https://github.com/containers/podman/pull/21563#issuecomment-1965145324
@ -230,13 +263,15 @@ EOF
service_cleanup $QUADLET_SERVICE_NAME inactive service_cleanup $QUADLET_SERVICE_NAME inactive
} }
@test "quadlet - ContainerName" { @test "quadlet - ContainerName and journal output check" {
local quadlet_file=$PODMAN_TMPDIR/containername_$(random_string).container local quadlet_file=$PODMAN_TMPDIR/containername_$(random_string).container
local token_out="STDOUT$(random_string 10)"
local token_err="STDERR$(random_string 10)"
cat > $quadlet_file <<EOF cat > $quadlet_file <<EOF
[Container] [Container]
ContainerName=customcontainername ContainerName=customcontainername
Image=$IMAGE Image=$IMAGE
Exec=top" Exec=sh -c "echo $token_out; echo $token_err 1>&2; top -d 10"
EOF EOF
run_quadlet "$quadlet_file" run_quadlet "$quadlet_file"
@ -246,6 +281,18 @@ EOF
run_podman container inspect --format "{{.State.Status}}" customcontainername run_podman container inspect --format "{{.State.Status}}" customcontainername
is "$output" "running" "container should be started by systemd and hence be running" is "$output" "running" "container should be started by systemd and hence be running"
wait_for_journal "Started $QUADLET_SERVICE_NAME"
run journalctl "--since=$STARTED_TIME" --unit="$QUADLET_SERVICE_NAME"
assert "$output" =~ "$token_out" "Output can be found with journalctl"
assert "$output" =~ "$token_err" "Error can be found with journalctl"
assert "$output" =~ "Starting $QUADLET_SERVICE_NAME" "Status information can be found with journalctl"
# log priority 3 in journalctl is err. This is documented in syslog(3)
run journalctl "--since=$STARTED_TIME" --priority=3 --unit="$QUADLET_SERVICE_NAME"
assert "$output" =~ "$token_err" "Error can be found with journalctl --priority=3"
assert "$output" !~ "$token_out" "Output can not be found with journalctl --priority=3"
service_cleanup $QUADLET_SERVICE_NAME failed service_cleanup $QUADLET_SERVICE_NAME failed
} }