Skip to content

Commit

Permalink
log all mtr output in vardir/log/stdout.log
Browse files Browse the repository at this point in the history
despite the name, it logs both stdout and stderr
  • Loading branch information
vuvova committed Feb 21, 2018
1 parent 5035971 commit 5d8ac1e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
12 changes: 8 additions & 4 deletions mysql-test/lib/My/SafeProcess/Base.pm
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,10 @@ sub create_process {
# it and any childs(that hasn't changed group themself)
setpgrp(0,0) if $opts{setpgrp};

if ( $output and !open(STDOUT, $open_mode, $output) ) {
croak("can't redirect STDOUT to '$output': $!");
if ( $output ) {
close STDOUT;
open(STDOUT, $open_mode, $output)
or croak "can't redirect STDOUT to '$output': $!";
}

if ( $error ) {
Expand All @@ -196,8 +198,10 @@ sub create_process {
croak("can't dup STDOUT: $!");
}
}
elsif ( ! open(STDERR, $open_mode, $error) ) {
croak("can't redirect STDERR to '$error': $!");
else {
close STDERR;
open(STDERR, $open_mode, $error)
or croak "can't redirect STDERR to '$error': $!";
}
}

Expand Down
23 changes: 23 additions & 0 deletions mysql-test/lib/My/Tee.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package My::Tee;

# see PerlIO::via

our $copyfh;

sub PUSHED
{
open($copyfh, '>', "$::opt_vardir/log/stdout.log")
or die "open(>$::opt_vardir/log/stdout.log): $!"
unless $copyfh;
bless { }, shift;
}

sub WRITE
{
my ($obj, $buf, $fh) = @_;
print $fh $buf;
print $copyfh $buf;
return length($buf);
}

1;
9 changes: 8 additions & 1 deletion mysql-test/mysql-test-run.pl
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ BEGIN
use My::SafeProcess;
use My::ConfigFactory;
use My::Options;
use My::Tee;
use My::Find;
use My::SysInfo;
use My::CoreDump;
Expand Down Expand Up @@ -392,6 +393,11 @@ sub main {
initialize_servers();
init_timers();

unless (IS_WINDOWS) {
binmode(STDOUT,":via(My::Tee)") or die "binmode(STDOUT, :via(My::Tee)):$!";
binmode(STDERR,":via(My::Tee)") or die "binmode(STDERR, :via(My::Tee)):$!";
}

mtr_report("Checking supported features...");

executable_setup();
Expand Down Expand Up @@ -6280,7 +6286,8 @@ sub xterm_stat {
my $done = $num_tests - $left;
my $spent = time - $^T;

printf "\e];mtr: spent %s on %d tests. %s (%d tests) left\a",
syswrite STDOUT, sprintf
"\e];mtr: spent %s on %d tests. %s (%d tests) left\a",
time_format($spent), $done,
time_format($spent/$done * $left), $left;
}
Expand Down

0 comments on commit 5d8ac1e

Please sign in to comment.