Skip to content

Commit 84f0be6

Browse files
committed
Allow for a testing database for unit tests
1 parent 7dfa543 commit 84f0be6

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

.github/jobs/baseinstall.sh

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ export version="$1"
66
db=${2:-install}
77
phpversion="${3}"
88

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

1117
if [ -z "$phpversion" ]; then
@@ -53,13 +59,13 @@ cat > ~/.my.cnf <<EOF
5359
[client]
5460
host=sqlserver
5561
user=root
56-
password=root
62+
password=${MYSQL_ROOT_PASSWORD}
5763
EOF
5864
cat ~/.my.cnf
5965

60-
mysql_root "CREATE DATABASE IF NOT EXISTS \`domjudge\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
61-
mysql_root "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';"
62-
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`domjudge\`.* TO 'domjudge'@'%';"
66+
mysql_root "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
67+
mysql_root "CREATE USER IF NOT EXISTS 'domjudge'@'%' IDENTIFIED BY 'domjudge';"
68+
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';"
6369
mysql_root "FLUSH PRIVILEGES;"
6470

6571
# Show some MySQL debugging
@@ -70,7 +76,7 @@ mysql_root "SELECT user,host FROM mysql.user"
7076
mysql_root "SET GLOBAL max_allowed_packet=1073741824"
7177
mysql_root "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
7278
mysql_root "SHOW VARIABLES LIKE '%_timeout'"
73-
echo "unused:sqlserver:domjudge:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
79+
echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
7480
mysql_user "SELECT CURRENT_USER();"
7581
mysql_user "SELECT USER();"
7682
section_end
@@ -119,29 +125,33 @@ section_end
119125

120126
if [ "${db}" = "install" ]; then
121127
section_start "Install the example data"
128+
if [ "$version" = "unit" ]; then
129+
# Make sure admin has no team associated so we will not insert submissions during unit tests.
130+
mysql_root "UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME
131+
fi
122132
/opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a "$ARTIFACTS/mysql.txt"
123133
section_end
124134
fi
125135

126136
section_start "Setup user"
127137
# We're using the admin user in all possible roles
128-
mysql_root "DELETE FROM userrole WHERE userid=1;" domjudge
138+
mysql_root "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
129139
if [ "$version" = "team" ]; then
130140
# Add team to admin user
131-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
132-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
141+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
142+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
133143
elif [ "$version" = "jury" ]; then
134144
# Add jury to admin user
135-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
145+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
136146
elif [ "$version" = "balloon" ]; then
137147
# Add balloon to admin user
138-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
148+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
139149
elif [ "$version" = "admin" ]; then
140150
# Add admin to admin user
141-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
142-
elif [ "$version" = "all" ]; then
143-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
144-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
145-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
151+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
152+
elif [ "$version" = "all" ] || [ "$version" = "unit" ]; then
153+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
154+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
155+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
146156
fi
147157
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)