| #!/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 |