Skip to content

Commit

Permalink
System tests: fix three races
Browse files Browse the repository at this point in the history
Three tests were running 'container rm' on 'start'ed containers
that might not yet have exited. Fix. Also, tighten up the
tests themselves, to make even more sure that they test
what they're supposed to test.

Discovered, in CI, that 'podman-remote logs --timestamps'
was unimplemented. Thanks to @Luap99 for the fix to that.

Fixes: #15783
Fixes: #15795

Signed-off-by: Ed Santiago <[email protected]>
  • Loading branch information
edsantiago committed Sep 14, 2022
1 parent 017d81d commit d4a62ff
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
2 changes: 1 addition & 1 deletion pkg/domain/infra/tunnel/containers.go
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ func (ic *ContainerEngine) ContainerLogs(_ context.Context, nameOrIDs []string,
stdout := opts.StdoutWriter != nil
stderr := opts.StderrWriter != nil
options := new(containers.LogOptions).WithFollow(opts.Follow).WithSince(since).WithUntil(until).WithStderr(stderr)
options.WithStdout(stdout).WithTail(tail)
options.WithStdout(stdout).WithTail(tail).WithTimestamps(opts.Timestamps)

var err error
stdoutCh := make(chan string)
Expand Down
23 changes: 19 additions & 4 deletions test/system/035-logs.bats
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,28 @@ function _log_test_tail() {
run_podman run -d --log-driver=$driver $IMAGE sh -c "echo test1; echo test2"
cid="$output"

run_podman logs --tail 1 $cid
is "$output" "test2" "logs should only show last line"
run_podman wait $cid
run_podman logs --tail 1 --timestamps $cid
log1="$output"
assert "$log1" =~ "^[0-9-]+T[0-9:.]+([\+-][0-9:]+|Z) test2" \
"logs should only show last line"

# Sigh. I hate doing this, but podman-remote --timestamp only has 1-second
# resolution (regular podman has sub-second). For the timestamps-differ
# check below, we need to force a different second.
if is_remote; then
sleep 2
fi

run_podman restart $cid
run_podman wait $cid

run_podman logs -t --tail 1 $cid
log2="$output"
assert "$log2" =~ "^[0-9-]+T[0-9:.]+([\+-][0-9:]+|Z) test2" \
"logs, after restart, shows only last line"

run_podman logs --tail 1 $cid
is "$output" "test2" "logs should only show last line after restart"
assert "$log2" != "$log1" "log timestamps should differ"

run_podman rm $cid
}
Expand Down
2 changes: 2 additions & 0 deletions test/system/045-start.bats
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ load helpers
@test "podman start --filter - start only containers that match the filter" {
run_podman run -d $IMAGE /bin/true
cid="$output"
run_podman wait $cid

run_podman start --filter restart-policy=always $cid
is "$output" "" "CID of restart-policy=always container"

Expand Down
5 changes: 4 additions & 1 deletion test/system/420-cgroups.bats
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ load helpers
esac

run_podman --cgroup-manager=$other run --name myc $IMAGE true
assert "$output" = "" "run true, with cgroup-manager=$other, is silent"

run_podman container inspect --format '{{.HostConfig.CgroupManager}}' myc
is "$output" "$other" "podman preserved .HostConfig.CgroupManager"

Expand All @@ -29,7 +31,8 @@ load helpers

# Restart the container, without --cgroup-manager option (ie use default)
# Prior to #7970, this would fail with an OCI runtime error
run_podman start myc
run_podman start -a myc
assert "$output" = "" "restarted container emits no output"

run_podman rm myc
}
Expand Down

0 comments on commit d4a62ff

Please sign in to comment.