mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
103 lines
2.8 KiB
Bash
103 lines
2.8 KiB
Bash
# -*- sh -*-
|
|
#
|
|
# test more container-related endpoints
|
|
#
|
|
|
|
podman pull $IMAGE &>/dev/null
|
|
|
|
# Ensure clean slate
|
|
podman rm -a -f &>/dev/null
|
|
|
|
podman run -d --name foo --entrypoint='["sh","-c"]' $IMAGE top
|
|
|
|
# Check exists for none such
|
|
t GET libpod/containers/nonesuch/exists 404
|
|
|
|
# Check container foo exists
|
|
t GET libpod/containers/foo/exists 204
|
|
|
|
# Pause and Unpause the container
|
|
if root || have_cgroupsv2; then
|
|
t POST libpod/containers/foo/pause 204
|
|
|
|
t GET libpod/containers/foo/json 200 \
|
|
.Id~[0-9a-f]\\{64\\} \
|
|
.State.Status=paused \
|
|
.ImageName=$IMAGE \
|
|
.Config.Cmd[0]=top \
|
|
.Name=foo
|
|
|
|
t POST libpod/containers/foo/unpause 204
|
|
else
|
|
# cgroupsv1 rootless : pause and unpause are not supported in cgroups v1 rootless
|
|
t POST libpod/containers/foo/pause 500 \
|
|
.cause="this container does not have a cgroup" \
|
|
.message~".*pause containers on rootless containers with cgroup V1"
|
|
|
|
t POST libpod/containers/foo/unpause 500 \
|
|
.cause="container state improper" \
|
|
.message~".*is not paused, can't unpause: container state improper"
|
|
fi
|
|
|
|
t GET libpod/containers/foo/json 200 \
|
|
.Id~[0-9a-f]\\{64\\} \
|
|
.State.Status=running \
|
|
.ImageName=$IMAGE \
|
|
.Config.Cmd[0]=top \
|
|
.Name=foo \
|
|
.Config.StopSignal="SIGTERM" \
|
|
.Config.Entrypoint[0]="sh" \
|
|
.Config.Entrypoint[1]="-c"
|
|
|
|
# now check v4 request return old compatible output
|
|
t GET /v4.0.0/libpod/containers/foo/json 200 \
|
|
.Config.StopSignal=15 \
|
|
.Config.Entrypoint="sh -c"
|
|
|
|
# List processes of the container
|
|
t GET libpod/containers/foo/top 200 \
|
|
length=2 \
|
|
.Processes[0][7]="top"
|
|
|
|
# List processes of none such
|
|
t GET libpod/containers/nonesuch/top 404
|
|
|
|
# Mount the container to host filesystem
|
|
t POST libpod/containers/foo/mount 200
|
|
like "$output" ".*merged" "Check container mount"
|
|
|
|
# Unmount the container
|
|
t POST libpod/containers/foo/unmount 204
|
|
|
|
# export the container fs to tarball
|
|
|
|
t GET libpod/containers/foo/export 200
|
|
like "$(<$WORKDIR/curl.headers.out)" ".*"Content-Type\: application/x-tar".*"
|
|
tar_tf=$(tar tf $WORKDIR/curl.result.out)
|
|
like "$tar_tf" ".*bin/cat.*" "fetched tarball: contains bin/cat path"
|
|
|
|
t DELETE libpod/containers/foo?force=true 200
|
|
|
|
# Create 3 stopped containers to test containers prune
|
|
podman run $IMAGE true
|
|
podman run $IMAGE true
|
|
podman run $IMAGE true
|
|
|
|
t POST libpod/containers/prune 200
|
|
t GET libpod/containers/json 200 \
|
|
length=0
|
|
|
|
# check the config options are not overwritten by acceident
|
|
t POST libpod/containers/create name=test1 image=$IMAGE privileged=true 201
|
|
t GET libpod/containers/test1/json 200 \
|
|
.HostConfig.Annotations.'"io.podman.annotations.privileged"'="TRUE"
|
|
|
|
# now the same without privileged it should not inherit the privileged from before
|
|
t POST libpod/containers/create name=test2 image=$IMAGE 201
|
|
t GET libpod/containers/test2/json 200 \
|
|
.HostConfig.Annotations=null
|
|
|
|
podman rm test1 test2
|
|
|
|
# vim: filetype=sh
|