@log_unlike = @{ $params{log_unlike} };
}
- if (@log_like or @log_unlike)
- {
- # Don't let previous log entries match for this connection.
- # On Windows, the truncation would not work, so rotate the log
- # file before restarting the server afresh.
- if ($TestLib::windows_os)
- {
- $self->rotate_logfile;
- $self->restart;
- }
- else
- {
- truncate $self->logfile, 0;
- }
- }
+ my $log_location = -s $self->logfile;
# Never prompt for a password, any callers of this routine should
# have set up things properly, and this should not block.
}
if (@log_like or @log_unlike)
{
- my $log_contents = TestLib::slurp_file($self->logfile);
+ my $log_contents = TestLib::slurp_file($self->logfile,
+ $log_location);
while (my $regex = shift @log_like)
{
@log_unlike = @{ $params{log_unlike} };
}
- if (@log_like or @log_unlike)
- {
- # Don't let previous log entries match for this connection.
- # On Windows, the truncation would not work, so rotate the log
- # file before restarting the server afresh.
- if ($TestLib::windows_os)
- {
- $self->rotate_logfile;
- $self->restart;
- }
- else
- {
- truncate $self->logfile, 0;
- }
- }
+ my $log_location = -s $self->logfile;
# Never prompt for a password, any callers of this routine should
# have set up things properly, and this should not block.
if (@log_like or @log_unlike)
{
- my $log_contents = TestLib::slurp_file($self->logfile);
+ my $log_contents = TestLib::slurp_file($self->logfile,
+ $log_location);
while (my $regex = shift @log_like)
{
Run a command on the node, then verify that $expected_sql appears in the
server log file.
-Reads the whole log file so be careful when working with large log outputs.
-The log file is truncated prior to running the command, however.
-
=cut
sub issues_sql_like
local %ENV = $self->_get_env();
- truncate $self->logfile, 0;
+ my $log_location = -s $self->logfile;
+
my $result = TestLib::run_log($cmd);
ok($result, "@$cmd exit code 0");
- my $log = TestLib::slurp_file($self->logfile);
+ my $log = TestLib::slurp_file($self->logfile, $log_location);
like($log, $expected_sql, "$test_name: SQL found in server log");
return;
}
use Config;
use Cwd;
use Exporter 'import';
-use Fcntl qw(:mode);
+use Fcntl qw(:mode :seek);
use File::Basename;
use File::Find;
use File::Spec;
if ($windows_os)
{
require Win32API::File;
- Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle));
+ Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle setFilePointer));
}
# Specifies whether to use Unix sockets for test setups. On
=pod
-=item slurp_file(filename)
+=item slurp_file(filename [, $offset])
-Return the full contents of the specified file.
+Return the full contents of the specified file, beginning from an
+offset position if specified.
=cut
sub slurp_file
{
- my ($filename) = @_;
+ my ($filename, $offset) = @_;
local $/;
my $contents;
if ($Config{osname} ne 'MSWin32')
{
open(my $in, '<', $filename)
or croak "could not read \"$filename\": $!";
+ if (defined($offset))
+ {
+ seek($in, $offset, SEEK_SET)
+ or croak "could not seek \"$filename\": $!";
+ }
$contents = <$in>;
close $in;
}
or croak "could not open \"$filename\": $^E";
OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r')
or croak "could not read \"$filename\": $^E\n";
+ if (defined($offset))
+ {
+ setFilePointer($fh, $offset, qw(FILE_BEGIN))
+ or croak "could not seek \"$filename\": $^E\n";
+ }
$contents = <$fh>;
CloseHandle($fHandle)
or croak "could not close \"$filename\": $^E\n";