summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2022-03-10 15:26:34 -0700
committerJhon Honce <jhonce@redhat.com>2022-03-15 14:45:11 -0700
commitca7376bb115e2d3506a3efe242bde25118f57c39 (patch)
tree512f4248a4b1a387f4b348bd02d2e70f6afe86d7
parentfa0d3c564a0868e79d46d0bfbfea40a98456f2b4 (diff)
downloadpodman-ca7376bb115e2d3506a3efe242bde25118f57c39.tar.gz
podman-ca7376bb115e2d3506a3efe242bde25118f57c39.tar.bz2
podman-ca7376bb115e2d3506a3efe242bde25118f57c39.zip
Exit with 0 when receiving SIGTERM
* systemctl stop podman.service will now return exit code 0 * Update test framework to support JSON boolean and numeric values Signed-off-by: Jhon Honce <jhonce@redhat.com>
-rw-r--r--libpod/runtime.go4
-rw-r--r--test/apiv2/20-containers.at2
-rwxr-xr-xtest/apiv2/test-apiv244
3 files changed, 33 insertions, 17 deletions
diff --git a/libpod/runtime.go b/libpod/runtime.go
index d19997709..07653217a 100644
--- a/libpod/runtime.go
+++ b/libpod/runtime.go
@@ -210,6 +210,10 @@ func newRuntimeFromConfig(ctx context.Context, conf *config.Config, options ...R
}
if err := shutdown.Register("libpod", func(sig os.Signal) error {
+ // For `systemctl stop podman.service` support, exit code should be 0
+ if sig == syscall.SIGTERM {
+ os.Exit(0)
+ }
os.Exit(1)
return nil
}); err != nil && errors.Cause(err) != shutdown.ErrHandlerExists {
diff --git a/test/apiv2/20-containers.at b/test/apiv2/20-containers.at
index 49f8fb3fc..94de2cf24 100644
--- a/test/apiv2/20-containers.at
+++ b/test/apiv2/20-containers.at
@@ -280,7 +280,7 @@ t DELETE containers/$cid_top 204
t POST containers/create \
Image=$ENV_WORKDIR_IMG \
WorkingDir=/dataDir \
- StopSignal=9 \
+ StopSignal=\"9\" \
201 \
.Id~[0-9a-f]\\{64\\}
cid=$(jq -r '.Id' <<<"$output")
diff --git a/test/apiv2/test-apiv2 b/test/apiv2/test-apiv2
index ff328cfc8..c3545522e 100755
--- a/test/apiv2/test-apiv2
+++ b/test/apiv2/test-apiv2
@@ -194,8 +194,16 @@ function jsonify() {
local rhs
IFS='=' read lhs rhs <<<"$i"
- # If right-hand side already includes double quotes, do nothing
- if [[ ! $rhs =~ \" ]]; then
+ if [[ $rhs =~ \" || $rhs == true || $rhs == false || $rhs =~ ^-?[0-9]+$ ]]; then
+ # rhs has been pre-formatted for JSON or a non-string, do not change it
+ :
+ elif [[ $rhs == False ]]; then
+ # JSON boolean is lowercase only
+ rhs=false
+ elif [[ $rhs == True ]]; then
+ # JSON boolean is lowercase only
+ rhs=true
+ else
rhs="\"${rhs}\""
fi
settings_out+=("\"${lhs}\":${rhs}")
@@ -241,26 +249,30 @@ function t() {
# entrypoint path can include a descriptive comment; strip it off
path=${path%% *}
- # path may include JSONish params that curl will barf on; url-encode them
- path="${path//'['/%5B}"
- path="${path//']'/%5D}"
- path="${path//'{'/%7B}"
- path="${path//'}'/%7D}"
- path="${path//':'/%3A}"
+ local url=$path
+ if ! [[ $path =~ ^'http://' ]]; then
+ # path may include JSONish params that curl will barf on; url-encode them
+ path="${path//'['/%5B}"
+ path="${path//']'/%5D}"
+ path="${path//'{'/%7B}"
+ path="${path//'}'/%7D}"
+ path="${path//':'/%3A}"
+
+ # If given path begins with /, use it as-is; otherwise prepend /version/
+ url=http://$HOST:$PORT
+ case "$path" in
+ /*) url="$url$path" ;;
+ libpod/*) url="$url/v4.0.0/$path" ;;
+ *) url="$url/v1.41/$path" ;;
+ esac
+ fi
# curl -X HEAD but without --head seems to wait for output anyway
if [[ $method == "HEAD" ]]; then
curl_args="--head"
fi
- local expected_code=$1; shift
- # If given path begins with /, use it as-is; otherwise prepend /version/
- local url=http://$HOST:$PORT
- case "$path" in
- /*) url="$url$path" ;;
- libpod/*) url="$url/v4.0.0/$path" ;;
- *) url="$url/v1.41/$path" ;;
- esac
+ local expected_code=$1; shift
# Log every action we do
echo "-------------------------------------------------------------" >>$LOG