Skip to content

Commit 4234d78

Browse files
authored
Merge pull request #4 from devilbox/release-0.2
Release 0.2
2 parents 47e19fa + 8fd006e commit 4234d78

File tree

4 files changed

+167
-14
lines changed

4 files changed

+167
-14
lines changed

Makefile

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,28 @@ build-mysql-5.7:
2727
docker tag mysql:5.7 $(IMAGE):mysql-5.7
2828
build-mysql-8.0:
2929
while ! docker pull mysql:8.0; do sleep 1; done
30+
# Adjust and commit authentication
31+
docker run -it -d --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --name devilbox-mysql-commit mysql:8.0
32+
docker exec -it devilbox-mysql-commit \
33+
sed -i'' "s/^symbolic-links.*$$/symbolic-links=0\ndefault-authentication-plugin=mysql_native_password/g" /etc/mysql/my.cnf
34+
docker diff devilbox-mysql-commit
35+
docker commit devilbox-mysql-commit mysql:8.0
36+
docker stop devilbox-mysql-commit
37+
# /Adjust and commit authentication
3038
docker tag mysql:8.0 $(IMAGE):mysql-8.0
3139

3240
test-mysql-5.5:
33-
docker run --rm -it $(IMAGE):mysql-5.5 -V | grep 'MySQL' | grep '5\.5'
41+
./tests/01-version.sh "mysql" "5.5"
42+
./tests/02-mysqli.sh "mysql" "5.5"
3443
test-mysql-5.6:
35-
docker run --rm -it $(IMAGE):mysql-5.6 -V | grep 'MySQL' | grep '5\.6'
44+
./tests/01-version.sh "mysql" "5.6"
45+
./tests/02-mysqli.sh "mysql" "5.6"
3646
test-mysql-5.7:
37-
docker run --rm -it $(IMAGE):mysql-5.7 -V | grep 'MySQL' | grep '5\.7'
47+
./tests/01-version.sh "mysql" "5.7"
48+
./tests/02-mysqli.sh "mysql" "5.7"
3849
test-mysql-8.0:
39-
docker run --rm -it $(IMAGE):mysql-8.0 -V | grep 'MySQL' | grep '8\.0'
50+
./tests/01-version.sh "mysql" "8.0"
51+
./tests/02-mysqli.sh "mysql" "8.0"
4052

4153

4254
# -------------------------------------------------------------------------------------------------
@@ -62,17 +74,23 @@ build-mariadb-10.4:
6274
docker tag mariadb:10.4 $(IMAGE):mariadb-10.4
6375

6476
test-mariadb-5.5:
65-
docker run --rm -it $(IMAGE):mariadb-5.5 -V | grep 'MariaDB' | grep '5\.5'
77+
./tests/01-version.sh "mariadb" "5.5"
78+
./tests/02-mysqli.sh "mariadb" "5.5"
6679
test-mariadb-10.0:
67-
docker run --rm -it $(IMAGE):mariadb-10.0 -V | grep 'MariaDB' | grep '10\.0'
80+
./tests/01-version.sh "mariadb" "10.0"
81+
./tests/02-mysqli.sh "mariadb" "10.0"
6882
test-mariadb-10.1:
69-
docker run --rm -it $(IMAGE):mariadb-10.1 -V | grep 'MariaDB' | grep '10\.1'
83+
./tests/01-version.sh "mariadb" "10.1"
84+
./tests/02-mysqli.sh "mariadb" "10.1"
7085
test-mariadb-10.2:
71-
docker run --rm -it $(IMAGE):mariadb-10.2 -V | grep 'MariaDB' | grep '10\.2'
86+
./tests/01-version.sh "mariadb" "10.2"
87+
./tests/02-mysqli.sh "mariadb" "10.2"
7288
test-mariadb-10.3:
73-
docker run --rm -it $(IMAGE):mariadb-10.3 -V | grep 'MariaDB' | grep '10\.3'
89+
./tests/01-version.sh "mariadb" "10.3"
90+
./tests/02-mysqli.sh "mariadb" "10.3"
7491
test-mariadb-10.4:
75-
docker run --rm -it $(IMAGE):mariadb-10.4 -V | grep 'MariaDB' | grep '10\.4'
92+
./tests/01-version.sh "mariadb" "10.4"
93+
./tests/02-mysqli.sh "mariadb" "10.4"
7694

7795

7896
# -------------------------------------------------------------------------------------------------
@@ -89,13 +107,26 @@ build-percona-5.7:
89107
docker tag percona:5.7 $(IMAGE):percona-5.7
90108
build-percona-8.0:
91109
while ! docker pull percona:8.0; do sleep 1; done
110+
# Adjust and commit authentication
111+
docker run -it -d --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --name devilbox-mysql-commit percona:8.0
112+
docker exec -it --user root devilbox-mysql-commit \
113+
sed -i'' "s|^pid-file=.*$$|pid-file=/var/run/mysqld/mysqld.pid\ndefault-authentication-plugin=mysql_native_password|g" /etc/my.cnf
114+
#docker exec -it --user root devilbox-mysql-commit rm -rf /var/log/mysql
115+
docker diff devilbox-mysql-commit
116+
docker commit devilbox-mysql-commit percona:8.0
117+
docker stop devilbox-mysql-commit
118+
# /Adjust and commit authentication
92119
docker tag percona:8.0 $(IMAGE):percona-8.0
93120

94121
test-percona-5.5:
95-
docker run --rm -it $(IMAGE):percona-5.5 -V | grep 'Percona' | grep '5\.5'
122+
./tests/01-version.sh "percona" "5.5"
123+
./tests/02-mysqli.sh "percona" "5.5"
96124
test-percona-5.6:
97-
docker run --rm -it $(IMAGE):percona-5.6 -V | grep 'Percona' | grep '5\.6'
125+
./tests/01-version.sh "percona" "5.6"
126+
./tests/02-mysqli.sh "percona" "5.6"
98127
test-percona-5.7:
99-
docker run --rm -it $(IMAGE):percona-5.7 -V | grep 'Percona' | grep '5\.7'
128+
./tests/01-version.sh "percona" "5.7"
129+
./tests/02-mysqli.sh "percona" "5.7"
100130
test-percona-8.0:
101-
docker run --rm -it $(IMAGE):percona-8.0 -V | grep 'Percona' | grep '8\.0'
131+
./tests/01-version.sh "percona" "8.0"
132+
./tests/02-mysqli.sh "percona" "8.0"

tests/01-version.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
3+
echo "# --------------------------------------------------------------------------------------------------"
4+
echo "# Testing MySQL server version"
5+
echo "# --------------------------------------------------------------------------------------------------"
6+
7+
set -e
8+
set -u
9+
set -o pipefail
10+
11+
IMAGE="devilbox/mysql"
12+
TYPE="${1}"
13+
VERSION="${2}"
14+
15+
16+
if [ "${TYPE}" = "mysql" ]; then
17+
docker run --rm -it "${IMAGE}:${TYPE}-${VERSION}" -V | grep 'MySQL' | grep "${VERSION/./\\.}"
18+
elif [ "${TYPE}" = "mariadb" ]; then
19+
docker run --rm -it "${IMAGE}:${TYPE}-${VERSION}" -V | grep 'MariaDB' | grep "${VERSION/./\\.}"
20+
elif [ "${TYPE}" = "percona" ]; then
21+
docker run --rm -it "${IMAGE}:${TYPE}-${VERSION}" -V | grep 'Percona' | grep "${VERSION/./\\.}"
22+
else
23+
>&2 echo "[ERROR] Wrong type: ${TYPE}"
24+
exit 1
25+
fi

tests/02-mysqli.sh

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env bash
2+
3+
echo "# --------------------------------------------------------------------------------------------------"
4+
echo "# Testing mysqli connectivity to MySQL"
5+
echo "# --------------------------------------------------------------------------------------------------"
6+
7+
set -e
8+
set -u
9+
set -o pipefail
10+
11+
IMAGE="devilbox/mysql"
12+
TYPE="${1}"
13+
VERSION="${2}"
14+
15+
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
16+
17+
# Start MySQL
18+
docker run \
19+
-d \
20+
-it \
21+
--rm \
22+
--hostname=mysql \
23+
--name devilbox-test-mysql \
24+
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
25+
"${IMAGE}:${TYPE}-${VERSION}"
26+
27+
# Start PHP 7.2
28+
docker run \
29+
-d \
30+
-it \
31+
--rm \
32+
--hostname=php \
33+
--entrypoint=bash \
34+
--name devilbox-test-php \
35+
--volume="${SCRIPTPATH}:/tmp" \
36+
--link devilbox-test-mysql php:7.2
37+
38+
# Install PHP mysqli module
39+
docker exec -it devilbox-test-php docker-php-ext-install mysqli
40+
41+
# Test MySQL connectivity
42+
max=100
43+
i=0
44+
while ! docker exec -it devilbox-test-php php /tmp/mysql.php >/dev/null 2>&1; do
45+
sleep 1
46+
i=$(( i + 1))
47+
if [ "${i}" -ge "${max}" ]; then
48+
docker stop devilbox-test-php || true
49+
docker stop devilbox-test-mysql || true
50+
>&2 echo "Failed"
51+
exit 1
52+
fi
53+
done
54+
55+
docker stop devilbox-test-php || true
56+
docker stop devilbox-test-mysql || true
57+
echo "Success"

tests/mysql.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
ini_set('display_startup_errors', 1);
3+
ini_set('display_errors', 1);
4+
error_reporting(-1);
5+
6+
7+
$MY_HOST = 'mysql';
8+
$MY_USER = 'root';
9+
$MY_PASS = '';
10+
11+
$link = mysqli_connect($MY_HOST, $MY_USER, $MY_PASS, 'mysql');
12+
13+
if (mysqli_connect_errno()) {
14+
echo 'FAIL';
15+
exit(1);
16+
}
17+
18+
$query = "SELECT * FROM `user` WHERE `User` = 'root';";
19+
if (!$result = mysqli_query($link, $query)) {
20+
echo 'FAIL';
21+
exit(1);
22+
}
23+
24+
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
25+
$data[] = $row;
26+
}
27+
mysqli_free_result($result);
28+
mysqli_close($link);
29+
30+
if (!isset($data[0])) {
31+
echo 'FAIL';
32+
exit(1);
33+
}
34+
if ($data[0]['User'] == 'root') {
35+
echo 'OK';
36+
exit(0);
37+
} else {
38+
echo 'FAIL';
39+
exit(1);
40+
}

0 commit comments

Comments
 (0)