v5-0002-Move-common-connection-log-content-verification-c_PG14.patch
text/x-patch
Filename: v5-0002-Move-common-connection-log-content-verification-c_PG14.patch
Type: text/x-patch
Part: 6
Patch
Format: format-patch
Series: patch v5-0002
Subject: Move common connection log content verification code to a common function.
| File | + | − |
|---|---|---|
| src/test/perl/PostgresNode.pm | 65 | 52 |
From 16cabb908af170b90cf971f7e47a69712aa2720e Mon Sep 17 00:00:00 2001
From: Vignesh C <vignesh21@gmail.com>
Date: Tue, 6 Jun 2023 16:51:56 +0530
Subject: [PATCH v5 2/2] Move common connection log content verification code
to a common function.
Move common connection log content verification code to a common
function.
---
src/test/perl/PostgresNode.pm | 117 +++++++++++++++++++---------------
1 file changed, 65 insertions(+), 52 deletions(-)
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index b48bf17a40..22baa4cf80 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -2148,15 +2148,9 @@ If this regular expression is set, matches it with the output generated.
=item log_like => [ qr/required message/ ]
-If given, it must be an array reference containing a list of regular
-expressions that must match against the server log, using
-C<Test::More::like()>.
-
=item log_unlike => [ qr/prohibited message/ ]
-If given, it must be an array reference containing a list of regular
-expressions that must NOT match against the server log. They will be
-passed to C<Test::More::unlike()>.
+See C<log_check(...)>.
=back
@@ -2177,16 +2171,6 @@ sub connect_ok
$sql = "SELECT \$\$connected with $connstr\$\$";
}
- my (@log_like, @log_unlike);
- if (defined($params{log_like}))
- {
- @log_like = @{ $params{log_like} };
- }
- if (defined($params{log_unlike}))
- {
- @log_unlike = @{ $params{log_unlike} };
- }
-
my $log_location = -s $self->logfile;
# Never prompt for a password, any callers of this routine should
@@ -2204,19 +2188,7 @@ sub connect_ok
{
like($stdout, $params{expected_stdout}, "$test_name: matches");
}
- if (@log_like or @log_unlike)
- {
- my $log_contents = TestLib::slurp_file($self->logfile, $log_location);
-
- while (my $regex = shift @log_like)
- {
- like($log_contents, $regex, "$test_name: log matches");
- }
- while (my $regex = shift @log_unlike)
- {
- unlike($log_contents, $regex, "$test_name: log does not match");
- }
- }
+ $self->log_check($test_name, $log_location, %params);
}
=pod
@@ -2236,7 +2208,7 @@ If this regular expression is set, matches it with the output generated.
=item log_unlike => [ qr/prohibited message/ ]
-See C<connect_ok(...)>, above.
+See C<log_check(...)>.
=back
@@ -2248,14 +2220,6 @@ sub connect_fails
my ($self, $connstr, $test_name, %params) = @_;
my (@log_like, @log_unlike);
- if (defined($params{log_like}))
- {
- @log_like = @{ $params{log_like} };
- }
- if (defined($params{log_unlike}))
- {
- @log_unlike = @{ $params{log_unlike} };
- }
my $log_location = -s $self->logfile;
@@ -2274,19 +2238,7 @@ sub connect_fails
like($stderr, $params{expected_stderr}, "$test_name: matches");
}
- if (@log_like or @log_unlike)
- {
- my $log_contents = TestLib::slurp_file($self->logfile, $log_location);
-
- while (my $regex = shift @log_like)
- {
- like($log_contents, $regex, "$test_name: log matches");
- }
- while (my $regex = shift @log_unlike)
- {
- unlike($log_contents, $regex, "$test_name: log does not match");
- }
- }
+ $self->log_check($test_name, $log_location, %params);
}
=pod
@@ -2459,6 +2411,67 @@ sub issues_sql_like
=pod
+=item $node->log_check($offset, $test_name, %parameters)
+
+Check contents of server logs.
+
+=over
+
+=item $test_name
+
+Name of test for error messages.
+
+=item $offset
+
+Offset of the log file.
+
+=item log_like => [ qr/required message/ ]
+
+If given, it must be an array reference containing a list of regular
+expressions that must match against the server log, using
+C<Test::More::like()>.
+
+=item log_unlike => [ qr/prohibited message/ ]
+
+If given, it must be an array reference containing a list of regular
+expressions that must NOT match against the server log. They will be
+passed to C<Test::More::unlike()>.
+
+=back
+
+=cut
+
+sub log_check
+{
+ my ($self, $test_name, $offset, %params) = @_;
+
+ my (@log_like, @log_unlike);
+ if (defined($params{log_like}))
+ {
+ @log_like = @{ $params{log_like} };
+ }
+ if (defined($params{log_unlike}))
+ {
+ @log_unlike = @{ $params{log_unlike} };
+ }
+
+ if (@log_like or @log_unlike)
+ {
+ my $log_contents = TestLib::slurp_file($self->logfile, $offset);
+
+ while (my $regex = shift @log_like)
+ {
+ like($log_contents, $regex, "$test_name: log matches");
+ }
+ while (my $regex = shift @log_unlike)
+ {
+ unlike($log_contents, $regex, "$test_name: log does not match");
+ }
+ }
+}
+
+=pod
+
=item $node->log_contains(pattern, offset)
Find pattern in logfile of node after offset byte.
--
2.34.1