Skip to content

Commit 5744c3b

Browse files
committed
Allow for a testing database for unit tests
1 parent 0c0056e commit 5744c3b

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
@@ -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
@@ -56,13 +62,13 @@ cat > ~/.my.cnf <<EOF
5662
[client]
5763
host=sqlserver
5864
user=root
59-
password=root
65+
password=${MYSQL_ROOT_PASSWORD}
6066
EOF
6167
cat ~/.my.cnf
6268

63-
mysql_root "CREATE DATABASE IF NOT EXISTS \`domjudge\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
69+
mysql_root "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
6470
mysql_root "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';"
65-
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`domjudge\`.* TO 'domjudge'@'%';"
71+
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';"
6672
mysql_root "FLUSH PRIVILEGES;"
6773

6874
# Show some MySQL debugging
@@ -73,7 +79,7 @@ mysql_root "SELECT user,host FROM mysql.user"
7379
mysql_root "SET GLOBAL max_allowed_packet=1073741824"
7480
mysql_root "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
7581
mysql_root "SHOW VARIABLES LIKE '%_timeout'"
76-
echo "unused:sqlserver:domjudge:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
82+
echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
7783
mysql_user "SELECT CURRENT_USER();"
7884
mysql_user "SELECT USER();"
7985
section_end
@@ -122,29 +128,33 @@ section_end
122128

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

129139
section_start "Setup user"
130140
# We're using the admin user in all possible roles
131-
mysql_root "DELETE FROM userrole WHERE userid=1;" domjudge
141+
mysql_root "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
132142
if [ "$version" = "team" ]; then
133143
# Add team to admin user
134-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
135-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
144+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
145+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
136146
elif [ "$version" = "jury" ]; then
137147
# Add jury to admin user
138-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
148+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
139149
elif [ "$version" = "balloon" ]; then
140150
# Add balloon to admin user
141-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
151+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
142152
elif [ "$version" = "admin" ]; then
143153
# Add admin to admin user
144-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
145-
elif [ "$version" = "all" ]; then
146-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
147-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
148-
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
154+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
155+
elif [ "$version" = "all" ] || [ "$version" = "unit" ]; then
156+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
157+
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
158+
mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
149159
fi
150160
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)