#!/bin/env bash
set -eo pipefail
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
MYSQL="mysql -p$MARIADB_ROOT_PASSWORD"
echo "waiting for mariadb to start" >&2
while ! $MYSQL -e 'select 1' | grep -q '.*' ; do
    sleep 1
done
MYSQL_VIA_USUAL_PORT="$MYSQL -h127.0.0.1 -P3306"
MYSQL_VIA_EXTRA_PORT="$MYSQL -h127.0.0.1 -P13306"
echo "creating test.spin procedure" >&2
$MYSQL -t -e '
DELIMITER //
CREATE OR REPLACE PROCEDURE test.spin(iterations INT)
BEGIN
    DECLARE i INT;
    DECLARE v FLOAT;
    SET i = 0;
    SET v = 0;
    WHILE i < iterations DO
        SET i = i + 1;
        SET v = SQRT(v + i);
    END WHILE;
END;
//
'
echo "running test" >&2
for j in $(seq 1 "${CONCURRENCY:-10}"); do
    $MYSQL_VIA_USUAL_PORT -e "CALL test.spin(${ITERATIONS:-1000000})" &
done
while $MYSQL_VIA_EXTRA_PORT -e 'SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID()' | grep -q '.*' ; do
    $MYSQL_VIA_EXTRA_PORT -t -e 'SELECT * FROM INFORMATION_SCHEMA.THREAD_POOL_QUEUES'
    sleep 1
done
echo "done" >&2
