@@ -138,6 +138,12 @@ function help() {
138138 - dump in \" custom\" format, made with 'pg_dump -Fc ..' ('*.pgdmp'),
139139 * sequence of SQL commands specified as in a form of plain text.
140140
141+ \033[1m--db-pgbench\033[22m (string)
142+
143+ Initialize database for pgbench. Contains pgbench init arguments:
144+
145+ * Example nancy run --db-pgbench \" -s 100\"
146+
141147 \033[1m--commands-after-container-init\033[22m (string)
142148
143149 Shell commands to be executed after the container initialization. Can be used
@@ -168,6 +174,10 @@ function help() {
168174 SQL queries to be used as workload. These queries will be executed in a signle
169175 database session.
170176
177+ \033[1m--workload-pgbench\033[22m (string)
178+
179+ pgbench arguments to pass for tests. Ex: \" -c 10 -j 4 -t 1000\"
180+
171181 \033[1m--workload-basis\033[22m (string)
172182
173183 Reserved / Not yet implemented.
@@ -296,12 +306,14 @@ function dbg_cli_parameters() {
296306 echo " DB_PREPARED_SNAPSHOT: ${DB_PREPARED_SNAPSHOT} "
297307 echo " DB_DUMP: $DB_DUMP "
298308 echo " DB_NAME: $DB_NAME "
309+ echo " DB_PGBENCH: $DB_PGBENCH "
299310 echo " COMMANDS_AFTER_CONTAINER_INIT: $COMMANDS_AFTER_CONTAINER_INIT "
300311 echo " SQL_BEFORE_DB_RESTORE: $SQL_BEFORE_DB_RESTORE "
301312 echo " SQL_AFTER_DB_RESTORE: $SQL_AFTER_DB_RESTORE "
302313 echo " WORKLOAD_REAL: $WORKLOAD_REAL "
303314 echo " WORKLOAD_BASIS: $WORKLOAD_BASIS "
304315 echo " WORKLOAD_CUSTOM_SQL: $WORKLOAD_CUSTOM_SQL "
316+ echo " WORKLOAD_PGBENCH: $WORKLOAD_PGBENCH "
305317 echo " WORKLOAD_REAL_REPLAY_SPEED: $WORKLOAD_REAL_REPLAY_SPEED "
306318 echo " DELTA_SQL_DO: $DELTA_SQL_DO "
307319 echo " DELTA_SQL_UNDO: $DELTA_SQL_UNDO "
@@ -383,7 +395,9 @@ function check_cli_parameters() {
383395 ([[ ! -z ${WORKLOAD_REAL+x} ]] && [[ -z $WORKLOAD_REAL ]]) && unset -v WORKLOAD_REAL
384396 ([[ ! -z ${WORKLOAD_BASIS+x} ]] && [[ -z $WORKLOAD_BASIS ]]) && unset -v WORKLOAD_BASIS
385397 ([[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && [[ -z $WORKLOAD_CUSTOM_SQL ]]) && unset -v WORKLOAD_CUSTOM_SQL
398+ ([[ ! -z ${WORKLOAD_PGBENCH+x} ]] && [[ -z $WORKLOAD_PGBENCH ]]) && unset -v WORKLOAD_PGBENCH
386399 ([[ ! -z ${DB_DUMP+x} ]] && [[ -z $DB_DUMP ]]) && unset -v DB_DUMP
400+ ([[ ! -z ${DB_PGBENCH+x} ]] && [[ -z $DB_PGBENCH ]]) && unset -v DB_PGBENCH
387401 ([[ ! -z ${COMMANDS_AFTER_CONTAINER_INIT+x} ]] && [[ -z $COMMANDS_AFTER_CONTAINER_INIT ]]) && unset -v COMMANDS_AFTER_CONTAINER_INIT
388402 ([[ ! -z ${SQL_BEFORE_DB_RESTORE+x} ]] && [[ -z $SQL_BEFORE_DB_RESTORE ]]) && unset -v SQL_BEFORE_DB_RESTORE
389403 ([[ ! -z ${SQL_AFTER_DB_RESTORE+x} ]] && [[ -z $SQL_AFTER_DB_RESTORE ]]) && unset -v SQL_AFTER_DB_RESTORE
@@ -500,9 +514,8 @@ function check_cli_parameters() {
500514 [[ ! -z ${WORKLOAD_BASIS+x} ]] && let workloads_count=$workloads_count +1
501515 [[ ! -z ${WORKLOAD_REAL+x} ]] && let workloads_count=$workloads_count +1
502516 [[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && let workloads_count=$workloads_count +1
503- [[ ${DB_DUMP_EXT} = " pgbnch" ]] && let workloads_count=$workloads_count +1
504-
505- if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]]; then
517+ [[ ! -z ${WORKLOAD_PGBENCH+x} ]] && let workloads_count=$workloads_count +1
518+ if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] && [[ -z ${DB_PGBENCH+x} ]]; then
506519 err " ERROR: The object (database) is not defined."
507520 exit 1
508521 fi
@@ -957,6 +970,8 @@ while [ $# -gt 0 ]; do
957970 DB_PREPARED_SNAPSHOT=" $2 " ; shift 2 ;;
958971 --db-dump )
959972 DB_DUMP=" $2 " ; shift 2 ;;
973+ --db-pgbench )
974+ DB_PGBENCH=" $2 " ; shift 2 ;;
960975 --db-name )
961976 DB_NAME=" $2 " ; shift 2 ;;
962977 --commands-after-container-init )
@@ -970,6 +985,9 @@ while [ $# -gt 0 ]; do
970985 --workload-custom-sql )
971986 # s3 url|filename|content
972987 WORKLOAD_CUSTOM_SQL=" $2 " ; shift 2 ;;
988+ --workload-pgbench )
989+ # s3 url|filename|content
990+ WORKLOAD_PGBENCH=" $2 " ; shift 2 ;;
973991 --workload-real )
974992 # s3 url
975993 WORKLOAD_REAL=" $2 " ; shift 2 ;;
@@ -1219,23 +1237,24 @@ function apply_sql_before_db_restore() {
12191237function restore_dump() {
12201238 OP_START_TIME=$( date +%s)
12211239 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- pgbnch)
1236- docker_exec bash -c " source $MACHINE_HOME /$DB_DUMP_FILENAME ; pgbench \$ INIT -U postgres -s \$ SCALE $DB_NAME " || true
1237- ;;
1238- esac
1240+ if ([ ! -z ${DB_PGBENCH+x} ]); then
1241+ docker_exec bash -c " pgbench -i $DB_PGBENCH -U postgres $DB_NAME " || true
1242+ else
1243+ case " $DB_DUMP_EXT " in
1244+ sql)
1245+ docker_exec bash -c " cat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1246+ ;;
1247+ bz2)
1248+ docker_exec bash -c " bzcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1249+ ;;
1250+ gz)
1251+ docker_exec bash -c " zcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1252+ ;;
1253+ pgdmp)
1254+ docker_exec bash -c " pg_restore -j $CPU_CNT --no-owner --no-privileges -U postgres -d $DB_NAME $MACHINE_HOME /$DB_DUMP_FILENAME " || true
1255+ ;;
1256+ esac
1257+ fi
12391258 END_TIME=$( date +%s)
12401259 DURATION=$( echo $(( END_TIME- OP_START_TIME)) | awk ' {printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}' )
12411260 msg " Time taken to restore database: $DURATION ."
@@ -1408,11 +1427,8 @@ function execute_workload() {
14081427 else
14091428 docker_exec bash -c " pgreplay -r -j $MACHINE_HOME /$WORKLOAD_FILE_NAME "
14101429 fi
1411- elif [ " $DB_DUMP_EXT " = " pgbnch" ]; then
1412- msg " Running pgbench..."
1413- docker_exec bash -c << EOF "
1414- source $MACHINE_HOME /$DB_DUMP_FILENAME ;
1415- pgbench -P \$ PROGRESS -c \$ CLIENTS -j \$ JOBS -t \$ TRANSACTIONS -U postgres $DB_NAME "
1430+ elif [ ! -z ${WORKLOAD_PGBENCH+x} ]; then
1431+ docker_exec bash -c " pgbench $WORKLOAD_PGBENCH -U postgres $DB_NAME "
14161432EOF
14171433 else
14181434 if ([ ! -z ${WORKLOAD_CUSTOM_SQL+x} ] && [ " $WORKLOAD_CUSTOM_SQL " != " " ]); then
0 commit comments