blob: 75bb82ff09ae13033231a6f087422e2f218ef0db [file] [log] [blame]
#!/bin/sh
# Copyright 2016 The Transicator Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if [ ! $ARTILLERY_BIN ]; then
echo "Error: Set ARTILLERY_BIN with artillery location" >&2
exit 1
fi
if ! [ -f "./artillery/change-test.yaml" ]; then
echo "File ./artillery/change-test.yaml not found." >&2
exit 1
fi
if ! [ -f "./artillery/snapsh-test-sing.yaml" ]; then
echo "File ./artillery/snapsh-test-sing.yaml not found." >&2
exit 1
fi
if ! [ -f "./artillery/snapsh-test-mult.yaml" ]; then
echo "File ./artillery/snapsh-test-mult.yaml not found." >&2
exit 1
fi
if [ ! $TEST_PG_PW ]
then
echo " TEST_PG_PW not set, default is password"
TEST_PG_PW=password
fi
netName=transicator-tests-$$
dbName=transicator-test-pg-$$
testName=transicator-test-$$
ssName=snapshot-test-$$
csName=changeserver-test-$$
slotName=changeserver_test_slot
postgrestName=postgrest-test-$$
# Build postgresql image
docker build --tag ${dbName} ../pgoutput
# Build Postgrest server
docker build --tag ${postgrestName} -f ./Dockerfile.postgrest .
# Build Snapshot server
docker build --tag ${ssName} -f ../Dockerfile.snapshotserver ../
# Build Change server
docker build --tag ${csName} -f ../Dockerfile.changeserver ../
# Build Snapshot data generator
docker build -t ${testName} -f ./loadgen/Dockerfile.dbdatagen .
# Launch Postgress DB
docker run -d \
--name ${dbName} \
-e POSTGRES_PASSWORD=${TEST_PG_PW} \
-p 9442:5432 \
${dbName}
TEST_PG_URL=postgres://postgres:${TEST_PG_PW}@${dbName}/postgres?sslmode=disable
POSTGRES_URL=postgres://postgres:${TEST_PG_PW}@${dbName}/postgres
# Launch Postgres Data generator (DB url, rows in table, scopes in table)
docker run --name ${testName} --link ${dbName}:postgres ${testName} $TEST_PG_URL 100 10
# Launch Snapshot server
docker run -d \
--name ${ssName} \
--link ${dbName}:postgres \
-p 9444:9444 \
${ssName} \
-p 9444 \
-u $POSTGRES_URL
# Launch change server
docker run -d \
--name ${csName} \
--link ${dbName}:postgres \
-p 9443:9443 \
${csName} \
-p 9443 \
-s ${slotName} -u $POSTGRES_URL
# Launch Postgrest server
docker run -d \
--name ${postgrestName} \
--link ${dbName}:postgres \
-p 9441:9441 \
${postgrestName} \
$POSTGRES_URL
# Run the artillery related performance tests
$ARTILLERY_BIN run ./artillery/snapsh-test-sing.yaml
$ARTILLERY_BIN run ./artillery/snapsh-test-mult.yaml
$ARTILLERY_BIN run ./artillery/change-test.yaml
# Clean up
docker rm -f ${csName}
docker rm -f ${ssName}
docker rm -f ${dbName}
docker rm -f ${postgrestName}
docker rm -f ${testName}
# Remove images
RMCMD="docker rmi "
${RMCMD} ${testName} ${ssName} ${csName} ${dbName} ${postgrestName}