96
96
fi
97
97
98
98
function checkPath() {
99
- if [ ! -v $1 ]
99
+ if [ -z $1 ]
100
100
then
101
101
return 1
102
102
fi
@@ -108,6 +108,7 @@ function checkPath() {
108
108
if [[ $path =~ " file:///" ]]
109
109
then
110
110
path=${path/ file: \/\/ / }
111
+ echo " CHECK $path "
111
112
if [ -f $path ]
112
113
then
113
114
eval " $1 =\" $path \" " # update original variable
@@ -138,43 +139,43 @@ function checkParams() {
138
139
exit 1
139
140
fi
140
141
if [ " $RUN_ON " = " aws" ]; then
141
- if [ ! -v AWS_KEY_PAIR ] || [ ! -v AWS_KEY_PATH ]
142
+ if [ -z ${ AWS_KEY_PAIR+x} ] || [ -z ${ AWS_KEY_PATH+x} ]
142
143
then
143
144
>&2 echo " ERROR: AWS keys not given."
144
145
exit 1
145
146
fi
146
147
147
- if [ ! -v AWS_EC2_TYPE ]
148
+ if [ -z ${ AWS_EC2_TYPE+x} ]
148
149
then
149
150
>&2 echo " ERROR: AWS EC2 Instance type not given."
150
151
exit 1
151
152
fi
152
153
fi
153
154
154
- if [ ! -v PG_VERSION ]
155
+ if [ -z ${ PG_VERSION+x} ]
155
156
then
156
157
>&2 echo " WARNING: Postgres version not given. Will use 9.6."
157
158
PG_VERSION=" 9.6"
158
159
fi
159
160
160
- if [ ! -v TMP_PATH ]
161
+ if [ -z ${ TMP_PATH+x} ]
161
162
then
162
163
TMP_PATH=" /var/tmp/nancy_run"
163
164
>&2 echo " WARNING: Temp path not given. Will use $TMP_PATH "
164
165
fi
165
166
# make tmp path if not found
166
167
[ ! -d $TMP_PATH ] && mkdir $TMP_PATH
167
168
168
- if [ ! -v S3_CFG_PATH ]
169
+ if [ -z ${ S3_CFG_PATH+x} ]
169
170
then
170
171
>&2 echo " WARNING: S3 config file path not given. Will use ~/.s3cfg"
171
172
S3_CFG_PATH=$( echo ~ ) " /.s3cfg"
172
173
fi
173
174
174
175
workloads_count=0
175
- [ -v WORKLOAD_BASIS_PATH ] && let workloads_count=$workloads_count +1
176
- [ -v WORKLOAD_FULL_PATH ] && let workloads_count=$workloads_count +1
177
- [ -v WORKLOAD_CUSTOM_SQL ] && let workloads_count=$workloads_count +1
176
+ [ ! -z ${ WORKLOAD_BASIS_PATH+x} ] && let workloads_count=$workloads_count +1
177
+ [ ! -z ${ WORKLOAD_FULL_PATH+x} ] && let workloads_count=$workloads_count +1
178
+ [ ! -z ${ WORKLOAD_CUSTOM_SQL+x} ] && let workloads_count=$workloads_count +1
178
179
179
180
# --workload-full-path or --workload-basis-path or --workload-custom-sql
180
181
if [ " $workloads_count " -eq " 0" ]
@@ -190,45 +191,52 @@ function checkParams() {
190
191
fi
191
192
192
193
# --db-prepared-snapshot or --db-dump-path
193
- if ([ ! -v DB_PREPARED_SNAPSHOT ] && [ ! -v DB_DUMP_PATH ])
194
+ if ([ -z ${ DB_PREPARED_SNAPSHOT+x} ] && [ -z ${ DB_DUMP_PATH+x} ])
194
195
then
195
196
>&2 echo " ERROR: Snapshot or dump not given."
196
197
exit 1;
197
198
fi
198
199
199
- if ([ -v DB_PREPARED_SNAPSHOT ] && [ -v DB_DUMP_PATH ])
200
+ if ([ ! -z ${ DB_PREPARED_SNAPSHOT+x} ] && [ ! -z ${ DB_DUMP_PATH+x} ])
200
201
then
201
202
>&2 echo " ERROR: Both snapshot and dump sources given."
202
203
exit 1
203
204
fi
204
205
205
- [ -v DB_DUMP_PATH ] && ! checkPath DB_DUMP_PATH && >&2 echo " ERROR: file $DB_DUMP_PATH given by db_dump_path not found" && exit 1
206
+ if [ ! -z ${DB_DUMP_PATH+x} ]
207
+ then
208
+ echo " DB_DUMP_PATH found"
209
+ else
210
+ echo " DB_DUMP_PATH NOT found"
211
+ fi
212
+
213
+ [ ! -z ${DB_DUMP_PATH+x} ] && ! checkPath DB_DUMP_PATH && >&2 echo " ERROR: file $DB_DUMP_PATH given by db_dump_path not found" && exit 1
206
214
207
- if (( [ ! - v TARGET_DDL_UNDO ] && [ - v TARGET_DDL_DO ]) || ([ ! - v TARGET_DDL_DO ] && [ - v TARGET_DDL_UNDO ]))
215
+ if (( [ - z ${ TARGET_DDL_UNDO+x} ] && [ ! - z ${ TARGET_DDL_DO+x} ]) || ([ - z ${ TARGET_DDL_DO+x} ] && [ ! - z ${ TARGET_DDL_UNDO+x} ]))
208
216
then
209
217
>&2 echo " ERROR: DDL code must have do and undo part."
210
218
exit 1;
211
219
fi
212
220
213
- if [ ! -v ARTIFACTS_DESTINATION ]
221
+ if [ -z ${ ARTIFACTS_DESTINATION+x} ]
214
222
then
215
223
>&2 echo " WARNING: Artifacts destination not given. Will use ./"
216
224
ARTIFACTS_DESTINATION=" ."
217
225
fi
218
226
219
- if [ ! -v ARTIFACTS_FILENAME ]
227
+ if [ -z ${ ARTIFACTS_FILENAME+x} ]
220
228
then
221
229
>&2 echo " WARNING: Artifacts destination not given. Will use $DOCKER_MACHINE "
222
230
ARTIFACTS_FILENAME=$DOCKER_MACHINE
223
231
fi
224
232
225
- [ -v WORKLOAD_FULL_PATH ] && ! checkPath WORKLOAD_FULL_PATH && >&2 echo " ERROR: file $WORKLOAD_FULL_PATH given by workload_full_path not found" && exit 1
233
+ [ ! -z ${ WORKLOAD_FULL_PATH+x} ] && ! checkPath WORKLOAD_FULL_PATH && >&2 echo " ERROR: file $WORKLOAD_FULL_PATH given by workload_full_path not found" && exit 1
226
234
227
235
echo " WORKLOAD_FULL_PATH: $WORKLOAD_FULL_PATH "
228
236
229
- [ -v WORKLOAD_BASIS_PATH ] && ! checkPath WORKLOAD_BASIS_PATH && >&2 echo " WARNING: file $WORKLOAD_BASIS_PATH given by workload_basis_path not found"
237
+ [ ! -z ${ WORKLOAD_BASIS_PATH+x} ] && ! checkPath WORKLOAD_BASIS_PATH && >&2 echo " WARNING: file $WORKLOAD_BASIS_PATH given by workload_basis_path not found"
230
238
231
- if [ -v WORKLOAD_CUSTOM_SQL ]
239
+ if [ ! -z ${ WORKLOAD_CUSTOM_SQL+x} ]
232
240
then
233
241
checkPath WORKLOAD_CUSTOM_SQL
234
242
if [ " $? " -ne " 0" ]
@@ -241,7 +249,7 @@ function checkParams() {
241
249
fi
242
250
fi
243
251
244
- if [ -v AFTER_DB_INIT_CODE ]
252
+ if [ ! -z ${ AFTER_DB_INIT_CODE+x} ]
245
253
then
246
254
checkPath AFTER_DB_INIT_CODE
247
255
if [ " $? " -ne " 0" ]
@@ -254,7 +262,7 @@ function checkParams() {
254
262
fi
255
263
fi
256
264
257
- if [ -v TARGET_DDL_DO ]
265
+ if [ ! -z ${ TARGET_DDL_DO+x} ]
258
266
then
259
267
checkPath TARGET_DDL_DO
260
268
if [ " $? " -ne " 0" ]
@@ -267,7 +275,7 @@ function checkParams() {
267
275
fi
268
276
fi
269
277
270
- if [ -v TARGET_DDL_UNDO ]
278
+ if [ ! -z ${ TARGET_DDL_UNDO} ]
271
279
then
272
280
checkPath TARGET_DDL_UNDO
273
281
if [ " $? " -ne " 0" ]
@@ -280,7 +288,7 @@ function checkParams() {
280
288
fi
281
289
fi
282
290
283
- if [ -v TARGET_CONFIG ]
291
+ if [ ! -z ${ TARGET_CONFIG+x} ]
284
292
then
285
293
checkPath TARGET_CONFIG
286
294
if [ " $? " -ne " 0" ]
@@ -429,14 +437,14 @@ function copyFile() {
429
437
fi
430
438
}
431
439
432
- [ -v S3_CFG_PATH ] && copyFile $S3_CFG_PATH && docker_exec cp /machine_home/.s3cfg /root/.s3cfg
440
+ [ ! -z ${ S3_CFG_PATH+x} ] && copyFile $S3_CFG_PATH && docker_exec cp /machine_home/.s3cfg /root/.s3cfg
433
441
434
- [ -v DB_DUMP_PATH ] && copyFile $DB_DUMP_PATH
435
- [ -v TARGET_CONFIG ] && copyFile $TARGET_CONFIG
436
- [ -v TARGET_DDL_DO ] && copyFile $TARGET_DDL_DO
437
- [ -v TARGET_DDL_UNDO ] && copyFile $TARGET_DDL_UNDO
438
- [ -v WORKLOAD_CUSTOM_SQL ] && copyFile $WORKLOAD_CUSTOM_SQL
439
- [ -v WORKLOAD_FULL_PATH ] && copyFile $WORKLOAD_FULL_PATH
442
+ [ ! -z ${ DB_DUMP_PATH+x} ] && copyFile $DB_DUMP_PATH
443
+ [ ! -z ${ TARGET_CONFIG+x} ] && copyFile $TARGET_CONFIG
444
+ [ ! -z ${ TARGET_DDL_DO+x} ] && copyFile $TARGET_DDL_DO
445
+ [ ! -z ${ TARGET_DDL_UNDO+x} ] && copyFile $TARGET_DDL_UNDO
446
+ [ ! -z ${ WORKLOAD_CUSTOM_SQL+x} ] && copyFile $WORKLOAD_CUSTOM_SQL
447
+ [ ! -z ${ WORKLOAD_FULL_PATH+x} ] && copyFile $WORKLOAD_FULL_PATH
440
448
441
449
# # Apply machine features
442
450
# Dump
@@ -445,7 +453,7 @@ DB_DUMP_FILENAME=$(basename $DB_DUMP_PATH)
445
453
docker_exec bash -c " bzcat /machine_home/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres test"
446
454
# After init database sql code apply
447
455
echo " Apply sql code after db init"
448
- if ([ -v AFTER_DB_INIT_CODE ] && [ " $AFTER_DB_INIT_CODE " != " " ])
456
+ if ([ ! -z ${ AFTER_DB_INIT_CODE+x} ] && [ " $AFTER_DB_INIT_CODE " != " " ])
449
457
then
450
458
AFTER_DB_INIT_CODE_FILENAME=$( basename $AFTER_DB_INIT_CODE )
451
459
if [[ $AFTER_DB_INIT_CODE =~ " s3://" ]]; then
@@ -457,13 +465,13 @@ then
457
465
fi
458
466
# Apply DDL code
459
467
echo " Apply DDL SQL code"
460
- if ([ -v TARGET_DDL_DO ] && [ " $TARGET_DDL_DO " != " " ]); then
468
+ if ([ ! -z ${ TARGET_DDL_DO+x} ] && [ " $TARGET_DDL_DO " != " " ]); then
461
469
TARGET_DDL_DO_FILENAME=$( basename $TARGET_DDL_DO )
462
470
docker_exec bash -c " psql -U postgres test -E -f /machine_home/$TARGET_DDL_DO_FILENAME "
463
471
fi
464
472
# Apply postgres configuration
465
473
echo " Apply postgres conf"
466
- if ([ -v TARGET_CONFIG ] && [ " $TARGET_CONFIG " != " " ]); then
474
+ if ([ ! -z ${ TARGET_CONFIG+x} ] && [ " $TARGET_CONFIG " != " " ]); then
467
475
TARGET_CONFIG_FILENAME=$( basename $TARGET_CONFIG )
468
476
docker_exec bash -c " cat /machine_home/$TARGET_CONFIG_FILENAME >> /etc/postgresql/$PG_VERSION /main/postgresql.conf"
469
477
docker_exec bash -c " sudo /etc/init.d/postgresql restart"
@@ -474,13 +482,13 @@ docker_exec vacuumdb -U postgres test -j $(cat /proc/cpuinfo | grep processor |
474
482
docker_exec bash -c " echo '' > /var/log/postgresql/postgresql-$PG_VERSION -main.log"
475
483
# Execute workload
476
484
echo " Execute workload..."
477
- if [ -v WORKLOAD_FULL_PATH ] && [ " $WORKLOAD_FULL_PATH " != ' ' ]; then
485
+ if [ ! -z ${ WORKLOAD_FULL_PATH+x} ] && [ " $WORKLOAD_FULL_PATH " != ' ' ]; then
478
486
echo " Execute pgreplay queries..."
479
487
docker_exec psql -U postgres test -c ' create role testuser superuser login;'
480
488
WORKLOAD_FILE_NAME=$( basename $WORKLOAD_FULL_PATH )
481
489
docker_exec bash -c " pgreplay -r -j /machine_home/$WORKLOAD_FILE_NAME "
482
490
else
483
- if ([ -v WORKLOAD_CUSTOM_SQL ] && [ " $WORKLOAD_CUSTOM_SQL " != " " ]); then
491
+ if ([ ! -z ${ WORKLOAD_CUSTOM_SQL+x} ] && [ " $WORKLOAD_CUSTOM_SQL " != " " ]); then
484
492
WORKLOAD_CUSTOM_FILENAME=$( basename $WORKLOAD_CUSTOM_SQL )
485
493
echo " Execute custom sql queries..."
486
494
docker_exec bash -c " psql -U postgres test -E -f /machine_home/$WORKLOAD_CUSTOM_FILENAME "
@@ -495,18 +503,24 @@ echo "Save JSON log..."
495
503
if [[ $ARTIFACTS_DESTINATION =~ " s3://" ]]; then
496
504
docker_exec s3cmd put /machine_home/$ARTIFACTS_FILENAME .json $ARTIFACTS_DESTINATION /
497
505
else
506
+ logpath=$( docker_exec bash -c " psql -XtU postgres \
507
+ -c \" select string_agg(setting, '/' order by name) from pg_settings where name in ('log_directory', 'log_filename');\" \
508
+ | grep / | sed -e 's/^[ \t]*//'" )
509
+ docker_exec bash -c " gzip -c $logpath > /machine_home/$ARTIFACTS_FILENAME .log.gz"
498
510
if [ " $RUN_ON " = " localhost" ]; then
499
511
cp " $TMP_PATH /pg_nancy_home_${CURRENT_TS} /" $ARTIFACTS_FILENAME .json $ARTIFACTS_DESTINATION /
512
+ cp " $TMP_PATH /pg_nancy_home_${CURRENT_TS} /" $ARTIFACTS_FILENAME .log.gz $ARTIFACTS_DESTINATION /
500
513
elif [ " $RUN_ON " = " aws" ]; then
501
514
docker-machine scp $DOCKER_MACHINE :/home/ubuntu/$ARTIFACTS_FILENAME .json $ARTIFACTS_DESTINATION /
515
+ docker-machine scp $DOCKER_MACHINE :/home/ubuntu/$ARTIFACTS_FILENAME .log.gz $ARTIFACTS_DESTINATION /
502
516
else
503
517
>&2 echo " ASSERT: must not reach this point"
504
518
exit 1
505
519
fi
506
520
fi
507
521
508
522
echo " Apply DDL undo SQL code"
509
- if ([ -v TARGET_DDL_UNDO ] && [ " $TARGET_DDL_UNDO " != " " ]); then
523
+ if ([ ! -z ${ TARGET_DDL_UNDO+x} ] && [ " $TARGET_DDL_UNDO " != " " ]); then
510
524
TARGET_DDL_UNDO_FILENAME=$( basename $TARGET_DDL_UNDO )
511
525
docker_exec bash -c " psql -U postgres test -E -f /machine_home/$TARGET_DDL_UNDO_FILENAME "
512
526
fi
0 commit comments