@@ -138,6 +138,12 @@ function help() {
138
138
- dump in \" custom\" format, made with 'pg_dump -Fc ..' ('*.pgdmp'),
139
139
* sequence of SQL commands specified as in a form of plain text.
140
140
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
+
141
147
\033[1m--commands-after-container-init\033[22m (string)
142
148
143
149
Shell commands to be executed after the container initialization. Can be used
@@ -168,6 +174,10 @@ function help() {
168
174
SQL queries to be used as workload. These queries will be executed in a signle
169
175
database session.
170
176
177
+ \033[1m--workload-pgbench\033[22m (string)
178
+
179
+ pgbench arguments to pass for tests. Ex: \" -c 10 -j 4 -t 1000\"
180
+
171
181
\033[1m--workload-basis\033[22m (string)
172
182
173
183
Reserved / Not yet implemented.
@@ -296,12 +306,14 @@ function dbg_cli_parameters() {
296
306
echo " DB_PREPARED_SNAPSHOT: ${DB_PREPARED_SNAPSHOT} "
297
307
echo " DB_DUMP: $DB_DUMP "
298
308
echo " DB_NAME: $DB_NAME "
309
+ echo " DB_PGBENCH: $DB_PGBENCH "
299
310
echo " COMMANDS_AFTER_CONTAINER_INIT: $COMMANDS_AFTER_CONTAINER_INIT "
300
311
echo " SQL_BEFORE_DB_RESTORE: $SQL_BEFORE_DB_RESTORE "
301
312
echo " SQL_AFTER_DB_RESTORE: $SQL_AFTER_DB_RESTORE "
302
313
echo " WORKLOAD_REAL: $WORKLOAD_REAL "
303
314
echo " WORKLOAD_BASIS: $WORKLOAD_BASIS "
304
315
echo " WORKLOAD_CUSTOM_SQL: $WORKLOAD_CUSTOM_SQL "
316
+ echo " WORKLOAD_PGBENCH: $WORKLOAD_PGBENCH "
305
317
echo " WORKLOAD_REAL_REPLAY_SPEED: $WORKLOAD_REAL_REPLAY_SPEED "
306
318
echo " DELTA_SQL_DO: $DELTA_SQL_DO "
307
319
echo " DELTA_SQL_UNDO: $DELTA_SQL_UNDO "
@@ -383,7 +395,9 @@ function check_cli_parameters() {
383
395
([[ ! -z ${WORKLOAD_REAL+x} ]] && [[ -z $WORKLOAD_REAL ]]) && unset -v WORKLOAD_REAL
384
396
([[ ! -z ${WORKLOAD_BASIS+x} ]] && [[ -z $WORKLOAD_BASIS ]]) && unset -v WORKLOAD_BASIS
385
397
([[ ! -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
386
399
([[ ! -z ${DB_DUMP+x} ]] && [[ -z $DB_DUMP ]]) && unset -v DB_DUMP
400
+ ([[ ! -z ${DB_PGBENCH+x} ]] && [[ -z $DB_PGBENCH ]]) && unset -v DB_PGBENCH
387
401
([[ ! -z ${COMMANDS_AFTER_CONTAINER_INIT+x} ]] && [[ -z $COMMANDS_AFTER_CONTAINER_INIT ]]) && unset -v COMMANDS_AFTER_CONTAINER_INIT
388
402
([[ ! -z ${SQL_BEFORE_DB_RESTORE+x} ]] && [[ -z $SQL_BEFORE_DB_RESTORE ]]) && unset -v SQL_BEFORE_DB_RESTORE
389
403
([[ ! -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() {
500
514
[[ ! -z ${WORKLOAD_BASIS+x} ]] && let workloads_count=$workloads_count +1
501
515
[[ ! -z ${WORKLOAD_REAL+x} ]] && let workloads_count=$workloads_count +1
502
516
[[ ! -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
506
519
err " ERROR: The object (database) is not defined."
507
520
exit 1
508
521
fi
@@ -957,6 +970,8 @@ while [ $# -gt 0 ]; do
957
970
DB_PREPARED_SNAPSHOT=" $2 " ; shift 2 ;;
958
971
--db-dump )
959
972
DB_DUMP=" $2 " ; shift 2 ;;
973
+ --db-pgbench )
974
+ DB_PGBENCH=" $2 " ; shift 2 ;;
960
975
--db-name )
961
976
DB_NAME=" $2 " ; shift 2 ;;
962
977
--commands-after-container-init )
@@ -970,6 +985,9 @@ while [ $# -gt 0 ]; do
970
985
--workload-custom-sql )
971
986
# s3 url|filename|content
972
987
WORKLOAD_CUSTOM_SQL=" $2 " ; shift 2 ;;
988
+ --workload-pgbench )
989
+ # s3 url|filename|content
990
+ WORKLOAD_PGBENCH=" $2 " ; shift 2 ;;
973
991
--workload-real )
974
992
# s3 url
975
993
WORKLOAD_REAL=" $2 " ; shift 2 ;;
@@ -1219,23 +1237,24 @@ function apply_sql_before_db_restore() {
1219
1237
function restore_dump() {
1220
1238
OP_START_TIME=$( date +%s)
1221
1239
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
1239
1258
END_TIME=$( date +%s)
1240
1259
DURATION=$( echo $(( END_TIME- OP_START_TIME)) | awk ' {printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}' )
1241
1260
msg " Time taken to restore database: $DURATION ."
@@ -1408,11 +1427,8 @@ function execute_workload() {
1408
1427
else
1409
1428
docker_exec bash -c " pgreplay -r -j $MACHINE_HOME /$WORKLOAD_FILE_NAME "
1410
1429
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 "
1416
1432
EOF
1417
1433
else
1418
1434
if ([ ! -z ${WORKLOAD_CUSTOM_SQL+x} ] && [ " $WORKLOAD_CUSTOM_SQL " != " " ]); then
0 commit comments