Skip to content

Commit 850e9f1

Browse files
Michael Vasseurvmcj
authored andcommitted
Allow for a testing database for unit tests
1 parent 682f989 commit 850e9f1

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

.github/jobs/baseinstall.sh

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
export version="$1"
66
db=${2:-install}
77

8+
# If this script is called from unit-tests.sh, we use the test environment
9+
export APP_ENV="${3:-prod}"
10+
11+
# In the test environment, we need to use a different database
12+
[ "$APP_ENV" = "prod" ] && DATABASE_NAME=domjudge || DATABASE_NAME=domjudge_test
13+
814
set -eux
915

1016
PHPVERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";')
@@ -49,21 +55,21 @@ cat > ~/.my.cnf <<EOF
4955
[client]
5056
host=sqlserver
5157
user=root
52-
password=root
58+
password=${MYSQL_ROOT_PASSWORD}
5359
EOF
5460
cat ~/.my.cnf
5561

56-
mysql_root "CREATE DATABASE IF NOT EXISTS \`domjudge\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
57-
mysql_root "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';"
58-
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`domjudge\`.* TO 'domjudge'@'%';"
62+
mysql_root "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
63+
mysql_root "CREATE USER IF NOT EXISTS \`$DATABASE_NAME\`@'%' IDENTIFIED BY 'domjudge';"
64+
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';"
5965
mysql_root "FLUSH PRIVILEGES;"
6066

6167
# Show some MySQL debugging
6268
mysql_root "show databases"
6369
mysql_root "SELECT CURRENT_USER();"
6470
mysql_root "SELECT USER();"
6571
mysql_root "SELECT user,host FROM mysql.user"
66-
echo "unused:sqlserver:domjudge:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
72+
echo "unused:sqlserver:domjudge:domjudge:$DATABASE_NAME:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
6773
mysql_user "SELECT CURRENT_USER();"
6874
mysql_user "SELECT USER();"
6975
section_end
@@ -112,29 +118,33 @@ section_end
112118

113119
if [ "${db}" = "install" ]; then
114120
section_start "Install the example data"
121+
if [ "$version" = "unit" ]; then
122+
# Make sure admin has no team associated so we will not insert submissions during unit tests.
123+
mysql_root "UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME
124+
fi
115125
/opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a "$ARTIFACTS/mysql.txt"
116126
section_end
117127
fi
118128

119129
section_start "Setup user"
120130
# We're using the admin user in all possible roles
121-
mysql_root "DELETE FROM userrole WHERE userid=1;" domjudge
131+
mysql_root "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
122132
if [ "$version" = "team" ]; then
123133
# Add team to admin user
124-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
125-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
134+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
135+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
126136
elif [ "$version" = "jury" ]; then
127137
# Add jury to admin user
128-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
138+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
129139
elif [ "$version" = "balloon" ]; then
130140
# Add balloon to admin user
131-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
141+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
132142
elif [ "$version" = "admin" ]; then
133143
# Add admin to admin user
134-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
144+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
135145
elif [ "$version" = "all" ]; then
136-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
137-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
138-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
146+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
147+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
148+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
139149
fi
140150
section_end

gitlab/base.sh

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@ export APP_ENV="${1:-prod}"
1010

1111
lsb_release -a
1212

13-
cat > ~/.my.cnf <<EOF
14-
[client]
15-
host=sqlserver
16-
user=root
17-
password=${MYSQL_ROOT_PASSWORD}
18-
EOF
19-
cat ~/.my.cnf
20-
2113
# FIXME: This chicken-egg problem is annoying but let us bootstrap for now.
2214
echo "CREATE DATABASE IF NOT EXISTS \`${DATABASE_NAME}\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" | mysql
2315
echo "CREATE USER 'domjudge'@'%' IDENTIFIED BY 'domjudge';" | mysql

0 commit comments

Comments
 (0)