blob: aa2d87d6d6313a50a438ace5c1912f4fd311d556 [file] [log] [blame]
#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset
readonly PROG_NAME="$(basename "$0")"
readonly SCRIPT_DIR="$(dirname "$0")"
readonly PROTOC_BIN="protoc"
readonly GCLOUD_BIN="gcloud"
usage() {
cat <<EOF
${PROG_NAME}: Run check_drivers_test.go to check COS precompiled drivers availability.
Prerequisites:
The following commands have to be installed and be able to found in \$PATH:
\`gcloud\`: https://cloud.google.com/sdk/
\`protoc\`: https://github.com/protocolbuffers/protobuf
Besides, the test uses Application Default Credentials for authentication. So you need to run \`gcloud auth application-default login\` to set up ADC.
EOF
exit "${1}"
}
check_command_exist() {
cmd="$1"
command -v "${cmd}" &> /dev/null
}
check_application_default_credentials() {
"${GCLOUD_BIN}" auth application-default print-access-token 1> /dev/null
}
check_prerequisites() {
check_command_exist "${PROTOC_BIN}" && \
check_command_exist "${GCLOUD_BIN}" && \
check_application_default_credentials
}
compile_proto() {
~/protoc/bin/protoc -I "${SCRIPT_DIR}"/../versions --go_out=paths=source_relative:"${SCRIPT_DIR}"/../versions "${SCRIPT_DIR}"/../versions/versions.proto
trap cleanup_proto EXIT
}
cleanup_proto() {
rm "${SCRIPT_DIR}"/../versions/versions.pb.go
}
run_test() {
go test -v "${SCRIPT_DIR}"/check_drivers_test.go
}
main() {
echo "Checking prerequisites..."
set +e
if ! check_prerequisites; then
usage 1
fi
set -e
echo "Compiling protobuf..."
compile_proto
echo "Running test..."
run_test
}
main