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
|
summary: check that content interface works with parallel instances
details: |
Use the content interface along with parallel instances of snaps. Verify
that the content is made available to each snap instance when connected.
Make sure that data access works.
# takes >1.5min to run in total
backends: [-autopkgtest]
environment:
VAR/data: SNAP_DATA
VAR/common: SNAP_COMMON
VAR/snap: SNAP
CONTENT/data: data
CONTENT/common: common
CONTENT/snap: snap
prepare: |
snap set system experimental.parallel-instances=true
execute: |
"$TESTSTOOLS"/snaps-state install-local test-snapd-content-advanced-slot
"$TESTSTOOLS"/snaps-state install-local test-snapd-content-advanced-plug
"$TESTSTOOLS"/snaps-state install-local-as test-snapd-content-advanced-plug test-snapd-content-advanced-plug_foo
"$TESTSTOOLS"/snaps-state install-local-as test-snapd-content-advanced-plug test-snapd-content-advanced-plug_bar
test-snapd-content-advanced-plug.sh -c "$(printf 'test ! -e $%s/target' "$VAR")"
# connect one of the instances
snap connect "test-snapd-content-advanced-plug_foo:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
# the target directory must exist in this instance only
test-snapd-content-advanced-plug_foo.sh -c "$(printf 'test -d $%s/target' "$VAR")"
test-snapd-content-advanced-plug.sh -c "$(printf 'test ! -e $%s/target' "$VAR")"
test-snapd-content-advanced-plug_bar.sh -c "$(printf 'test ! -e $%s/target' "$VAR")"
# and the source directory exists too
test-snapd-content-advanced-slot.sh -c "$(printf 'test -d $%s/source' "$VAR")"
# connect the rest
snap connect "test-snapd-content-advanced-plug:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
snap connect "test-snapd-content-advanced-plug_bar:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
if [[ "$VAR" != "SNAP" ]]; then
# write some test data in one of the instances
# shellcheck disable=SC2016
test-snapd-content-advanced-plug_bar.sh -c "$(printf 'echo hello from $SNAP_INSTANCE_NAME >> $%s/target/canary' "$VAR")"
# should be visible in the other one now
test-snapd-content-advanced-plug_foo.sh -c "$(printf 'cat $%s/target/canary' "$VAR")" | MATCH 'hello from test-snapd-content-advanced-plug_bar'
# some more data
# shellcheck disable=SC2016
test-snapd-content-advanced-plug_foo.sh -c "$(printf 'echo hello from $SNAP_INSTANCE_NAME >> $%s/target/canary' "$VAR")"
# all of it is visible
test-snapd-content-advanced-plug.sh -c "$(printf 'cat $%s/target/canary' "$VAR")" | MATCH 'hello from test-snapd-content-advanced-plug_bar
hello from test-snapd-content-advanced-plug_foo'
test-snapd-content-advanced-slot.sh -c "$(printf 'cat $%s/source/canary' "$VAR")" | MATCH 'hello from test-snapd-content-advanced-plug_bar
hello from test-snapd-content-advanced-plug_foo'
else
test-snapd-content-advanced-plug_foo.sh -c "$(printf 'cat $%s/target/canary' "$VAR")" | MATCH 'just some data'
test-snapd-content-advanced-plug_bar.sh -c "$(printf 'cat $%s/target/canary' "$VAR")" | MATCH 'just some data'
test-snapd-content-advanced-plug.sh -c "$(printf 'cat $%s/target/canary' "$VAR")" | MATCH 'just some data'
fi
# when the interface is disconnected
snap disconnect "test-snapd-content-advanced-plug:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
snap disconnect "test-snapd-content-advanced-plug_bar:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
snap disconnect "test-snapd-content-advanced-plug_foo:$CONTENT" "test-snapd-content-advanced-slot:$CONTENT"
# the content is not visible anymore
test-snapd-content-advanced-plug_bar.sh -c "$(printf 'test ! -e $%s/target/canary' "$VAR")"
test-snapd-content-advanced-plug_foo.sh -c "$(printf 'test ! -e $%s/target/canary' "$VAR")"
test-snapd-content-advanced-plug.sh -c "$(printf 'test ! -e $%s/target/canary' "$VAR")"
|