Files
versitygw/tests/commands/command.sh
2026-06-30 17:15:57 -03:00

90 lines
2.6 KiB
Bash

#!/usr/bin/env bash
# Copyright 2024 Versity Software
# This file is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
source ./tests/logger.sh
source ./tests/report.sh
send_command() {
if ! check_param_count_gt "command data" 1 $#; then
return 1
fi
local response
if [ -n "$COMMAND_LOG" ] || [ -n "$COVERAGE_LOG" ]; then
args=(AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" "$@")
if ! response=$(mask_arg_array "${args[@]}" 2>&1); then
echo "error masking args: $response"
return 1
fi
masked_args="$response"
if [ -n "$COMMAND_LOG" ]; then
# shellcheck disable=SC2154
echo "$masked_args" >> "$COMMAND_LOG"
fi
if [ -n "$COVERAGE_LOG" ]; then
record_command_v2 "$masked_args"
fi
fi
local command_result=0
"$@" || command_result=$?
if [ "$command_result" -ne 0 ]; then
if [ "$1" == "curl" ]; then
echo ", curl response code: $command_result"
elif [ "$command_result" -ne 1 ]; then
echo " ($1 response code: $command_result)"
fi
fi
if [ "$DIRECT" == "true" ]; then
sleep "$DIRECT_POST_COMMAND_DELAY"
fi
return $command_result
}
check_for_and_or_build_go_executable() {
if [ -z "$GO_COMMAND_GENERATOR_EXECUTABLE" ]; then
return 1
fi
if [ ! -f "$GO_COMMAND_GENERATOR_EXECUTABLE" ]; then
if ! build_output=$(go build -o "$GO_COMMAND_GENERATOR_EXECUTABLE" ./tests/rest_scripts/generateCommand.go 2>&1); then
log 2 "error building generateCommand executable: $build_output"
return 1
fi
fi
return 0
}
generate_go_command() {
if ! check_param_count_gt "command params" 1 $#; then
return 1
fi
local go_response
if check_for_and_or_build_go_executable 2>/dev/null; then
if ! go_response=$("$GO_COMMAND_GENERATOR_EXECUTABLE" "$@" 2>&1); then
log 2 "error generating go command from executable: $go_response"
return 1
fi
else
if ! go_response=$(go run ./tests/rest_scripts/generateCommand.go "$@" 2>&1); then
log 2 "error generating go command from files (if using tester account, are you using -H tag?): $go_response"
return 1
fi
fi
echo "$go_response"
return 0
}