From ca7376bb115e2d3506a3efe242bde25118f57c39 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Thu, 10 Mar 2022 15:26:34 -0700 Subject: 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 --- libpod/runtime.go | 4 ++++ test/apiv2/20-containers.at | 2 +- test/apiv2/test-apiv2 | 44 ++++++++++++++++++++++++++++---------------- 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 -- cgit v1.2.3-54-g00ecf