mirror of
https://github.com/Oxalide/vsphere-influxdb-go.git
synced 2023-10-10 13:36:51 +02:00
118 lines
3.2 KiB
Bash
Executable File
118 lines
3.2 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
# This test is not run via bats.
|
|
# 1) Test guest operations (govc guest.* commands)
|
|
# 2) Test vm disk persistence
|
|
|
|
. "$(dirname "$0")"/test_helper.bash
|
|
|
|
import_ttylinux_vmdk
|
|
|
|
export GOVC_GUEST_LOGIN=root:password
|
|
|
|
for persist in true false ; do
|
|
id=govc-test-persist-$persist
|
|
govc ls vm/$id | xargs -r govc vm.destroy
|
|
|
|
if [ "$persist" = "true" ] ; then
|
|
grepf=-v
|
|
mode=persistent
|
|
else
|
|
mode=independent_nonpersistent
|
|
fi
|
|
|
|
echo "Creating vm..."
|
|
govc vm.create -m 32 -disk.controller ide -on=false $id
|
|
|
|
# Save some noise by defaulting to '-vm $id'
|
|
export GOVC_VM=$id
|
|
|
|
echo "Attaching linked disk..."
|
|
govc vm.disk.attach -controller ide -persist=$persist -link=true -disk "$GOVC_TEST_VMDK"
|
|
|
|
echo "Creating data disk..."
|
|
govc vm.disk.create -controller ide -mode=$mode -name "$id"/data -size "10M"
|
|
|
|
echo "Powering on vm..."
|
|
govc vm.power -on $id 1>/dev/null
|
|
echo "Waiting for tools to initialize..."
|
|
govc vm.ip $id 1>/dev/null
|
|
|
|
echo "Formatting the data disk..."
|
|
govc guest.mkdir /data
|
|
script=$(govc guest.mktemp)
|
|
|
|
govc guest.upload -f - "$script" <<'EOF'
|
|
#!/bin/sh -xe
|
|
|
|
opts=(n p 1 1 ' ' w)
|
|
printf "%s\n" "${opts[@]}" | fdisk /dev/hdb
|
|
mkfs.ext3 /dev/hdb1
|
|
mount /dev/hdb1 /data
|
|
df -h
|
|
cp /etc/motd /data
|
|
EOF
|
|
|
|
govc guest.chown 65534 "$script"
|
|
govc guest.chown 65534:65534 "$script"
|
|
govc guest.ls "$script" | grep 65534
|
|
govc guest.chmod 0755 "$script"
|
|
pid=$(govc guest.start "$script" '>&' /tmp/disk.log)
|
|
status=$(govc guest.ps -p "$pid" -json -X | jq .ProcessInfo[].ExitCode)
|
|
govc guest.download /tmp/disk.log -
|
|
if [ "$status" -ne "0" ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
echo "Writing some data to the disks..."
|
|
for d in /etc /data ; do
|
|
govc guest.touch "$d/motd.bak"
|
|
govc guest.touch -d "$(date -d '1 day ago')" "$d/motd"
|
|
govc guest.ls "$d/motd"
|
|
govc guest.download $d/motd - | grep Chop
|
|
done
|
|
govc version | govc guest.upload -f - /etc/motd
|
|
govc guest.download /etc/motd - | grep -v Chop
|
|
|
|
pid=$(govc guest.start /bin/sync)
|
|
status=$(govc guest.ps -p "$pid" -json -X | jq .ProcessInfo[].ExitCode)
|
|
if [ "$status" -ne "0" ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
echo "Rebooting vm..."
|
|
govc vm.power -off $id
|
|
govc vm.power -on $id
|
|
echo "Waiting for tools to initialize..."
|
|
govc vm.ip $id 1>/dev/null
|
|
|
|
echo "Verifying data persistence..."
|
|
govc guest.download /etc/motd - | grep $grepf Chop
|
|
pid=$(govc guest.start /bin/mount /dev/hdb1 /data)
|
|
status=$(govc guest.ps -p "$pid" -json -X | jq .ProcessInfo[].ExitCode)
|
|
|
|
if [ "$persist" = "true" ] ; then
|
|
govc guest.ls /data
|
|
govc guest.download /data/motd - | grep -v Chop
|
|
govc guest.rm /data/motd
|
|
|
|
govc guest.mkdir /data/foo/bar/baz 2>/dev/null && exit 1 # should fail
|
|
govc guest.mkdir -p /data/foo/bar/baz
|
|
|
|
govc guest.rmdir /data/foo 2>/dev/null && exit 1 # should fail
|
|
govc guest.rmdir /data/foo/bar/baz
|
|
dir=$(govc guest.mktemp -d -p /data/foo -s govc)
|
|
file=$(govc guest.mktemp -p "$dir")
|
|
govc guest.mv -n "$(govc guest.mktemp)" "$file" 2>/dev/null && exit 1 # should fail
|
|
govc guest.mv "$file" "${file}-old"
|
|
govc guest.mv "$dir" "${dir}-old"
|
|
govc guest.rmdir -r /data/foo
|
|
govc guest.ls /data | grep -v foo
|
|
else
|
|
if [ "$status" -eq "0" ] ; then
|
|
echo "expected failure"
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|