Skip to content

Commit e509759

Browse files
committed
tests: add test of systemctl restarting snapd in various ways
Signed-off-by: Oliver Calder <oliver.calder@canonical.com>
1 parent cca7f18 commit e509759

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

  • tests/main/systemctl-restart-snapd-variations
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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

Comments
 (0)