mirror of
https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git
synced 2026-06-21 00:07:16 +03:00
115 lines
2.7 KiB
Bash
Executable File
115 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env atf-sh
|
|
# vim:set filetype=sh:
|
|
# shellcheck shell=sh
|
|
|
|
. $(atf_get_srcdir)/test_env.sh
|
|
|
|
export PREFIX="$srcdir"
|
|
export MOCK=echo
|
|
PROVIDERS="alpine aws azure digitalocean gcp incus hetzner nocloud oci scaleway"
|
|
|
|
init_tests \
|
|
tiny_cloud_help \
|
|
tiny_cloud_autodetect \
|
|
tiny_cloud_autodetect_unknown \
|
|
tiny_cloud_disabled \
|
|
no_metadata_boot \
|
|
no_userdata_early \
|
|
no_userdata_main \
|
|
no_userdata_final
|
|
|
|
tiny_cloud_help_body() {
|
|
for provider in $PROVIDERS; do
|
|
CLOUD="$provider" atf_check -s not-exit:0 \
|
|
-e match:"Usage" \
|
|
tiny-cloud --invalid
|
|
|
|
CLOUD="$provider" atf_check -s exit:0 \
|
|
-o match:"Usage" \
|
|
tiny-cloud --help
|
|
done
|
|
}
|
|
|
|
tiny_cloud_autodetect_body() {
|
|
mkdir -p sys/class/dmi/id
|
|
cat > sys/class/dmi/id/modalias <<-EOT
|
|
dmi:bvnScaleway:bvrScaleway:bd10/22/2024:br1.0:svnScaleway:pnScaleway:pvr:rvnKVM:rnScaleway:rvr:cvnScaleway:ct1:cvr:sku:
|
|
EOT
|
|
atf_check -s exit:0 \
|
|
-o match:"^scaleway$" \
|
|
tiny-cloud autodetect
|
|
}
|
|
|
|
tiny_cloud_autodetect_unknown_body() {
|
|
mkdir -p etc proc var/lib/cloud
|
|
echo "CLOUD=auto" > etc/tiny-cloud.conf
|
|
echo scaleway > var/lib/cloud/.autodetect
|
|
echo "quiet ds=scaleway console=ttyS0" > proc/cmdline
|
|
atf_check -s exit:1 \
|
|
-o match:"^unknown$" \
|
|
tiny-cloud autodetect
|
|
}
|
|
|
|
tiny_cloud_disabled_body() {
|
|
mkdir -p etc
|
|
touch etc/tiny-cloud.disabled
|
|
for provider in $PROVIDERS; do
|
|
CLOUD="$provider" atf_check -s exit:0 \
|
|
-e match:"tiny-cloud disabled" \
|
|
tiny-cloud early
|
|
done
|
|
}
|
|
|
|
no_metadata_boot_body() {
|
|
for provider in $PROVIDERS; do
|
|
CLOUD="$provider" atf_check \
|
|
-e not-match:"unknown" \
|
|
-e not-match:"not found" \
|
|
-e not-match:"o such file" \
|
|
-o match:"rc-update add.*sshd" \
|
|
-e not-match:"mount:" \
|
|
tiny-cloud boot
|
|
done
|
|
}
|
|
|
|
no_userdata_early_body() {
|
|
for provider in $PROVIDERS; do
|
|
CLOUD="$provider" atf_check \
|
|
-e not-match:"unknown" \
|
|
-e match:"save_userdata.*done" \
|
|
-e not-match:"mount:" \
|
|
tiny-cloud early
|
|
done
|
|
}
|
|
|
|
no_userdata_main_body() {
|
|
for provider in $PROVIDERS; do
|
|
# we should not set empty hostname
|
|
# we should not create .ssh dir for non-existing user
|
|
CLOUD="$provider" atf_check \
|
|
-e not-match:"mount:" \
|
|
-e not-match:"failed" \
|
|
-e not-match:"unknown" \
|
|
-o not-match:"hostname.*-F" \
|
|
-o not-match:"chown.*/\.ssh" \
|
|
tiny-cloud main
|
|
for i in etc/hostname .ssh; do
|
|
if [ -e "$i" ]; then
|
|
atf_fail "$i should not have been created"
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
no_userdata_final_body() {
|
|
for provider in $PROVIDERS; do
|
|
CLOUD="$provider" atf_check \
|
|
-e not-match:"unknown" \
|
|
-e match:"bootstrap_complete: done" \
|
|
tiny-cloud final
|
|
CLOUD="$provider" atf_check \
|
|
-e match:"bootstrap marked incomplete" \
|
|
tiny-cloud --bootstrap incomplete
|
|
done
|
|
}
|