Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite988878

Browse files
committed
Fix pgbench TAP test failure with funky file names (redux)
This test fails if the containing directory contains a funny charactersuch as a space or some perl metacharacter. To avoid that, we check forfiles names using readdir and a regex, rather than using a glob pattern.Discussion:https://postgr.es/m/CAM6_UM6dGdU39PKAC24T+HD9ouy0jLN9vH6163K8QEEzr__iZw@mail.gmail.comAuthor: Fabien COELHOReviewed-by: Raúl Marín Rodríguez
1 parent9b1384d commite988878

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

‎src/bin/pgbench/t/001_pgbench_with_server.pl

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,19 @@
1010
$node->init;
1111
$node->start;
1212

13-
# invoke pgbench
13+
# invoke pgbench, with parameters:
14+
# $opts: options as a string to be split on spaces
15+
# $stat: expected exit status
16+
# $out: reference to a regexp list that must match stdout
17+
# $err: reference to a regexp list that must match stderr
18+
# $name: name of test for error messages
19+
# $files: reference to filename/contents dictionnary
20+
# @args: further raw options or arguments
1421
subpgbench
1522
{
1623
local$Test::Builder::Level =$Test::Builder::Level + 1;
1724

18-
my ($opts,$stat,$out,$err,$name,$files) =@_;
25+
my ($opts,$stat,$out,$err,$name,$files,@args) =@_;
1926
my@cmd = ('pgbench',split /\s+/,$opts);
2027
my@filenames = ();
2128
if (defined$files)
@@ -40,6 +47,9 @@ sub pgbench
4047
append_to_file($filename,$$files{$fn});
4148
}
4249
}
50+
51+
push@cmd,@args;
52+
4353
$node->command_checks_all(\@cmd,$stat,$out,$err,$name);
4454

4555
# cleanup?
@@ -868,20 +878,32 @@ sub pgbench
868878
qr{type: .*/001_pgbench_sleep},
869879
qr{above the 1.0 ms latency limit: [01]/}
870880
],
871-
[qr{^$}i],
881+
[qr{^$}],
872882
'pgbench late throttling',
873883
{'001_pgbench_sleep'=>q{\sleep 2ms} });
874884

885+
# return a list of files from directory $dir matching regexpr $re
886+
# this works around glob portability and escaping issues
887+
sublist_files
888+
{
889+
my ($dir,$re) =@_;
890+
opendirmy$dh,$dirordie"cannot opendir$dir:$!";
891+
my@files =grep /$re/,readdir$dh;
892+
closedir$dhordie"cannot closedir$dir:$!";
893+
returnmap {$dir .'/' .$_ }@files;
894+
}
895+
875896
# check log contents and cleanup
876897
subcheck_pgbench_logs
877898
{
878899
local$Test::Builder::Level =$Test::Builder::Level + 1;
879900

880-
my ($prefix,$nb,$min,$max,$re) =@_;
901+
my ($dir,$prefix,$nb,$min,$max,$re) =@_;
881902

882-
my@logs =glob"$prefix.*";
903+
# $prefix is simple enough, thus does not need escaping
904+
my@logs = list_files($dir,qr{^$prefix\..*$});
883905
ok(@logs ==$nb,"number of log files");
884-
ok(grep(/^$prefix\.\d+(\.\d+)?$/,@logs) ==$nb,"file name format");
906+
ok(grep(/\/$prefix\.\d+(\.\d+)?$/,@logs) ==$nb,"file name format");
885907

886908
my$log_number = 0;
887909
formy$log (sort@logs)
@@ -905,22 +927,25 @@ sub check_pgbench_logs
905927

906928
# with sampling rate
907929
pgbench(
908-
"-n -S -t 50 -c 2 --log --log-prefix=$bdir/001_pgbench_log_2 --sampling-rate=0.5",
930+
"-n -S -t 50 -c 2 --log --sampling-rate=0.5",
909931
0,
910932
[qr{select only},qr{processed: 100/100} ],
911-
[qr{^$}],
912-
'pgbench logs');
933+
[qr{^$} ],
934+
'pgbench logs',
935+
undef,
936+
"--log-prefix=$bdir/001_pgbench_log_2");
913937

914-
check_pgbench_logs("$bdir/001_pgbench_log_2", 1, 8, 92,
938+
check_pgbench_logs($bdir,'001_pgbench_log_2', 1, 8, 92,
915939
qr{^0\d{1,2}\d+\d\d+\d+$});
916940

917941
# check log file in some detail
918942
pgbench(
919-
"-n -b se -t 10 -l --log-prefix=$bdir/001_pgbench_log_3",
920-
0, [qr{select only},qr{processed: 10/10} ],
921-
[qr{^$}],'pgbench logs contents');
943+
"-n -b se -t 10 -l",
944+
0, [qr{select only},qr{processed: 10/10} ], [qr{^$} ],
945+
'pgbench logs contents',undef,
946+
"--log-prefix=$bdir/001_pgbench_log_3");
922947

923-
check_pgbench_logs("$bdir/001_pgbench_log_3", 1, 10, 10,
948+
check_pgbench_logs($bdir,'001_pgbench_log_3', 1, 10, 10,
924949
qr{^\d\d{1,2}\d+\d\d+\d+$});
925950

926951
# done

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp