@@ -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() {
12191238function 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 )
0 commit comments