|
5 | 5 | export version="$1" |
6 | 6 | db=${2:-install} |
7 | 7 |
|
| 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 | + |
8 | 14 | set -eux |
9 | 15 |
|
10 | 16 | PHPVERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";') |
@@ -49,21 +55,21 @@ cat > ~/.my.cnf <<EOF |
49 | 55 | [client] |
50 | 56 | host=sqlserver |
51 | 57 | user=root |
52 | | -password=root |
| 58 | +password=${MYSQL_ROOT_PASSWORD} |
53 | 59 | EOF |
54 | 60 | cat ~/.my.cnf |
55 | 61 |
|
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'@'%';" |
59 | 65 | mysql_root "FLUSH PRIVILEGES;" |
60 | 66 |
|
61 | 67 | # Show some MySQL debugging |
62 | 68 | mysql_root "show databases" |
63 | 69 | mysql_root "SELECT CURRENT_USER();" |
64 | 70 | mysql_root "SELECT USER();" |
65 | 71 | 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 |
67 | 73 | mysql_user "SELECT CURRENT_USER();" |
68 | 74 | mysql_user "SELECT USER();" |
69 | 75 | section_end |
@@ -112,29 +118,33 @@ section_end |
112 | 118 |
|
113 | 119 | if [ "${db}" = "install" ]; then |
114 | 120 | 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 |
115 | 125 | /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a "$ARTIFACTS/mysql.txt" |
116 | 126 | section_end |
117 | 127 | fi |
118 | 128 |
|
119 | 129 | section_start "Setup user" |
120 | 130 | # 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 |
122 | 132 | if [ "$version" = "team" ]; then |
123 | 133 | # 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 |
126 | 136 | elif [ "$version" = "jury" ]; then |
127 | 137 | # 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 |
129 | 139 | elif [ "$version" = "balloon" ]; then |
130 | 140 | # 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 |
132 | 142 | elif [ "$version" = "admin" ]; then |
133 | 143 | # 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 |
135 | 145 | 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 |
139 | 149 | fi |
140 | 150 | section_end |
0 commit comments