master
sh 63 lines 1.5 KB
Raw
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5 # shellcheck disable=SC1091
6 . "$SCRIPT_DIR/lib.sh"
7
8 init_workspace "proxysql"
9 trap cleanup EXIT
10
11 MYSQL_PORT="$(reserve_port)"
12 PROXYSQL_ADMIN_PORT="$(reserve_port)"
13 PROXYSQL_MYSQL_PORT="$(reserve_port)"
14 write_env "MYSQL_PORT" "$MYSQL_PORT"
15 write_env "PROXYSQL_ADMIN_PORT" "$PROXYSQL_ADMIN_PORT"
16 write_env "PROXYSQL_MYSQL_PORT" "$PROXYSQL_MYSQL_PORT"
17
18 compose_up mysql proxysql
19 wait_healthy mysql 90
20 compose_run proxysql-init
21
22 build_plugin
23
24 PROXYSQL_CID="$("${COMPOSE[@]}" ps -q proxysql)"
25 if [ -z "$PROXYSQL_CID" ]; then
26 echo "Unable to resolve proxysql container ID" >&2
27 exit 1
28 fi
29
30 run_info_proxysql() {
31 local output="$WORKDIR/proxysql-info.json"
32 run docker run --rm \
33 --network "container:${PROXYSQL_CID}" \
34 -v "$WORKDIR:/work" \
35 -w /work \
36 debian:bookworm-slim \
37 /work/go.d.plugin \
38 --config-dir /work/config \
39 --function proxysql:top-queries \
40 --function-args info \
41 > "$output"
42 validate "$output"
43 }
44
45 run_top_queries_proxysql() {
46 local output="$WORKDIR/proxysql-top-queries.json"
47 run docker run --rm \
48 --network "container:${PROXYSQL_CID}" \
49 -v "$WORKDIR:/work" \
50 -w /work \
51 debian:bookworm-slim \
52 /work/go.d.plugin \
53 --config-dir /work/config \
54 --function proxysql:top-queries \
55 --function-args __job:local \
56 > "$output"
57 validate "$output" --min-rows 1
58 }
59
60 run_info_proxysql
61 run_top_queries_proxysql
62
63 echo "E2E checks passed for proxysql." >&2