@@ -6,6 +6,12 @@ export version="$1"
66db=${2:- install}
77phpversion=" ${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+
915set -eux
1016
1117if [ -z " $phpversion " ]; then
@@ -56,13 +62,13 @@ cat > ~/.my.cnf <<EOF
5662[client]
5763host=sqlserver
5864user=root
59- password=root
65+ password=${MYSQL_ROOT_PASSWORD}
6066EOF
6167cat ~ /.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;"
6470mysql_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'@'%';"
6672mysql_root " FLUSH PRIVILEGES;"
6773
6874# Show some MySQL debugging
@@ -73,7 +79,7 @@ mysql_root "SELECT user,host FROM mysql.user"
7379mysql_root " SET GLOBAL max_allowed_packet=1073741824"
7480mysql_root " SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
7581mysql_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
7783mysql_user " SELECT CURRENT_USER();"
7884mysql_user " SELECT USER();"
7985section_end
@@ -122,29 +128,33 @@ section_end
122128
123129if [ " ${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
127137fi
128138
129139section_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
132142if [ " $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
136146elif [ " $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
139149elif [ " $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
142152elif [ " $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
149159fi
150160section_end
0 commit comments