Skip to content
This repository was archived by the owner on Aug 16, 2021. It is now read-only.

Commit 9a8b387

Browse files
authored
Merge pull request #109 from michelp/master
--db-pgbench and --workload-pgbench
2 parents 1ef4355 + d4467fb commit 9a8b387

File tree

2 files changed

+63
-16
lines changed

2 files changed

+63
-16
lines changed

nancy_run.sh

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,12 @@ function help() {
139139
- dump in \"custom\" format, made with 'pg_dump -Fc ..' ('*.pgdmp'),
140140
* sequence of SQL commands specified as in a form of plain text.
141141
142+
\033[1m--db-pgbench\033[22m (string)
143+
144+
Initialize database for pgbench. Contains pgbench init arguments:
145+
146+
* Example nancy run --db-pgbench \"-s 100\"
147+
142148
\033[1m--commands-after-container-init\033[22m (string)
143149
144150
Shell commands to be executed after the container initialization. Can be used
@@ -169,6 +175,10 @@ function help() {
169175
SQL queries to be used as workload. These queries will be executed in a signle
170176
database session.
171177
178+
\033[1m--workload-pgbench\033[22m (string)
179+
180+
pgbench arguments to pass for tests. Ex: \"-c 10 -j 4 -t 1000\"
181+
172182
\033[1m--workload-basis\033[22m (string)
173183
174184
Reserved / Not yet implemented.
@@ -297,12 +307,14 @@ function dbg_cli_parameters() {
297307
echo "DB_PREPARED_SNAPSHOT: ${DB_PREPARED_SNAPSHOT}"
298308
echo "DB_DUMP: $DB_DUMP"
299309
echo "DB_NAME: $DB_NAME"
310+
echo "DB_PGBENCH: $DB_PGBENCH"
300311
echo "COMMANDS_AFTER_CONTAINER_INIT: $COMMANDS_AFTER_CONTAINER_INIT"
301312
echo "SQL_BEFORE_DB_RESTORE: $SQL_BEFORE_DB_RESTORE"
302313
echo "SQL_AFTER_DB_RESTORE: $SQL_AFTER_DB_RESTORE"
303314
echo "WORKLOAD_REAL: $WORKLOAD_REAL"
304315
echo "WORKLOAD_BASIS: $WORKLOAD_BASIS"
305316
echo "WORKLOAD_CUSTOM_SQL: $WORKLOAD_CUSTOM_SQL"
317+
echo "WORKLOAD_PGBENCH: $WORKLOAD_PGBENCH"
306318
echo "WORKLOAD_REAL_REPLAY_SPEED: $WORKLOAD_REAL_REPLAY_SPEED"
307319
echo "DELTA_SQL_DO: $DELTA_SQL_DO"
308320
echo "DELTA_SQL_UNDO: $DELTA_SQL_UNDO"
@@ -384,7 +396,9 @@ function check_cli_parameters() {
384396
([[ ! -z ${WORKLOAD_REAL+x} ]] && [[ -z $WORKLOAD_REAL ]]) && unset -v WORKLOAD_REAL
385397
([[ ! -z ${WORKLOAD_BASIS+x} ]] && [[ -z $WORKLOAD_BASIS ]]) && unset -v WORKLOAD_BASIS
386398
([[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && [[ -z $WORKLOAD_CUSTOM_SQL ]]) && unset -v WORKLOAD_CUSTOM_SQL
399+
([[ ! -z ${WORKLOAD_PGBENCH+x} ]] && [[ -z $WORKLOAD_PGBENCH ]]) && unset -v WORKLOAD_PGBENCH
387400
([[ ! -z ${DB_DUMP+x} ]] && [[ -z $DB_DUMP ]]) && unset -v DB_DUMP
401+
([[ ! -z ${DB_PGBENCH+x} ]] && [[ -z $DB_PGBENCH ]]) && unset -v DB_PGBENCH
388402
([[ ! -z ${COMMANDS_AFTER_CONTAINER_INIT+x} ]] && [[ -z $COMMANDS_AFTER_CONTAINER_INIT ]]) && unset -v COMMANDS_AFTER_CONTAINER_INIT
389403
([[ ! -z ${SQL_BEFORE_DB_RESTORE+x} ]] && [[ -z $SQL_BEFORE_DB_RESTORE ]]) && unset -v SQL_BEFORE_DB_RESTORE
390404
([[ ! -z ${SQL_AFTER_DB_RESTORE+x} ]] && [[ -z $SQL_AFTER_DB_RESTORE ]]) && unset -v SQL_AFTER_DB_RESTORE
@@ -491,8 +505,8 @@ function check_cli_parameters() {
491505
[[ ! -z ${WORKLOAD_BASIS+x} ]] && let workloads_count=$workloads_count+1
492506
[[ ! -z ${WORKLOAD_REAL+x} ]] && let workloads_count=$workloads_count+1
493507
[[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && let workloads_count=$workloads_count+1
494-
495-
if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]]; then
508+
[[ ! -z ${WORKLOAD_PGBENCH+x} ]] && let workloads_count=$workloads_count+1
509+
if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] && [[ -z ${DB_PGBENCH+x} ]]; then
496510
err "ERROR: The object (database) is not defined."
497511
exit 1
498512
fi
@@ -957,6 +971,8 @@ while [ $# -gt 0 ]; do
957971
DB_PREPARED_SNAPSHOT="$2"; shift 2 ;;
958972
--db-dump )
959973
DB_DUMP="$2"; shift 2 ;;
974+
--db-pgbench )
975+
DB_PGBENCH="$2"; shift 2 ;;
960976
--db-name )
961977
DB_NAME="$2"; shift 2 ;;
962978
--commands-after-container-init )
@@ -970,6 +986,9 @@ while [ $# -gt 0 ]; do
970986
--workload-custom-sql )
971987
#s3 url|filename|content
972988
WORKLOAD_CUSTOM_SQL="$2"; shift 2 ;;
989+
--workload-pgbench )
990+
#s3 url|filename|content
991+
WORKLOAD_PGBENCH="$2"; shift 2 ;;
973992
--workload-real )
974993
#s3 url
975994
WORKLOAD_REAL="$2"; shift 2 ;;
@@ -1219,20 +1238,24 @@ function apply_sql_before_db_restore() {
12191238
function restore_dump() {
12201239
OP_START_TIME=$(date +%s)
12211240
msg "Restore database dump"
1222-
case "$DB_DUMP_EXT" in
1223-
sql)
1224-
docker_exec bash -c "cat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1225-
;;
1226-
bz2)
1227-
docker_exec bash -c "bzcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1228-
;;
1229-
gz)
1230-
docker_exec bash -c "zcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1231-
;;
1232-
pgdmp)
1233-
docker_exec bash -c "pg_restore -j $CPU_CNT --no-owner --no-privileges -U postgres -d $DB_NAME $MACHINE_HOME/$DB_DUMP_FILENAME" || true
1234-
;;
1235-
esac
1241+
if ([ ! -z ${DB_PGBENCH+x} ]); then
1242+
docker_exec bash -c "pgbench -i $DB_PGBENCH -U postgres $DB_NAME" || true
1243+
else
1244+
case "$DB_DUMP_EXT" in
1245+
sql)
1246+
docker_exec bash -c "cat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1247+
;;
1248+
bz2)
1249+
docker_exec bash -c "bzcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1250+
;;
1251+
gz)
1252+
docker_exec bash -c "zcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT"
1253+
;;
1254+
pgdmp)
1255+
docker_exec bash -c "pg_restore -j $CPU_CNT --no-owner --no-privileges -U postgres -d $DB_NAME $MACHINE_HOME/$DB_DUMP_FILENAME" || true
1256+
;;
1257+
esac
1258+
fi
12361259
END_TIME=$(date +%s)
12371260
DURATION=$(echo $((END_TIME-OP_START_TIME)) | awk '{printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}')
12381261
msg "Time taken to restore database: $DURATION."
@@ -1406,6 +1429,8 @@ function execute_workload() {
14061429
else
14071430
docker_exec bash -c "pgreplay -r -j $MACHINE_HOME/$WORKLOAD_FILE_NAME"
14081431
fi
1432+
elif [ ! -z ${WORKLOAD_PGBENCH+x} ]; then
1433+
docker_exec bash -c "pgbench $WORKLOAD_PGBENCH -U postgres $DB_NAME"
14091434
else
14101435
if ([ ! -z ${WORKLOAD_CUSTOM_SQL+x} ] && [ "$WORKLOAD_CUSTOM_SQL" != "" ]); then
14111436
WORKLOAD_CUSTOM_FILENAME=$(basename $WORKLOAD_CUSTOM_SQL)

tests/nancy_run_localhost_pgbench.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
3+
realpath() {
4+
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
5+
}
6+
7+
src_dir=$(dirname $(dirname $(realpath "$0")))"/.circleci"
8+
9+
output=$(
10+
${BASH_SOURCE%/*}/../nancy run \
11+
--db-pgbench "-s 1" \
12+
--workload-pgbench "-t 1" 2>&1
13+
)
14+
15+
regex="Errors:[[:blank:]]*0"
16+
if [[ $output =~ $regex ]]; then
17+
echo -e "\e[36mOK\e[39m"
18+
else
19+
>&2 echo -e "\e[31mFAILED\e[39m"
20+
>&2 echo -e "Output: $output"
21+
exit 1
22+
fi

0 commit comments

Comments
 (0)