1
0
mirror of https://github.com/lxc/incus.git synced 2026-02-05 09:46:19 +01:00
Files
incus/test/suites/dev_incus.sh
Stéphane Graber 60b0a97720 tests: Standardize indentation
This is the result of: shfmt -w -i 4 -sr -l test/

Signed-off-by: Stéphane Graber <stgraber@stgraber.org>
2025-07-31 15:15:11 -04:00

146 lines
4.5 KiB
Bash

test_dev_incus() {
ensure_import_testimage
(
cd dev_incus-client || return
# Use -buildvcs=false here to prevent git complaining about untrusted directory when tests are run as root.
go build -tags netgo -v -buildvcs=false ./...
)
incus launch testimage dev-incus -c security.guestapi=false
! incus exec dev-incus -- test -S /dev/incus/sock || false
incus config unset dev-incus security.guestapi
incus exec dev-incus -- test -S /dev/incus/sock
incus file push --mode 0755 "dev_incus-client/dev_incus-client" dev-incus/bin/
incus config set dev-incus user.foo bar
incus exec dev-incus -- dev_incus-client user.foo | grep bar
incus config set dev-incus user.foo "bar %s bar"
incus exec dev-incus -- dev_incus-client user.foo | grep "bar %s bar"
incus config set dev-incus security.nesting true
! incus exec dev-incus -- dev_incus-client security.nesting | grep true || false
cmd=$(
unset -f incus
command -v incus
)
${cmd} exec dev-incus -- dev_incus-client monitor-websocket > "${TEST_DIR}/dev_incus-websocket.log" &
client_websocket=$!
${cmd} exec dev-incus -- dev_incus-client monitor-stream > "${TEST_DIR}/dev_incus-stream.log" &
client_stream=$!
(
cat << EOF
metadata:
key: user.foo
old_value: bar
value: baz
timestamp: null
type: config
metadata:
action: added
config:
path: /mnt
source: ${TEST_DIR}
type: disk
name: mnt
timestamp: null
type: device
metadata:
action: removed
config:
path: /mnt
source: ${TEST_DIR}
type: disk
name: mnt
timestamp: null
type: device
EOF
) > "${TEST_DIR}/dev_incus.expected"
MATCH=0
for _ in $(seq 10); do
incus config set dev-incus user.foo bar
incus config set dev-incus security.nesting true
true > "${TEST_DIR}/dev_incus-websocket.log"
true > "${TEST_DIR}/dev_incus-stream.log"
incus config set dev-incus user.foo baz
incus config set dev-incus security.nesting false
incus config device add dev-incus mnt disk source="${TEST_DIR}" path=/mnt
incus config device remove dev-incus mnt
if [ "$(tr -d '\0' < "${TEST_DIR}/dev_incus-websocket.log" | md5sum | cut -d' ' -f1)" != "$(md5sum "${TEST_DIR}/dev_incus.expected" | cut -d' ' -f1)" ] || [ "$(tr -d '\0' < "${TEST_DIR}/dev_incus-stream.log" | md5sum | cut -d' ' -f1)" != "$(md5sum "${TEST_DIR}/dev_incus.expected" | cut -d' ' -f1)" ]; then
sleep 0.5
continue
fi
MATCH=1
break
done
kill -9 "${client_websocket}"
kill -9 "${client_stream}"
incus monitor --type=lifecycle > "${TEST_DIR}/dev_incus.log" &
monitorDevIncusPID=$!
# Test instance Ready state
incus info dev-incus | grep -q 'Status: RUNNING'
incus exec dev-incus -- dev_incus-client ready-state true
[ "$(incus config get dev-incus volatile.last_state.ready)" = "true" ]
grep -Fc "instance-ready" "${TEST_DIR}/dev_incus.log" | grep -Fx 1
incus info dev-incus | grep -q 'Status: READY'
incus exec dev-incus -- dev_incus-client ready-state false
[ "$(incus config get dev-incus volatile.last_state.ready)" = "false" ]
grep -Fc "instance-ready" "${TEST_DIR}/dev_incus.log" | grep -Fx 1
incus info dev-incus | grep -q 'Status: RUNNING'
kill -9 ${monitorDevIncusPID} || true
shutdown_incus "${INCUS_DIR}"
respawn_incus "${INCUS_DIR}" true
# volatile.last_state.ready should be unset during daemon init
[ -z "$(incus config get dev-incus volatile.last_state.ready)" ]
incus monitor --type=lifecycle > "${TEST_DIR}/dev_incus.log" &
monitorDevIncusPID=$!
incus exec dev-incus -- dev_incus-client ready-state true
[ "$(incus config get dev-incus volatile.last_state.ready)" = "true" ]
grep -Fc "instance-ready" "${TEST_DIR}/dev_incus.log" | grep -Fx 1
incus stop -f dev-incus
[ "$(incus config get dev-incus volatile.last_state.ready)" = "false" ]
incus start dev-incus
incus exec dev-incus -- dev_incus-client ready-state true
[ "$(incus config get dev-incus volatile.last_state.ready)" = "true" ]
grep -Fc "instance-ready" "${TEST_DIR}/dev_incus.log" | grep -Fx 2
# Check device configs are available and that NIC hwaddr is available even if volatile.
hwaddr=$(incus config get dev-incus volatile.eth0.hwaddr)
incus exec dev-incus -- dev_incus-client devices | jq -r .eth0.hwaddr | grep -Fx "${hwaddr}"
incus delete dev-incus --force
kill -9 ${monitorDevIncusPID} || true
[ "${MATCH}" = "1" ] || false
}