mirror of https://github.com/yandex/odyssey.git
96 lines
2.3 KiB
Bash
Executable File
96 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
echo "WARNING: all running instances of postgresql and odyssey will be terminated. Continue (y/n)?"
|
|
read choice
|
|
case "$choice" in
|
|
y|Y ) echo "Ok, proceeding";;
|
|
n|N ) echo "exiting" && exit 1;;
|
|
* ) echo "invalid" && exit 1;;
|
|
esac
|
|
|
|
if pgrep -x "pgbouncer" > /dev/null
|
|
then
|
|
echo "PGBouncer running, please stop it"
|
|
exit 1
|
|
else
|
|
echo "PGBouncer is stopped, OK"
|
|
fi
|
|
|
|
if [[ -z $PGSRC ]]; then
|
|
echo "ERROR: \$PGSRC environment variable must point to PostgreSQL source code."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z $PGINSTALL ]]; then
|
|
echo "ERROR: \$PGINSTALL environment variable must point to PostgreSQL installation."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$(ls -A $PGSRC)" ]; then
|
|
START_WD=$PWD
|
|
echo "PGSRC dir is empty, aquiring PostgreSQL sources REL_11_STABLE"
|
|
git clone --depth=5 --single-branch --branch=REL_11_STABLE https://github.com/postgres/postgres $PGSRC
|
|
cd $PGSRC
|
|
echo "configure"
|
|
./configure --prefix=$PGINSTALL --enable-depend > /dev/null
|
|
echo "make"
|
|
make -j4 install>/dev/null
|
|
|
|
cd $START_WD
|
|
fi
|
|
|
|
U=`whoami`
|
|
|
|
soft_cleanup(){
|
|
pkill -9 postgres || true
|
|
rm -rf tmpbuild || true
|
|
}
|
|
|
|
cleanup () {
|
|
echo "Cleanup"
|
|
soft_cleanup
|
|
pkill -9 odyssey || true
|
|
}
|
|
|
|
cleanup
|
|
trap cleanup ERR INT TERM
|
|
|
|
echo "Make temp build"
|
|
mkdir tmpbuild
|
|
cd tmpbuild
|
|
cmake -DCMAKE_BUILD_TYPE=Release ../.. >/dev/null
|
|
make -j 4 >/dev/null
|
|
|
|
echo "Make temp DB"
|
|
$PGINSTALL/bin/initdb datadir >/dev/null
|
|
$PGINSTALL/bin/pg_ctl -D datadir start >/dev/null
|
|
|
|
echo "Start Odyssey"
|
|
./sources/odyssey ../../odyssey.conf>/dev/null &
|
|
cd ..
|
|
|
|
sleep 1
|
|
|
|
#suppress pgbench warnings in benchmarks loop
|
|
PGHOST=127.0.0.1 PGPORT=6432 $PGINSTALL/bin/pgbench -i postgres
|
|
|
|
declare -a resultset_sizes=("1" "100" "10000" "10000000")
|
|
|
|
## now loop through the above array
|
|
for size in "${resultset_sizes[@]}"
|
|
do
|
|
echo "resultset_size $size"
|
|
echo "select generate_series(1,$size);"> tmpbuild/shot.sql
|
|
PGHOST=127.0.0.1 PGPORT=6432 $PGINSTALL/bin/pgbench --no-vacuum -T 10 -c 4 -j 4 -f tmpbuild/shot.sql postgres| grep " = "
|
|
done
|
|
|
|
echo "mixed resultset"
|
|
echo "select generate_series(1,(random()*random()*10000)::int);"> tmpbuild/shot.sql
|
|
PGHOST=127.0.0.1 PGPORT=6432 $PGINSTALL/bin/pgbench --no-vacuum -T 10 -c 4 -j 4 -f tmpbuild/shot.sql postgres| grep " = "
|
|
|
|
echo "Stop Odyssey"
|
|
kill %1
|
|
soft_cleanup
|