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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
summary: Verify snap debug execution command
details: |
This test checks that the command `snap debug execution` shows right
outputs, but also verifies their correctness on the target systems
debug: |
grep -n '' snap-*.out || true
execute: |
# TODO: remove this check once snapd 2.65 is released
if tests.info is-snapd-from-archive; then
exit 0
fi
snap debug execution snap > snap-default.out
SNAP_REEXEC=0 snap debug execution snap > snap-no-reexec.out
SNAP_REEXEC=1 snap debug execution snap > snap-yes-reexec.out
# this may fail when apparmor isn't found at all
(snap debug execution apparmor || true) > snap-apparmor-default.out
(SNAP_REEXEC=0 snap debug execution apparmor || true) > snap-apparmor-no-reexec.out
snap debug execution internal-tool snap-update-ns > snap-uns-default.out
case "$SPREAD_SYSTEM" in
ubuntu-core-*)
echo "Checking Ubuntu Core default scenario"
MATCH 'distro-supports-reexec: false' < snap-default.out
MATCH 'is-reexec-enabled: true' < snap-default.out
MATCH 'is-reexec-explicitly-enabled: false' < snap-default.out
if os.query is-core16; then
# snap is part of the core snap
MATCH 'is-reexecd: false' < snap-default.out
MATCH 'self-exe: /usr/bin/snap' < snap-default.out
else
# UC18+ with snapd snap
MATCH 'is-reexecd: true' < snap-default.out
MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-default.out
fi
echo "Checking Ubuntu Core with reexec scenario"
MATCH 'distro-supports-reexec: false' < snap-yes-reexec.out
MATCH 'is-reexec-enabled: true' < snap-yes-reexec.out
MATCH 'is-reexec-explicitly-enabled: true' < snap-yes-reexec.out
MATCH 'is-reexecd: true' < snap-yes-reexec.out
if os.query is-core16; then
MATCH 'self-exe: /snap/core/.*/usr/bin/snap' < snap-yes-reexec.out
else
MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-yes-reexec.out
fi
echo "Checking Ubuntu Core without reexec scenario"
MATCH 'distro-supports-reexec: false' < snap-no-reexec.out
MATCH 'is-reexec-explicitly-enabled: false' < snap-no-reexec.out
if os.query is-core16; then
MATCH 'is-reexec-enabled: false' < snap-no-reexec.out
MATCH 'is-reexecd: false' < snap-no-reexec.out
MATCH 'self-exe: /usr/bin/snap' < snap-no-reexec.out
else
MATCH 'is-reexec-enabled: true' < snap-no-reexec.out
MATCH 'is-reexecd: true' < snap-no-reexec.out
MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-no-reexec.out
fi
echo "Checking Ubuntu Core AppArmor"
if os.query is-core16; then
MATCH 'apparmor-parser: /sbin/apparmor_parser' < snap-apparmor-default.out
MATCH 'internal: false' < snap-apparmor-default.out
else
MATCH 'apparmor-parser: /snap/snapd/.*/usr/lib/snapd/apparmor_parser' < snap-apparmor-default.out
MATCH 'apparmor-parser-command: /snap/snapd/.*/apparmor_parser --config-file /snap/snapd/.*/usr/lib/snapd/apparmor/parser.conf --base /snap/snapd/.*/usr/lib/snapd/apparmor\.d --policy-features /snap/snapd/.*/usr/lib/snapd/apparmor\.d/abi/4\.0' < snap-apparmor-default.out
MATCH 'internal: true' < snap-apparmor-default.out
fi
;;
ubuntu-*|debian-*)
echo "Checking default scenario"
MATCH 'distro-supports-reexec: true' < snap-default.out
MATCH 'is-reexec-enabled: true' < snap-default.out
MATCH 'is-reexec-explicitly-enabled: false' < snap-default.out
MATCH 'is-reexecd: true' < snap-default.out
MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-default.out
echo "Checking without reeexec scenario"
MATCH 'distro-supports-reexec: true' < snap-no-reexec.out
MATCH 'is-reexec-enabled: false' < snap-no-reexec.out
MATCH 'is-reexec-explicitly-enabled: false' < snap-no-reexec.out
MATCH 'is-reexecd: false' < snap-no-reexec.out
MATCH 'self-exe: /usr/bin/snap' < snap-no-reexec.out
echo "Checking AppArmor"
MATCH 'apparmor-parser: /snap/snapd/.*/usr/lib/snapd/apparmor_parser' < snap-apparmor-default.out
MATCH 'apparmor-parser-command: /snap/snapd/.*/apparmor_parser --config-file /snap/snapd/.*/usr/lib/snapd/apparmor/parser.conf --base /snap/snapd/.*/usr/lib/snapd/apparmor\.d --policy-features /snap/snapd/.*/usr/lib/snapd/apparmor\.d/abi/4\.0' < snap-apparmor-default.out
MATCH 'internal: true' < snap-apparmor-default.out
if os.query is-xenial || os.query is-bionic; then
# Ubuntu < 20.04 does not have usr-merge
MATCH 'apparmor-parser: /sbin/apparmor_parser' < snap-apparmor-no-reexec.out
MATCH 'internal: false' < snap-apparmor-no-reexec.out
else
MATCH 'apparmor-parser: /usr/sbin/apparmor_parser' < snap-apparmor-no-reexec.out
MATCH 'internal: false' < snap-apparmor-no-reexec.out
fi
MATCH 'snap-update-ns: /snap/snapd/.*/usr/lib/snapd/snap-update-ns' < snap-uns-default.out
;;
*)
echo "Checking default scenario"
MATCH 'distro-supports-reexec: false' < snap-default.out
MATCH 'is-reexec-enabled: true' < snap-default.out
MATCH 'is-reexec-explicitly-enabled: false' < snap-default.out
MATCH 'is-reexecd: false' < snap-default.out
MATCH 'self-exe: /usr/bin/snap' < snap-default.out
echo "Checking with reexec scenario"
MATCH 'distro-supports-reexec: false' < snap-yes-reexec.out
MATCH 'is-reexec-enabled: true' < snap-yes-reexec.out
MATCH 'is-reexec-explicitly-enabled: true' < snap-yes-reexec.out
# actual outcome depends on whether there is a /snap ->
# /var/lib/snapd/snap symlink on systems where snaps are not mounted
# under /snap
# TODO: once snapd snap lands the output wlll be different:
# MATCH 'is-reexecd: false' < snap-yes-reexec.out
# MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-yes-reexec.out
case "$SPREAD_SYSTEM" in
arch-linux-*|fedora-*|centos-*)
# no /snap -> /var/lib/snapd/snap symlink by default
MATCH 'is-reexecd: false' < snap-yes-reexec.out
MATCH 'self-exe: /usr/bin/snap' < snap-yes-reexec.out
;;
opensuse-*)
# snap mount dir is /snap
MATCH 'is-reexecd: true' < snap-yes-reexec.out
MATCH 'self-exe: /snap/snapd/.*/usr/bin/snap' < snap-yes-reexec.out
;;
amazon-linux-*)
# has /snap -> /var/lib/snapd symlink
MATCH 'is-reexecd: true' < snap-yes-reexec.out
MATCH 'self-exe: /var/lib/snapd/snap/snapd/.*/usr/bin/snap' < snap-yes-reexec.out
;;
*)
echo "unexpected distro $SPREAD_SYSTEM"
exit 1
;;
esac
echo "Checking AppArmor"
case "$SPREAD_SYSTEM" in
fedora-*|centos-*|amazon-linux-*)
MATCH 'apparmor-parser: error:file does not exist' < snap-apparmor-default.out
;;
*)
MATCH 'apparmor-parser: (/usr)?/sbin/apparmor_parser' < snap-apparmor-default.out
;;
esac
MATCH 'internal: false' < snap-apparmor-default.out
MATCH 'snap-update-ns: /usr/lib(exec)?/snapd/snap-update-ns' < snap-uns-default.out
;;
esac
|