Skip to content

Commit b2d27c9

Browse files
authored
Add and improve tests (#92)
* Execute queries with commands in the container * Remove `-p 33061:3306` from `container run` * Change the query result to check as it is * Add test for `mroonga_command('status')`
1 parent edbf494 commit b2d27c9

File tree

1 file changed

+43
-19
lines changed

1 file changed

+43
-19
lines changed

test.sh

+43-19
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,55 @@ container_name="mroonga_build_test_${timestamp}"
1919
eval $(grep -E -o '[a-z]+_version=[0-9.]+' $context/Dockerfile)
2020
mysql_version=$(head -n1 $context/Dockerfile | grep -E -o '[0-9.]{2,}')
2121

22+
function run_sql() {
23+
local sql="$1"
24+
docker container exec "${container_name}" mysql -uroot -sse "${sql}"
25+
}
26+
27+
function assert() {
28+
local expected="$1"
29+
local actual="$2"
30+
if [ "${expected}" = "${actual}" ]; then
31+
return 0
32+
fi
33+
echo -e "Not match.\nexpected: <${expected}>\nactual : <${actual}>"
34+
return 1
35+
}
36+
37+
function cleanup() {
38+
sudo docker container stop "${container_name}"
39+
sudo docker container logs "${container_name}"
40+
sudo docker container rm "${container_name}"
41+
}
42+
43+
trap cleanup EXIT
2244
sudo docker container run \
2345
-d \
24-
-p 33061:3306 \
2546
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
2647
--name $container_name \
2748
$image_name
49+
2850
### Should test.
2951
while true ; do
30-
mysqladmin -h 127.0.0.1 -P 33061 -uroot ping && break
52+
docker container exec "${container_name}" mysqladmin -uroot ping && break
3153
sleep 1
3254
done
33-
(echo -e "mroonga_libgroonga_version\t${groonga_version}"; \
34-
echo -e "mroonga_version\t${mroonga_version}"; \
35-
echo -e "version\t${mysql_version}") \
36-
> /tmp/expected.txt
37-
mysql_e="mysql -h 127.0.0.1 -P 33061 -uroot -sse"
38-
($mysql_e "SHOW VARIABLES LIKE 'mroonga_libgroonga_version'"; \
39-
$mysql_e "SHOW VARIABLES LIKE 'mroonga_version'"; \
40-
$mysql_e "SHOW VARIABLES LIKE 'version'") \
41-
> /tmp/actual.txt
42-
set +e
43-
diff -u /tmp/expected.txt /tmp/actual.txt
44-
success=$?
45-
set -e
46-
sudo docker container stop $container_name
47-
sudo docker container logs $container_name
48-
sudo docker container rm $container_name
49-
exit $success
55+
56+
for i in {1..30}; do
57+
# Need to wait a bit until Mroonga is available.
58+
run_sql "SELECT mroonga_command('status')" > /dev/null 2>&1 && break
59+
sleep 1
60+
done
61+
62+
assert \
63+
"\"${groonga_version}\"" \
64+
"$(run_sql "SELECT JSON_EXTRACT(mroonga_command('status'), '$.version')")"
65+
assert \
66+
"mroonga_libgroonga_version ${groonga_version}" \
67+
"$(run_sql "SHOW VARIABLES LIKE 'mroonga_libgroonga_version'")"
68+
assert \
69+
"mroonga_version ${mroonga_version}" \
70+
"$(run_sql "SHOW VARIABLES LIKE 'mroonga_version'")"
71+
assert \
72+
"version ${mysql_version}" \
73+
"$(run_sql "SHOW VARIABLES LIKE 'version'")"

0 commit comments

Comments
 (0)