build source
This commit is contained in:
commit
ee1fec43ed
4171 changed files with 1351288 additions and 0 deletions
170
vendor/github.com/jackc/pgx/v5/test.sh
generated
vendored
Normal file
170
vendor/github.com/jackc/pgx/v5/test.sh
generated
vendored
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# test.sh - Run pgx tests against specific database targets
|
||||
#
|
||||
# Usage:
|
||||
# ./test.sh [target] [go test flags...]
|
||||
#
|
||||
# Targets:
|
||||
# pg14 - PostgreSQL 14 (port 5414)
|
||||
# pg15 - PostgreSQL 15 (port 5415)
|
||||
# pg16 - PostgreSQL 16 (port 5416)
|
||||
# pg17 - PostgreSQL 17 (port 5417)
|
||||
# pg18 - PostgreSQL 18 (port 5432) [default]
|
||||
# crdb - CockroachDB (port 26257)
|
||||
# all - Run against all targets sequentially
|
||||
#
|
||||
# Examples:
|
||||
# ./test.sh # Test against PG18
|
||||
# ./test.sh pg14 # Test against PG14
|
||||
# ./test.sh crdb # Test against CockroachDB
|
||||
# ./test.sh all # Test against all targets
|
||||
# ./test.sh pg16 -run TestConnect # Test specific test against PG16
|
||||
# ./test.sh pg18 -count=1 -v # Verbose, no cache, PG18
|
||||
|
||||
# Color output (disabled if not a terminal)
|
||||
if [ -t 1 ]; then
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
else
|
||||
GREEN=''
|
||||
RED=''
|
||||
BLUE=''
|
||||
NC=''
|
||||
fi
|
||||
|
||||
log_info() { echo -e "${BLUE}==> $*${NC}"; }
|
||||
log_ok() { echo -e "${GREEN}==> $*${NC}"; }
|
||||
log_err() { echo -e "${RED}==> $*${NC}" >&2; }
|
||||
|
||||
# Wait for a database to accept connections
|
||||
wait_for_ready() {
|
||||
local connstr="$1"
|
||||
local label="$2"
|
||||
local max_attempts=30
|
||||
local attempt=0
|
||||
|
||||
log_info "Waiting for $label to be ready..."
|
||||
while ! psql "$connstr" -c "SELECT 1" > /dev/null 2>&1; do
|
||||
attempt=$((attempt + 1))
|
||||
if [ "$attempt" -ge "$max_attempts" ]; then
|
||||
log_err "$label did not become ready after $max_attempts attempts"
|
||||
return 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
log_ok "$label is ready"
|
||||
}
|
||||
|
||||
# Directory containing this script (used to locate testsetup/)
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CERTS_DIR="$SCRIPT_DIR/testsetup/certs"
|
||||
|
||||
# Copy client certificates to /tmp for TLS tests
|
||||
setup_client_certs() {
|
||||
if [ -d "$CERTS_DIR" ]; then
|
||||
base64 -d "$CERTS_DIR/ca.pem.b64" > /tmp/ca.pem
|
||||
base64 -d "$CERTS_DIR/pgx_sslcert.crt.b64" > /tmp/pgx_sslcert.crt
|
||||
base64 -d "$CERTS_DIR/pgx_sslcert.key.b64" > /tmp/pgx_sslcert.key
|
||||
fi
|
||||
}
|
||||
|
||||
# Initialize CockroachDB (create database if not exists)
|
||||
init_crdb() {
|
||||
local connstr="postgresql://root@localhost:26257/?sslmode=disable"
|
||||
wait_for_ready "$connstr" "CockroachDB"
|
||||
log_info "Ensuring pgx_test database exists on CockroachDB..."
|
||||
psql "$connstr" -c "CREATE DATABASE IF NOT EXISTS pgx_test" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# Run tests against a single target
|
||||
run_tests() {
|
||||
local target="$1"
|
||||
shift
|
||||
local extra_args=("$@")
|
||||
|
||||
local label=""
|
||||
local port=""
|
||||
|
||||
case "$target" in
|
||||
pg14) label="PostgreSQL 14"; port=5414 ;;
|
||||
pg15) label="PostgreSQL 15"; port=5415 ;;
|
||||
pg16) label="PostgreSQL 16"; port=5416 ;;
|
||||
pg17) label="PostgreSQL 17"; port=5417 ;;
|
||||
pg18) label="PostgreSQL 18"; port=5432 ;;
|
||||
crdb)
|
||||
label="CockroachDB (port 26257)"
|
||||
init_crdb
|
||||
log_info "Testing against $label"
|
||||
if ! PGX_TEST_DATABASE="postgresql://root@localhost:26257/pgx_test?sslmode=disable&experimental_enable_temp_tables=on" \
|
||||
go test -count=1 "${extra_args[@]}" ./...; then
|
||||
log_err "Tests FAILED against $label"
|
||||
return 1
|
||||
fi
|
||||
log_ok "Tests passed against $label"
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
log_err "Unknown target: $target"
|
||||
log_err "Valid targets: pg14, pg15, pg16, pg17, pg18, crdb, all"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
setup_client_certs
|
||||
|
||||
log_info "Testing against $label (port $port)"
|
||||
if ! PGX_TEST_DATABASE="host=localhost port=$port user=postgres password=postgres dbname=pgx_test" \
|
||||
PGX_TEST_UNIX_SOCKET_CONN_STRING="host=/var/run/postgresql port=$port user=postgres dbname=pgx_test" \
|
||||
PGX_TEST_TCP_CONN_STRING="host=127.0.0.1 port=$port user=pgx_md5 password=secret dbname=pgx_test" \
|
||||
PGX_TEST_MD5_PASSWORD_CONN_STRING="host=127.0.0.1 port=$port user=pgx_md5 password=secret dbname=pgx_test" \
|
||||
PGX_TEST_SCRAM_PASSWORD_CONN_STRING="host=127.0.0.1 port=$port user=pgx_scram password=secret dbname=pgx_test channel_binding=disable" \
|
||||
PGX_TEST_SCRAM_PLUS_CONN_STRING="host=localhost port=$port user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test channel_binding=require" \
|
||||
PGX_TEST_PLAIN_PASSWORD_CONN_STRING="host=127.0.0.1 port=$port user=pgx_pw password=secret dbname=pgx_test" \
|
||||
PGX_TEST_TLS_CONN_STRING="host=localhost port=$port user=pgx_ssl password=secret sslmode=verify-full sslrootcert=/tmp/ca.pem dbname=pgx_test channel_binding=disable" \
|
||||
PGX_TEST_TLS_CLIENT_CONN_STRING="host=localhost port=$port user=pgx_sslcert sslmode=verify-full sslrootcert=/tmp/ca.pem sslcert=/tmp/pgx_sslcert.crt sslkey=/tmp/pgx_sslcert.key dbname=pgx_test" \
|
||||
PGX_SSL_PASSWORD=certpw \
|
||||
go test -count=1 "${extra_args[@]}" ./...; then
|
||||
log_err "Tests FAILED against $label"
|
||||
return 1
|
||||
fi
|
||||
log_ok "Tests passed against $label"
|
||||
}
|
||||
|
||||
# Main
|
||||
main() {
|
||||
local target="${1:-pg18}"
|
||||
|
||||
if [ "$target" = "all" ]; then
|
||||
shift || true
|
||||
local targets=(pg14 pg15 pg16 pg17 pg18 crdb)
|
||||
local failed=()
|
||||
|
||||
for t in "${targets[@]}"; do
|
||||
echo ""
|
||||
log_info "=========================================="
|
||||
log_info "Target: $t"
|
||||
log_info "=========================================="
|
||||
if ! run_tests "$t" "$@"; then
|
||||
failed+=("$t")
|
||||
log_err "FAILED: $t"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
if [ ${#failed[@]} -gt 0 ]; then
|
||||
log_err "Failed targets: ${failed[*]}"
|
||||
return 1
|
||||
else
|
||||
log_ok "All targets passed"
|
||||
fi
|
||||
else
|
||||
shift || true
|
||||
run_tests "$target" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue