test: add PostgreSQL migration integration coverage
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
COMPOSE_JOB_NETWORK_RUNNING_IN_CONTAINER=false
|
||||
COMPOSE_JOB_NETWORK_CURRENT_CONTAINER=""
|
||||
COMPOSE_JOB_NETWORK_NAME=""
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=false
|
||||
|
||||
compose_job_network_initialize() {
|
||||
COMPOSE_JOB_NETWORK_RUNNING_IN_CONTAINER=false
|
||||
COMPOSE_JOB_NETWORK_CURRENT_CONTAINER=""
|
||||
COMPOSE_JOB_NETWORK_NAME=""
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=false
|
||||
|
||||
if [[ ! -f /.dockerenv ]]; then
|
||||
return 0
|
||||
fi
|
||||
if [[ -z "${HOSTNAME:-}" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
COMPOSE_JOB_NETWORK_RUNNING_IN_CONTAINER=true
|
||||
COMPOSE_JOB_NETWORK_CURRENT_CONTAINER="$HOSTNAME"
|
||||
}
|
||||
|
||||
compose_job_network_connect() {
|
||||
if [[ "$COMPOSE_JOB_NETWORK_RUNNING_IN_CONTAINER" != "true" ]]; then
|
||||
return 1
|
||||
fi
|
||||
if (($# == 0)); then
|
||||
return 1
|
||||
fi
|
||||
local service="$1"
|
||||
shift
|
||||
if [[ -z "$service" || $# -eq 0 ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local service_container_output
|
||||
if ! service_container_output="$("$@" ps -q "$service" 2>/dev/null)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local service_containers=()
|
||||
while IFS= read -r container_id; do
|
||||
if [[ -n "$container_id" ]]; then
|
||||
service_containers+=("$container_id")
|
||||
fi
|
||||
done <<<"$service_container_output"
|
||||
if ((${#service_containers[@]} != 1)); then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local service_network_output
|
||||
if ! service_network_output="$(
|
||||
docker inspect \
|
||||
--format '{{range $networkName, $_ := .NetworkSettings.Networks}}{{println $networkName}}{{end}}' \
|
||||
"${service_containers[0]}" 2>/dev/null
|
||||
)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local service_networks=()
|
||||
while IFS= read -r network_name; do
|
||||
if [[ -n "$network_name" ]]; then
|
||||
service_networks+=("$network_name")
|
||||
fi
|
||||
done <<<"$service_network_output"
|
||||
if ((${#service_networks[@]} != 1)); then
|
||||
return 1
|
||||
fi
|
||||
COMPOSE_JOB_NETWORK_NAME="${service_networks[0]}"
|
||||
|
||||
local current_network_output
|
||||
if ! current_network_output="$(
|
||||
docker inspect \
|
||||
--format '{{range $networkName, $_ := .NetworkSettings.Networks}}{{println $networkName}}{{end}}' \
|
||||
"$COMPOSE_JOB_NETWORK_CURRENT_CONTAINER" 2>/dev/null
|
||||
)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
while IFS= read -r network_name; do
|
||||
if [[ "$network_name" == "$COMPOSE_JOB_NETWORK_NAME" ]]; then
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=true
|
||||
return 0
|
||||
fi
|
||||
done <<<"$current_network_output"
|
||||
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=true
|
||||
if ! docker network connect \
|
||||
"$COMPOSE_JOB_NETWORK_NAME" \
|
||||
"$COMPOSE_JOB_NETWORK_CURRENT_CONTAINER" >/dev/null 2>&1; then
|
||||
docker network disconnect \
|
||||
"$COMPOSE_JOB_NETWORK_NAME" \
|
||||
"$COMPOSE_JOB_NETWORK_CURRENT_CONTAINER" >/dev/null 2>&1 || true
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=false
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
compose_job_network_disconnect() {
|
||||
if [[ "$COMPOSE_JOB_NETWORK_CONNECTED" != "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if ! docker network disconnect \
|
||||
"$COMPOSE_JOB_NETWORK_NAME" \
|
||||
"$COMPOSE_JOB_NETWORK_CURRENT_CONTAINER" >/dev/null 2>&1; then
|
||||
return 1
|
||||
fi
|
||||
COMPOSE_JOB_NETWORK_CONNECTED=false
|
||||
}
|
||||
Reference in New Issue
Block a user