Files
podman/test/apiv2/01-basic.at
Jhon Honce f9c392f50a V2 API Version Support
* Update blang/semver to allow ParseTolerant() support
* Provide helper functions for API handlers to obtain client's 'version'
  path variable focused on API endpoint tree: libpod vs. compat
* Introduce new errors:
  * version not given in path, endpoints may determine if this is a hard
    error (ErrVersionNotGiven)
  * given version not supported (ErrVersionNotSupported), only a soft
    error if the handler is going to hijack the connection
* Added unit tests for version parsing
* bindings check version on connect:
  * client <= Server API version connection is continued
  * client >= Server API version connection fails

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-05-20 10:21:30 -07:00

72 lines
2.0 KiB
Bash

# -*- sh -*-
#
# The earliest most basic tests. If any of these fail, life is bad
#
# NOTE: paths with a leading slash will be interpreted as-is;
# paths without will have '/v1.40/' prepended.
t GET /_ping 200 OK
t HEAD /_ping 200
t GET /libpod/_ping 200 OK
for i in /version version; do
t GET $i 200 \
.Components[0].Name="Podman Engine" \
.Components[0].Details.APIVersion=1.0.0 \
.Components[0].Details.MinAPIVersion=1.0.0 \
.Components[0].Details.Os=linux \
.ApiVersion=1.0.0 \
.MinAPIVersion=1.0.0 \
.Os=linux
done
#
# Garbage tests - requests that should yield errors
#
t GET /nonesuch 404
t POST /nonesuch '' 404
t GET container/nonesuch/json 404
t GET libpod/containers/nonesuch/json 404
#### FIXME: maybe someday: t GET 'libpod/containers/json?a=b' 400
# Method not allowed
t POST /_ping '' 405
t DELETE /_ping 405
t POST libpod/containers/json '' 405
t POST libpod/pods/abc '' 405
t POST info '' 405
t GET libpod/containers/create 405
#
# system info
#
# Some day perhaps it will always be runc; for now, cgroupsv2 requires crun
#
# FIXME: run 'podman info --format=json', and compare select fields
runtime=runc
if have_cgroupsv2; then
runtime=crun
fi
t GET info 200 \
.OSType=linux \
.DefaultRuntime~.*$runtime \
.MemTotal~[0-9]\\+
# Timing: make sure server stays responsive
t0=$SECONDS
for i in $(seq 1 10); do
# FIXME: someday: refactor t(), separate out the 'curl' logic so we
# can call it directly. Then we won't get ten annoying 'ok' lines.
t GET info 200
done
t1=$SECONDS
delta_t=$((t1 - t2))
if [ $delta_t -le 5 ]; then
_show_ok 1 "Time for ten /info requests ($delta_t seconds) <= 5s"
else
_show_ok 0 "Time for ten /info requests" "<= 5 seconds" "$delta_t seconds"
fi
# vim: filetype=sh