mirror of
https://github.com/Oxalide/vsphere-influxdb-go.git
synced 2023-10-10 13:36:51 +02:00
273 lines
5.9 KiB
Plaintext
273 lines
5.9 KiB
Plaintext
|
#!/usr/bin/env bats
|
||
|
|
||
|
load test_helper
|
||
|
|
||
|
upload_file() {
|
||
|
name=$(new_id)
|
||
|
|
||
|
echo "Hello world" | govc datastore.upload - "$name"
|
||
|
assert_success
|
||
|
|
||
|
echo "$name"
|
||
|
}
|
||
|
|
||
|
@test "datastore.ls" {
|
||
|
name=$(upload_file)
|
||
|
|
||
|
# Single argument
|
||
|
run govc datastore.ls "${name}"
|
||
|
assert_success
|
||
|
[ ${#lines[@]} -eq 1 ]
|
||
|
|
||
|
# Multiple arguments
|
||
|
run govc datastore.ls "${name}" "${name}"
|
||
|
assert_success
|
||
|
[ ${#lines[@]} -eq 2 ]
|
||
|
|
||
|
# Pattern argument
|
||
|
run govc datastore.ls "./govc-test-*"
|
||
|
assert_success
|
||
|
[ ${#lines[@]} -ge 1 ]
|
||
|
|
||
|
# Long listing
|
||
|
run govc datastore.ls -l "./govc-test-*"
|
||
|
assert_success
|
||
|
assert_equal "12B" $(awk '{ print $1 }' <<<${output})
|
||
|
}
|
||
|
|
||
|
@test "datastore.ls-R" {
|
||
|
dir=$(new_id)
|
||
|
|
||
|
run govc datastore.mkdir "$dir"
|
||
|
assert_success
|
||
|
|
||
|
for name in one two three ; do
|
||
|
echo "$name world" | govc datastore.upload - "$dir/file-$name"
|
||
|
run govc datastore.mkdir -p "$dir/dir-$name/subdir-$name"
|
||
|
run govc datastore.mkdir -p "$dir/dir-$name/.hidden"
|
||
|
assert_success
|
||
|
echo "$name world" | govc datastore.upload - "$dir/dir-$name/.hidden/other-$name"
|
||
|
echo "$name world" | govc datastore.upload - "$dir/dir-$name/other-$name"
|
||
|
echo "$name world" | govc datastore.upload - "$dir/dir-$name/subdir-$name/last-$name"
|
||
|
done
|
||
|
|
||
|
# without -R
|
||
|
json=$(govc datastore.ls -json -l -p "$dir")
|
||
|
result=$(jq -r .[].File[].Path <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 6 ]
|
||
|
|
||
|
result=$(jq -r .[].FolderPath <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 1 ]
|
||
|
|
||
|
# with -R
|
||
|
json=$(govc datastore.ls -json -l -p -R "$dir")
|
||
|
result=$(jq -r .[].File[].Path <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 15 ]
|
||
|
|
||
|
result=$(jq -r .[].FolderPath <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 7 ]
|
||
|
|
||
|
# with -R -a
|
||
|
json=$(govc datastore.ls -json -l -p -R -a "$dir")
|
||
|
result=$(jq -r .[].File[].Path <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 21 ]
|
||
|
|
||
|
result=$(jq -r .[].FolderPath <<<"$json" | wc -l)
|
||
|
[ "$result" -eq 10 ]
|
||
|
}
|
||
|
|
||
|
@test "datastore.rm" {
|
||
|
name=$(upload_file)
|
||
|
|
||
|
# Not found is a failure
|
||
|
run govc datastore.rm "${name}.notfound"
|
||
|
assert_failure
|
||
|
assert_matches "govc: File .* was not found" "${output}"
|
||
|
|
||
|
# Not found is NOT a failure with the force flag
|
||
|
run govc datastore.rm -f "${name}.notfound"
|
||
|
assert_success
|
||
|
assert_empty "${output}"
|
||
|
|
||
|
# Verify the file is present
|
||
|
run govc datastore.ls "${name}"
|
||
|
assert_success
|
||
|
|
||
|
# Delete the file
|
||
|
run govc datastore.rm "${name}"
|
||
|
assert_success
|
||
|
assert_empty "${output}"
|
||
|
|
||
|
# Verify the file is gone
|
||
|
run govc datastore.ls "${name}"
|
||
|
assert_failure
|
||
|
}
|
||
|
|
||
|
@test "datastore.info" {
|
||
|
run govc datastore.info enoent
|
||
|
assert_failure
|
||
|
|
||
|
run govc datastore.info
|
||
|
assert_success
|
||
|
[ ${#lines[@]} -gt 1 ]
|
||
|
}
|
||
|
|
||
|
|
||
|
@test "datastore.mkdir" {
|
||
|
name=$(new_id)
|
||
|
|
||
|
# Not supported datastore type is a failure
|
||
|
run govc datastore.mkdir -namespace "notfound"
|
||
|
assert_failure
|
||
|
assert_matches "govc: ServerFaultCode: .*" "${output}"
|
||
|
|
||
|
run govc datastore.mkdir "${name}"
|
||
|
assert_success
|
||
|
assert_empty "${output}"
|
||
|
|
||
|
# Verify the dir is present
|
||
|
run govc datastore.ls "${name}"
|
||
|
assert_success
|
||
|
|
||
|
# Delete the dir on an unsupported datastore type is a failure
|
||
|
run govc datastore.rm -namespace "${name}"
|
||
|
assert_failure
|
||
|
assert_matches "govc: ServerFaultCode: .*" "${output}"
|
||
|
|
||
|
# Delete the dir
|
||
|
run govc datastore.rm "${name}"
|
||
|
assert_success
|
||
|
assert_empty "${output}"
|
||
|
|
||
|
# Verify the dir is gone
|
||
|
run govc datastore.ls "${name}"
|
||
|
assert_failure
|
||
|
}
|
||
|
|
||
|
@test "datastore.download" {
|
||
|
name=$(upload_file)
|
||
|
run govc datastore.download "$name" -
|
||
|
assert_success
|
||
|
assert_output "Hello world"
|
||
|
|
||
|
run govc datastore.download "$name" "$TMPDIR/$name"
|
||
|
assert_success
|
||
|
run cat "$TMPDIR/$name"
|
||
|
assert_output "Hello world"
|
||
|
rm "$TMPDIR/$name"
|
||
|
}
|
||
|
|
||
|
@test "datastore.upload" {
|
||
|
name=$(new_id)
|
||
|
echo -n "Hello world" | govc datastore.upload - "$name"
|
||
|
|
||
|
run govc datastore.download "$name" -
|
||
|
assert_success
|
||
|
assert_output "Hello world"
|
||
|
}
|
||
|
|
||
|
@test "datastore.tail" {
|
||
|
run govc datastore.tail "enoent/enoent.log"
|
||
|
assert_failure
|
||
|
|
||
|
id=$(new_id)
|
||
|
govc vm.create "$id"
|
||
|
govc vm.power -off "$id"
|
||
|
|
||
|
# test with .log (> bufSize) and .vmx (< bufSize)
|
||
|
for file in "$id/vmware.log" "$id/$id.vmx" ; do
|
||
|
log=$(govc datastore.download "$file" -)
|
||
|
|
||
|
for n in 0 1 5 10 123 456 7890 ; do
|
||
|
expect=$(tail -n $n <<<"$log")
|
||
|
|
||
|
run govc datastore.tail -n $n "$file"
|
||
|
assert_output "$expect"
|
||
|
|
||
|
expect=$(tail -c $n <<<"$log")
|
||
|
|
||
|
run govc datastore.tail -c $n "$file"
|
||
|
assert_output "$expect"
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
@test "datastore.disk" {
|
||
|
id=$(new_id)
|
||
|
vmdk="$id/$id.vmdk"
|
||
|
|
||
|
run govc datastore.mkdir "$id"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.create "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.rm "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.mkdir -p "$id"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.create "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
id=$(new_id)
|
||
|
run govc vm.create -on=false -link -disk "$vmdk" "$id"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -d "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -p=false "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -c "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -json "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
# should fail due to: ddb.deletable=false
|
||
|
run govc datastore.rm "$vmdk"
|
||
|
assert_failure
|
||
|
|
||
|
run govc datastore.rm -f "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
# one more time, but rm the directory w/o -f
|
||
|
run govc datastore.mkdir -p "$id"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.create "$vmdk"
|
||
|
assert_success
|
||
|
|
||
|
id=$(new_id)
|
||
|
run govc vm.create -on=false -link -disk "$vmdk" "$id"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.rm "$(dirname "$vmdk")"
|
||
|
assert_success
|
||
|
}
|
||
|
|
||
|
@test "datastore.disk.info" {
|
||
|
import_ttylinux_vmdk
|
||
|
|
||
|
run govc datastore.disk.info
|
||
|
assert_failure
|
||
|
|
||
|
run govc datastore.disk.info enoent
|
||
|
assert_failure
|
||
|
|
||
|
run govc datastore.disk.info "$GOVC_TEST_VMDK"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -d "$GOVC_TEST_VMDK"
|
||
|
assert_success
|
||
|
|
||
|
run govc datastore.disk.info -c "$GOVC_TEST_VMDK"
|
||
|
assert_success
|
||
|
}
|