-
Notifications
You must be signed in to change notification settings - Fork 201
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: add new spread based snapd integration test
These tests integrate into the GH workflow and run snapd and dbus based integration tests.
- Loading branch information
Showing
5 changed files
with
143 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
name: Run spread | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
|
||
jobs: | ||
spread: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: canonical/setup-lxd@ea57509243d3cf39f8ab926e021bb353947b01b5 | ||
- uses: actions/checkout@v2 | ||
- name: Install spread | ||
run: | | ||
go install github.com/snapcore/spread/cmd/spread@latest | ||
- name: Run the spread test inside LXD | ||
run: | | ||
~/go/bin/spread -v lxd: | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
project: netplan | ||
|
||
backends: | ||
lxd: | ||
systems: [ubuntu-22.04] | ||
qemu: | ||
systems: | ||
- ubuntu-22.04-64: | ||
username: ubuntu | ||
password: ubuntu | ||
|
||
suites: | ||
tests/spread/: | ||
summary: integration tests | ||
|
||
path: /home/tests | ||
|
||
prepare: | | ||
# FIXME: remove after legacy symlink in 107 gets dropped (see meson.build) | ||
# This is needed as the git netplan puts a symlink to /lib/netplan/generate | ||
# but the package has the real generate there | ||
rm -f /lib/netplan/generate | ||
# FIXME: having the debian packging available would allow "apt | ||
# build-dep -y ./" would make this easier :) | ||
apt update -qq | ||
apt install -y build-essential meson pkg-config libyaml-dev \ | ||
libglib2.0-dev uuid-dev python3 libsystemd-dev pandoc python3-pytest \ | ||
python3-coverage libcmocka-dev python3-rich | ||
# install, a bit ugly but this is a container (did I mention the packaging?) | ||
meson setup build --prefix=/usr | ||
meson compile -C build | ||
# FIXME: enable, this crashes right now with: | ||
# https://paste.ubuntu.com/p/qRnJvjyddN/ | ||
#meson test -C build --verbose | ||
meson install -C build --destdir=/ | ||
# set some defaults for the tests | ||
cat > /etc/netplan/0-snapd-defaults.yaml <<'EOF' | ||
network: | ||
version: 2 | ||
bridges: | ||
br54: | ||
dhcp4: true | ||
EOF | ||
echo "Precondition check, the basics work" | ||
netplan get bridges.br54.dhcp4 | MATCH true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
summary: Check that the dbus integration works | ||
|
||
execute: | | ||
# see the basics work | ||
netplan get bridges.br54.dhcp4 | MATCH true | ||
# TODO: actually use busctl | ||
obj_path=$(dbus-send --system --print-reply --type=method_call \ | ||
--dest=io.netplan.Netplan /io/netplan/Netplan \ | ||
io.netplan.Netplan.Config|tail -1 | sed 's/.*"\(.*\)".*/\1/' ) | ||
dbus-send --print-reply --system --type=method_call \ | ||
--dest=io.netplan.Netplan "$obj_path" \ | ||
io.netplan.Netplan.Config.Get | MATCH "version: 2" | ||
# and updating via dbus netplan works | ||
dbus-send --print-reply --system --type=method_call \ | ||
--dest=io.netplan.Netplan "$obj_path" \ | ||
io.netplan.Netplan.Config.Set \ | ||
string:bridges.br54.dhcp4=false string:90-test | ||
# not applied yet | ||
test ! -e /etc/netplan/90-test.yaml | ||
netplan get bridges.br54.dhcp4 | MATCH true | ||
# apply | ||
dbus-send --print-reply --system --type=method_call \ | ||
--dest=io.netplan.Netplan "$obj_path" \ | ||
io.netplan.Netplan.Config.Apply | ||
# and now it's active | ||
test -e /etc/netplan/90-test.yaml | ||
netplan get bridges.br54.dhcp4 | MATCH false | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
summary: Check that the snapd/netplan integration works | ||
|
||
prepare: | | ||
# put snapd in debug mode for good logs | ||
mkdir -p /etc/systemd/system/snapd.service.d | ||
cat <<EOF > /etc/systemd/system/snapd.service.d/local.conf | ||
[Service] | ||
Environment=SNAPD_DEBUG=1 | ||
EOF | ||
systemctl daemon-reload | ||
# install snapd if needed (should be installed on most lxd images) | ||
if ! dpkg -l snapd >/dev/null; then | ||
apt install -y snapd | ||
echo "apt autoremove -y snapd" >> defered.cleanup | ||
fi | ||
# fake running on core (netplan only enabled on ubuntu core) | ||
# FIXME: find a more offical way, this if fugly | ||
cp /etc/os-release /etc/os-release.save | ||
sed -i s/ID=ubuntu/ID=ubuntu-core/ /etc/os-release | ||
M=/var/lib/snapd/assertions/asserts-v0/model/16/generic/generic-classic/active | ||
cp "$M" model.save | ||
snap known --remote model series=16 brand-id=canonical model=ubuntu-core-18-amd64 > model.fake | ||
mv model.fake "$M" | ||
# restart snapd | ||
systemctl restart snapd | ||
restore: | | ||
mv /etc/os-release.save /etc/os-release | ||
mv model.save /var/lib/snapd/assertions/asserts-v0/model/16/generic/generic-classic/active | ||
sudo systemctl restart snapd | ||
if [ -e defered.cleanup ]; then | ||
sh -ex defered.cleanup | ||
fi | ||
rm -f model.* | ||
debug: | | ||
journalctl -u snapd | ||
snap get system -d | ||
snap version | ||
execute: | | ||
# see the basics work | ||
netplan get bridges.br54.dhcp4 | MATCH true | ||
snap get system system.network.netplan.network.bridges.br54.dhcp4 | MATCH true | ||
# and updating netplan works | ||
snap set system system.network.netplan.network.bridges.br54.dhcp4=false | ||
netplan get bridges.br54.dhcp4 | MATCH false | ||
snap get system system.network.netplan.network.bridges.br54.dhcp4 | MATCH false |