@@ -6,6 +6,12 @@ export version="$1"
6
6
db=${2:- install}
7
7
phpversion=" ${3} "
8
8
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
+
9
15
set -eux
10
16
11
17
if [ -z " $phpversion " ]; then
@@ -53,13 +59,13 @@ cat > ~/.my.cnf <<EOF
53
59
[client]
54
60
host=sqlserver
55
61
user=root
56
- password=root
62
+ password=${MYSQL_ROOT_PASSWORD}
57
63
EOF
58
64
cat ~ /.my.cnf
59
65
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'@'%';"
63
69
mysql_root " FLUSH PRIVILEGES;"
64
70
65
71
# Show some MySQL debugging
@@ -70,7 +76,7 @@ mysql_root "SELECT user,host FROM mysql.user"
70
76
mysql_root " SET GLOBAL max_allowed_packet=1073741824"
71
77
mysql_root " SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
72
78
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
74
80
mysql_user " SELECT CURRENT_USER();"
75
81
mysql_user " SELECT USER();"
76
82
section_end
@@ -119,29 +125,33 @@ section_end
119
125
120
126
if [ " ${db} " = " install" ]; then
121
127
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
122
132
/opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a " $ARTIFACTS /mysql.txt"
123
133
section_end
124
134
fi
125
135
126
136
section_start " Setup user"
127
137
# 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
129
139
if [ " $version " = " team" ]; then
130
140
# 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
133
143
elif [ " $version " = " jury" ]; then
134
144
# 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
136
146
elif [ " $version " = " balloon" ]; then
137
147
# 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
139
149
elif [ " $version " = " admin" ]; then
140
150
# 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
146
156
fi
147
157
section_end
0 commit comments