|
| 1 | +summary: Check that restarting snapd in various ways works as expected |
| 2 | + |
| 3 | +details: | |
| 4 | + This test checks that snapd can be restarted using various permutations |
| 5 | + of `systemctl restart` or `systemctl {stop,start}` without hanging. |
| 6 | +
|
| 7 | +environment: |
| 8 | + SYSTEMCTL_COMMANDS/restart_snapd: "systemctl restart snapd" |
| 9 | + SYSTEMCTL_COMMANDS/restart_snapd_service: "systemctl restart snapd.service" |
| 10 | + SYSTEMCTL_COMMANDS/restart_snapd_service_socket: "systemctl restart snapd.service snapd.socket" |
| 11 | + SYSTEMCTL_COMMANDS/stop_start_snapd: "systemctl stop snapd; systemctl start snapd" |
| 12 | + SYSTEMCTL_COMMANDS/stop_start_snapd_service: "systemctl stop snapd.service; systemctl start snapd.service" |
| 13 | + SYSTEMCTL_COMMANDS/stop_start_snapd_service_socket: "systemctl stop snapd.service snapd.socket; systemctl start snapd.service snapd.socket" |
| 14 | + SYSTEMCTL_COMMANDS/reload_restart_snapd: "systemctl daemon-reload; systemctl restart snapd" |
| 15 | + SYSTEMCTL_COMMANDS/reload_restart_snapd_service: "systemctl daemon-reload; systemctl restart snapd.service" |
| 16 | + SYSTEMCTL_COMMANDS/reload_restart_snapd_service_socket: "systemctl daemon-reload; systemctl restart snapd.service snapd.socket" |
| 17 | + SYSTEMCTL_COMMANDS/reload_stop_start_snapd: "systemctl daemon-reload; systemctl stop snapd; systemctl start snapd" |
| 18 | + SYSTEMCTL_COMMANDS/reload_stop_start_snapd_service: "systemctl daemon-reload; systemctl stop snapd.service; systemctl start snapd.service" |
| 19 | + SYSTEMCTL_COMMANDS/reload_stop_start_snapd_service_socket: "systemctl daemon-reload; systemctl stop snapd.service snapd.socket; systemctl start snapd.service snapd.socket" |
| 20 | + SYSTEMCTL_COMMANDS/restart_snapd_reload: "systemctl restart snapd; systemctl daemon-reload" |
| 21 | + SYSTEMCTL_COMMANDS/restart_snapd_service_reload: "systemctl restart snapd.service; systemctl daemon-reload" |
| 22 | + SYSTEMCTL_COMMANDS/restart_snapd_service_socket_reload: "systemctl restart snapd.service snapd.socket; systemctl daemon-reload" |
| 23 | + SYSTEMCTL_COMMANDS/stop_start_snapd_reload: "systemctl stop snapd; systemctl start snapd; systemctl daemon-reload" |
| 24 | + SYSTEMCTL_COMMANDS/stop_start_snapd_service_reload: "systemctl stop snapd.service; systemctl start snapd.service; systemctl daemon-reload" |
| 25 | + SYSTEMCTL_COMMANDS/stop_start_snapd_service_socket_reload: "systemctl stop snapd.service snapd.socket; systemctl start snapd.service snapd.socket; systemctl daemon-reload" |
| 26 | + |
| 27 | +restore: | |
| 28 | + echo "Wait so we don't hit start limit on repeat runs" |
| 29 | + sleep 10 |
| 30 | +
|
| 31 | +debug: | |
| 32 | + echo "Debug: Check if snapd service and socket are running" |
| 33 | + systemctl is-active snapd.service snapd.socket || true |
| 34 | + systemctl status snapd.service || true |
| 35 | + echo "Debug: Check if snapd has start-limit-hit" |
| 36 | + systemctl show --property=Result snapd.service snapd.socket || true |
| 37 | +
|
| 38 | +execute: | |
| 39 | + echo "Precondition check that snapd is active" |
| 40 | + systemctl is-active snapd.service snapd.socket |
| 41 | +
|
| 42 | + echo "Check that we can query the snapd api" |
| 43 | + snap warnings || true |
| 44 | +
|
| 45 | + SNAPD_PID="$(systemctl show --property MainPID snapd.service | cut -f2 -d=)" |
| 46 | +
|
| 47 | + echo "Run systemctl command(s): '$SYSTEMCTL_COMMANDS'" |
| 48 | + sh -c "$SYSTEMCTL_COMMANDS" |
| 49 | +
|
| 50 | + echo "Wait for snapd to begin restart" |
| 51 | + #shellcheck disable=SC2016 |
| 52 | + retry --wait 1 -n 30 sh -c 'test '"$SNAPD_PID"' != $(systemctl show --property MainPID snapd.service | cut -f2 -d=)' |
| 53 | +
|
| 54 | + echo "Wait until snapd is active" |
| 55 | + retry --wait 1 -n 30 systemctl is-active snapd.service |
| 56 | +
|
| 57 | + echo "Check that we can query the snapd api" |
| 58 | + snap warnings || true |
0 commit comments