@@ -169,6 +169,13 @@ function help() {
169
169
'pg_basebackup -U postgres -z -ZX -P -Ft -D /ebs-db-vol-root'
170
170
where X any compression level.
171
171
172
+
173
+ \033[1m--db-pgbench\033[22m (string)
174
+
175
+ Initialize database for pgbench. Contains pgbench init arguments:
176
+
177
+ * Example nancy run --db-pgbench \" -s 100\"
178
+
172
179
\033[1m--commands-after-container-init\033[22m (string)
173
180
174
181
Shell commands to be executed after the container initialization. Can be used
@@ -199,6 +206,10 @@ function help() {
199
206
SQL queries to be used as workload. These queries will be executed in a signle
200
207
database session.
201
208
209
+ \033[1m--workload-pgbench\033[22m (string)
210
+
211
+ pgbench arguments to pass for tests. Ex: \" -c 10 -j 4 -t 1000\"
212
+
202
213
\033[1m--workload-basis\033[22m (string)
203
214
204
215
Reserved / Not yet implemented.
@@ -327,12 +338,14 @@ function dbg_cli_parameters() {
327
338
echo " DB_PREPARED_SNAPSHOT: ${DB_PREPARED_SNAPSHOT} "
328
339
echo " DB_DUMP: $DB_DUMP "
329
340
echo " DB_NAME: $DB_NAME "
341
+ echo " DB_PGBENCH: $DB_PGBENCH "
330
342
echo " COMMANDS_AFTER_CONTAINER_INIT: $COMMANDS_AFTER_CONTAINER_INIT "
331
343
echo " SQL_BEFORE_DB_RESTORE: $SQL_BEFORE_DB_RESTORE "
332
344
echo " SQL_AFTER_DB_RESTORE: $SQL_AFTER_DB_RESTORE "
333
345
echo " WORKLOAD_REAL: $WORKLOAD_REAL "
334
346
echo " WORKLOAD_BASIS: $WORKLOAD_BASIS "
335
347
echo " WORKLOAD_CUSTOM_SQL: $WORKLOAD_CUSTOM_SQL "
348
+ echo " WORKLOAD_PGBENCH: $WORKLOAD_PGBENCH "
336
349
echo " WORKLOAD_REAL_REPLAY_SPEED: $WORKLOAD_REAL_REPLAY_SPEED "
337
350
echo " DELTA_SQL_DO: $DELTA_SQL_DO "
338
351
echo " DELTA_SQL_UNDO: $DELTA_SQL_UNDO "
@@ -414,7 +427,9 @@ function check_cli_parameters() {
414
427
([[ ! -z ${WORKLOAD_REAL+x} ]] && [[ -z $WORKLOAD_REAL ]]) && unset -v WORKLOAD_REAL
415
428
([[ ! -z ${WORKLOAD_BASIS+x} ]] && [[ -z $WORKLOAD_BASIS ]]) && unset -v WORKLOAD_BASIS
416
429
([[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && [[ -z $WORKLOAD_CUSTOM_SQL ]]) && unset -v WORKLOAD_CUSTOM_SQL
430
+ ([[ ! -z ${WORKLOAD_PGBENCH+x} ]] && [[ -z $WORKLOAD_PGBENCH ]]) && unset -v WORKLOAD_PGBENCH
417
431
([[ ! -z ${DB_DUMP+x} ]] && [[ -z $DB_DUMP ]]) && unset -v DB_DUMP
432
+ ([[ ! -z ${DB_PGBENCH+x} ]] && [[ -z $DB_PGBENCH ]]) && unset -v DB_PGBENCH
418
433
([[ ! -z ${COMMANDS_AFTER_CONTAINER_INIT+x} ]] && [[ -z $COMMANDS_AFTER_CONTAINER_INIT ]]) && unset -v COMMANDS_AFTER_CONTAINER_INIT
419
434
([[ ! -z ${SQL_BEFORE_DB_RESTORE+x} ]] && [[ -z $SQL_BEFORE_DB_RESTORE ]]) && unset -v SQL_BEFORE_DB_RESTORE
420
435
([[ ! -z ${SQL_AFTER_DB_RESTORE+x} ]] && [[ -z $SQL_AFTER_DB_RESTORE ]]) && unset -v SQL_AFTER_DB_RESTORE
@@ -521,8 +536,9 @@ function check_cli_parameters() {
521
536
[[ ! -z ${WORKLOAD_BASIS+x} ]] && let workloads_count=$workloads_count +1
522
537
[[ ! -z ${WORKLOAD_REAL+x} ]] && let workloads_count=$workloads_count +1
523
538
[[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && let workloads_count=$workloads_count +1
539
+ [[ ! -z ${WORKLOAD_PGBENCH+x} ]] && let workloads_count=$workloads_count +1
524
540
525
- if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] && [[ -z ${DB_EBS_VOLUME_ID+x} ]]; then
541
+ if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] && [[ -z ${DB_PGBENCH+x} ]] && [[ -z ${DB_EBS_VOLUME_ID+x} ]]; then
526
542
err " ERROR: The object (database) is not defined."
527
543
exit 1
528
544
fi
@@ -987,6 +1003,8 @@ while [ $# -gt 0 ]; do
987
1003
DB_PREPARED_SNAPSHOT=" $2 " ; shift 2 ;;
988
1004
--db-dump )
989
1005
DB_DUMP=" $2 " ; shift 2 ;;
1006
+ --db-pgbench )
1007
+ DB_PGBENCH=" $2 " ; shift 2 ;;
990
1008
--db-name )
991
1009
DB_NAME=" $2 " ; shift 2 ;;
992
1010
--commands-after-container-init )
@@ -1000,6 +1018,9 @@ while [ $# -gt 0 ]; do
1000
1018
--workload-custom-sql )
1001
1019
# s3 url|filename|content
1002
1020
WORKLOAD_CUSTOM_SQL=" $2 " ; shift 2 ;;
1021
+ --workload-pgbench )
1022
+ # s3 url|filename|content
1023
+ WORKLOAD_PGBENCH=" $2 " ; shift 2 ;;
1003
1024
--workload-real )
1004
1025
# s3 url
1005
1026
WORKLOAD_REAL=" $2 " ; shift 2 ;;
@@ -1303,20 +1324,24 @@ function apply_sql_before_db_restore() {
1303
1324
function restore_dump() {
1304
1325
OP_START_TIME=$( date +%s)
1305
1326
msg " Restore database dump"
1306
- case " $DB_DUMP_EXT " in
1307
- sql)
1308
- docker_exec bash -c " cat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1309
- ;;
1310
- bz2)
1311
- docker_exec bash -c " bzcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1312
- ;;
1313
- gz)
1314
- docker_exec bash -c " zcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1315
- ;;
1316
- pgdmp)
1317
- docker_exec bash -c " pg_restore -j $CPU_CNT --no-owner --no-privileges -U postgres -d $DB_NAME $MACHINE_HOME /$DB_DUMP_FILENAME " || true
1318
- ;;
1319
- esac
1327
+ if ([ ! -z ${DB_PGBENCH+x} ]); then
1328
+ docker_exec bash -c " pgbench -i $DB_PGBENCH -U postgres $DB_NAME " || true
1329
+ else
1330
+ case " $DB_DUMP_EXT " in
1331
+ sql)
1332
+ docker_exec bash -c " cat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1333
+ ;;
1334
+ bz2)
1335
+ docker_exec bash -c " bzcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1336
+ ;;
1337
+ gz)
1338
+ docker_exec bash -c " zcat $MACHINE_HOME /$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres $DB_NAME $VERBOSE_OUTPUT_REDIRECT "
1339
+ ;;
1340
+ pgdmp)
1341
+ docker_exec bash -c " pg_restore -j $CPU_CNT --no-owner --no-privileges -U postgres -d $DB_NAME $MACHINE_HOME /$DB_DUMP_FILENAME " || true
1342
+ ;;
1343
+ esac
1344
+ fi
1320
1345
END_TIME=$( date +%s)
1321
1346
DURATION=$( echo $(( END_TIME- OP_START_TIME)) | awk ' {printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}' )
1322
1347
msg " Time taken to restore database: $DURATION ."
@@ -1490,6 +1515,8 @@ function execute_workload() {
1490
1515
else
1491
1516
docker_exec bash -c " pgreplay -r -j $MACHINE_HOME /$WORKLOAD_FILE_NAME "
1492
1517
fi
1518
+ elif [ ! -z ${WORKLOAD_PGBENCH+x} ]; then
1519
+ docker_exec bash -c " pgbench $WORKLOAD_PGBENCH -U postgres $DB_NAME "
1493
1520
else
1494
1521
if ([ ! -z ${WORKLOAD_CUSTOM_SQL+x} ] && [ " $WORKLOAD_CUSTOM_SQL " != " " ]); then
1495
1522
WORKLOAD_CUSTOM_FILENAME=$( basename $WORKLOAD_CUSTOM_SQL )
0 commit comments