-
Notifications
You must be signed in to change notification settings - Fork 106
Expand file tree
/
Copy pathprepare-database-mysql.sh
More file actions
54 lines (45 loc) · 1.58 KB
/
prepare-database-mysql.sh
File metadata and controls
54 lines (45 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
# set -ex
# read variables from environment
db_host=${CNPMCORE_DATABASE_HOST:-127.0.0.1}
db_port=${CNPMCORE_DATABASE_PORT:-3306}
db_username=${CNPMCORE_DATABASE_USER:-root}
db_password=${CNPMCORE_DATABASE_PASSWORD:-} # default to empty password
db_name=${CNPMCORE_DATABASE_NAME:-cnpmcore_unittest}
# prepare MySQL param
param="-h $db_host -P $db_port -u $db_username"
if [ -n "$db_password" ]; then
param="$param -p$db_password"
fi
if [ "$CI" ]; then
echo "⛷️ Skipping database creation in CI environment."
else
# reset database
echo "️😈 Reset database $db_name in local"
mysql $param -e "DROP DATABASE IF EXISTS $db_name"
mysql $param -e "CREATE DATABASE $db_name CHARACTER SET utf8"
fi
# find all sql files and sort
sql_files=$(ls sql/mysql/*.sql | sort)
echo "🤖 Running the following SQL files:"
# execute sql files
for file in $sql_files; do
echo "🔖 Running $file..."
mysql $param $db_name < "$file"
done
echo "🎉 prepare database $db_name done"
mysql $param -e "USE $db_name; SHOW TABLES;"
# Create per-worker databases for vitest parallel execution
# Default to the number of CPU cores
cpu_cores=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
max_workers=${CNPMCORE_TEST_WORKERS:-$cpu_cores}
for i in $(seq 0 $max_workers); do
worker_db="${db_name}_${i}"
echo "😈 Reset worker database $worker_db"
mysql $param -e "DROP DATABASE IF EXISTS $worker_db"
mysql $param -e "CREATE DATABASE $worker_db CHARACTER SET utf8"
for file in $sql_files; do
mysql $param $worker_db < "$file"
done
done
echo "🎉 prepare worker databases done"