mirror of
https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git
synced 2025-12-14 19:02:45 +03:00
145 lines
2.5 KiB
Bash
145 lines
2.5 KiB
Bash
# shellcheck shell=sh
|
|
|
|
atf_srcdir="$(atf_get_srcdir)"
|
|
srcdir="$atf_srcdir/.."
|
|
PATH="$atf_srcdir/bin:$srcdir/bin:$srcdir/sbin:$PATH"
|
|
|
|
export TINY_CLOUD_BASEDIR="$srcdir"
|
|
export ROOT="$PWD"
|
|
|
|
|
|
init_tests() {
|
|
TESTS=
|
|
for t; do
|
|
TESTS="$TESTS $t"
|
|
atf_test_case "$t"
|
|
done
|
|
export TESTS
|
|
}
|
|
|
|
atf_init_test_cases() {
|
|
for t in $TESTS; do
|
|
atf_add_test_case "$t"
|
|
done
|
|
}
|
|
|
|
fake_bin() {
|
|
mkdir -p bin
|
|
cat > bin/"$1"
|
|
chmod +x bin/"$1"
|
|
PATH="$PWD/bin:$PATH"
|
|
}
|
|
|
|
fake_umount() {
|
|
fake_bin umount <<-EOF
|
|
#!/bin/sh
|
|
while ! [ -d "\$1" ]; do
|
|
shift
|
|
done
|
|
rm -f "\$1"/meta-data "\$1"/user-data
|
|
EOF
|
|
}
|
|
|
|
fake_data_nocloud() {
|
|
local datafile="$1"
|
|
mkdir -p tmp/fake-data
|
|
cat > tmp/fake-data/"$datafile"
|
|
fake_bin mount <<-EOF
|
|
#!/bin/sh
|
|
# find last arg which is the mount dir
|
|
while ! [ -d "\$1" ]; do
|
|
shift
|
|
done
|
|
cp tmp/fake-data/* "\$1"/
|
|
EOF
|
|
mkdir -p mnt
|
|
fake_umount
|
|
}
|
|
|
|
fake_metadata_nocloud() {
|
|
fake_data_nocloud meta-data
|
|
}
|
|
|
|
fake_userdata_nocloud() {
|
|
fake_data_nocloud user-data
|
|
}
|
|
|
|
fake_metadata_aws() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/latest/meta-data"
|
|
}
|
|
|
|
fake_metadata_azure() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/metadata/instance"
|
|
}
|
|
|
|
fake_metadata_digitalocean() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/metadata/v1"
|
|
}
|
|
|
|
fake_metadata_gcp() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/computeMetadata/v1"
|
|
}
|
|
|
|
fake_metadata_oci() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/opc/v2"
|
|
}
|
|
|
|
fake_metadata_scaleway() {
|
|
cat > "169.254.42.42.txt"
|
|
export WGET_STRIP_PREFIX="/conf"
|
|
}
|
|
|
|
fake_userdata_scaleway() {
|
|
cat > "169.254.42.42.txt"
|
|
}
|
|
|
|
fake_metadata_hetzner() {
|
|
cat > "169.254.169.254.yaml"
|
|
export WGET_STRIP_PREFIX="/hetzner/v1/metadata"
|
|
}
|
|
|
|
fake_metadata_incus() {
|
|
cat > "local.txt"
|
|
}
|
|
|
|
fake_userdata_incus() {
|
|
cat > "local.txt"
|
|
}
|
|
|
|
fake_metadata() {
|
|
case "${1:-$CLOUD}" in
|
|
alpine|nocloud) fake_metadata_nocloud;;
|
|
aws) fake_metadata_aws;;
|
|
azure) fake_metadata_azure;;
|
|
digitalocean) fake_metadata_digitalocean;;
|
|
gcp) fake_metadata_gcp;;
|
|
hetzner) fake_metadata_hetzner;;
|
|
incus) fake_metadata_incus;;
|
|
oci) fake_metadata_oci;;
|
|
scaleway) fake_metadata_scaleway;;
|
|
*) echo "TODO: fake_metadata_$CLOUD" >&2;;
|
|
esac
|
|
}
|
|
|
|
fake_interfaces() {
|
|
local n=1
|
|
for i; do
|
|
mkdir -p sys/class/net/$i
|
|
echo $n > sys/class/net/$i/ifindex
|
|
echo down >sys/class/net/$i/operstate
|
|
n=$((n+1))
|
|
done
|
|
}
|
|
|
|
fake_disk() {
|
|
local dev="$1" size="$2"
|
|
mkdir -p sys/class/block/$dev
|
|
touch sys/class/block/$dev/device
|
|
echo "$size" > sys/class/block/$1/size
|
|
}
|