Files
tidb/dumpling/tests/_utils/run_services

63 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright 2020 PingCAP, Inc. Licensed under Apache-2.0.
set -eu
stop_services() {
killall -9 tidb-server || true
find "$DUMPLING_TEST_DIR" -maxdepth 1 -not -path "$DUMPLING_TEST_DIR" -not -name "*.log" | xargs rm -r || true
}
start_services() {
stop_services
echo "Ensure mysql can connected..."
i=0
while ! run_sql 'select 0 limit 0' > /dev/null; do
i=$((i+1))
if [ "$i" -gt 10 ]; then
echo 'Failed to ping MySQL Server'
exit 1
fi
sleep 3
done
echo "Generate TLS keys..."
openssl genrsa -out "$DUMPLING_TEST_DIR/ca.key" 2048
openssl req -new -batch -sha256 -subj '/CN=127.0.0.1/OU=ca' -key "$DUMPLING_TEST_DIR/ca.key" -out "$DUMPLING_TEST_DIR/ca.csr"
openssl x509 -req -sha256 -days 2 -in "$DUMPLING_TEST_DIR/ca.csr" -signkey "$DUMPLING_TEST_DIR/ca.key" -out "$DUMPLING_TEST_DIR/ca.pem" 2> /dev/null
for cluster in tidb dumpling; do
openssl genrsa -out "$DUMPLING_TEST_DIR/$cluster.key" 2048
openssl req -new -batch -sha256 -subj "/CN=127.0.0.1/OU=$cluster" -key "$DUMPLING_TEST_DIR/$cluster.key" -out "$DUMPLING_TEST_DIR/$cluster.csr"
openssl x509 -req -sha256 -days 1 -extensions EXT -extfile dumpling/tests/tls/ipsan.cnf -in "$DUMPLING_TEST_DIR/$cluster.csr" -CA "$DUMPLING_TEST_DIR/ca.pem" -CAkey "$DUMPLING_TEST_DIR/ca.key" -CAcreateserial -out "$DUMPLING_TEST_DIR/$cluster.pem" 2> /dev/null
done
cat > "$DUMPLING_TEST_DIR/tidb.toml" <<EOF
port = 4000
enable-table-lock = true
[status]
status-port = 10080
[log.file]
filename = '$DUMPLING_TEST_DIR/tidb.log'
[security]
ssl-ca = '$DUMPLING_TEST_DIR/ca.pem'
ssl-cert = '$DUMPLING_TEST_DIR/tidb.pem'
ssl-key = '$DUMPLING_TEST_DIR/tidb.key'
EOF
bin/tidb-server --config "$DUMPLING_TEST_DIR/tidb.toml" &
echo "Verifying TiDB is started..."
i=0
while ! curl -o /dev/null -sf "http://127.0.0.1:10080/status"; do
i=$((i+1))
if [ "$i" -gt 10 ]; then
echo 'Failed to start TiDB'
exit 1
fi
sleep 3
done
}