File: task.yaml

package info (click to toggle)
snapd 2.72-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 80,412 kB
  • sloc: sh: 16,506; ansic: 16,211; python: 11,213; makefile: 1,919; exp: 190; awk: 58; xml: 22
file content (96 lines) | stat: -rw-r--r-- 3,515 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
summary: Check snap refresh hold and unhold

details: |
  Check that running `snap refresh --hold` without specifying snaps prevents
  auto-refreshes for a configurable amount of time (even indefinitely) but not
  general refreshes (i.e., refreshes triggered by a `snap refresh` without
  specifying arguments). Check that holding refreshes for specific snaps
  prevents general refreshes as well as auto-refreshes but not specific snap
  refreshes.

prepare: |
  snap install test-snapd-tools
  snap set system experimental.parallel-instances=true
  snap install test-snapd-tools_instance

restore: |
  snap refresh --unhold || true
  snap refresh --unhold test-snapd-tools || true
  snap remove --purge test-snapd-tools || true

debug: |
  snap changes
  # show last 3 changes in detail
  snap changes | tail -n 4 | awk '{ if (NF != 0) system("snap change " $1) }'

execute: |
  reset() {
    snap refresh --channel=latest/stable test-snapd-tools
    snap refresh --channel=latest/stable test-snapd-tools_instance
    snap refresh --unhold test-snapd-tools
    snap refresh --unhold
  }

  echo "No snaps auto-refresh in an all-snaps hold"
  snap refresh --hold=forever

  systemctl stop snapd.{service,socket}
  "$TESTSTOOLS"/snapd-state change-snap-channel test-snapd-tools edge
  "$TESTSTOOLS"/snapd-state force-autorefresh
  systemctl start snapd.{socket,service}

  if retry -n 15 --quiet sh -c 'snap changes | tail -2 | grep "(Done|Doing).*Auto-refresh"'; then
    echo "expected 'snap refresh --hold' to prevent auto-refresh"
    exit 1
  fi

  echo "Snap doesn't auto-refresh with a specific hold"
  reset
  snap refresh --hold test-snapd-tools

  CHANGE_ID=$(snap changes | tail -n 2 | head -n 1 | awk '{print $1}')
  systemctl stop snapd.{service,socket}
  "$TESTSTOOLS"/snapd-state change-snap-channel test-snapd-tools edge
  "$TESTSTOOLS"/snapd-state change-snap-channel test-snapd-tools_instance edge
  "$TESTSTOOLS"/snapd-state force-autorefresh
  systemctl start snapd.{socket,service}

  if ! "$TESTSTOOLS"/snapd-state wait-for-snap-autorefresh test-snapd-tools_instance "$CHANGE_ID"; then
    echo 'expected "test-snapd-tools_instance" to have been auto-refreshed'
    exit 1
  fi

  # check that "test-snapd-tools" wasn't auto-refreshed before "test-snapd-tools_instance"
  snap changes | tail -3 | NOMATCH 'Auto-refresh snap "test-snapd-tools"'

  echo "Snaps auto-refresh without holds"
  reset
  CHANGE_ID=$(snap changes | tail -2 | grep "Done.*Remove auto-refresh hold on all snaps" | awk '{print $1}')

  systemctl stop snapd.{service,socket}
  "$TESTSTOOLS"/snapd-state change-snap-channel test-snapd-tools edge
  "$TESTSTOOLS"/snapd-state force-autorefresh
  systemctl start snapd.{socket,service}

  "$TESTSTOOLS"/snapd-state wait-for-autorefresh "$CHANGE_ID"

  echo "Held snaps don't refresh in general refreshes"
  reset
  snap refresh --hold=forever test-snapd-tools
  snap switch --edge test-snapd-tools_instance
  snap refresh 2>&1 | MATCH "test-snapd-tools_instance .* refreshed"

  echo "Held snaps are refreshed in specific refreshes"
  reset
  snap refresh --hold test-snapd-tools
  snap refresh --channel=latest/edge test-snapd-tools 2>&1 | MATCH "test-snapd-tools .* refreshed"

  echo "Generic refreshes ignore holds on all snaps"
  reset
  snap refresh --hold

  systemctl stop snapd.{service,socket}
  "$TESTSTOOLS"/snapd-state change-snap-channel test-snapd-tools edge
  systemctl start snapd.{socket,service}

  snap refresh 2>&1 | MATCH "test-snapd-tools .* refreshed"