From 27fdd4260ec4f3b4277b1d467bccbc1911e23e4e Mon Sep 17 00:00:00 2001
From: Daniel Black <daniel@mariadb.org>
Date: Tue, 3 Sep 2024 09:50:05 +1000
Subject: [PATCH] add test case for healthcheck.sh variants

---
 .test/run.sh | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/.test/run.sh b/.test/run.sh
index 3b07412..aba1094 100755
--- a/.test/run.sh
+++ b/.test/run.sh
@@ -921,6 +921,43 @@ zstd "${initdb}"/*zst*
 	mariadbclient -u root -psoverysecret -e 'select current_user() as connected_ok'
 
 	docker exec "$cname" healthcheck.sh --connect --innodb_initialized
+	# healthcheck shouldn't return true on insufficient connection information
+
+	# Enforce fallback to tcp in healthcheck.
+	docker exec "$cname" sed -i -e 's/\(socket=\)/\1breakpath/' /var/lib/mysql/.my-healthcheck.cnf
+
+	# select @@skip-networking via tcp successful
+	docker exec "$cname" healthcheck.sh --connect
+
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`127.0.0.1` ACCOUNT LOCK'
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`::1` ACCOUNT LOCK'
+
+	# ERROR 4151 (HY000): Access denied, this account is locked
+	docker exec "$cname" healthcheck.sh --connect
+
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`127.0.0.1` WITH MAX_QUERIES_PER_HOUR 1 ACCOUNT UNLOCK'
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`::1` WITH MAX_QUERIES_PER_HOUR 1 ACCOUNT UNLOCK'
+
+	# ERROR 1226 (42000) at line 1: User '\''healthcheck'\'' has exceeded the '\''max_queries_per_hour'\'' resource (current value: 1)'
+	docker exec "$cname" healthcheck.sh --connect
+	docker exec "$cname" healthcheck.sh --connect
+
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`127.0.0.1` WITH MAX_QUERIES_PER_HOUR 2000 PASSWORD EXPIRE'
+	mariadbclient -u root -psoverysecret -e 'alter user healthcheck@`::1` WITH MAX_QUERIES_PER_HOUR 2000 PASSWORD EXPIRE'
+	# ERROR 1820 (HY000) at line 1: You must SET PASSWORD before executing this statement
+	docker exec "$cname" healthcheck.sh --connect
+
+	mariadbclient -u root -psoverysecret -e 'set password for healthcheck@`127.0.0.1` = PASSWORD("mismatch")'
+	mariadbclient -u root -psoverysecret -e 'set password for healthcheck@`::1` = PASSWORD("mismatch")'
+
+	# ERROR 1045 (28000): Access denied
+	docker exec "$cname" healthcheck.sh --connect
+
+
+	# break port
+	docker exec "$cname" sed -i -e 's/\(port=\)/\14/' /var/lib/mysql/.my-healthcheck.cnf
+
+	docker exec "$cname" healthcheck.sh --connect || echo "ok, broken port is a connection failure"
 
 	killoff
 
-- 
GitLab