diff --git a/lib/PerconaTest.pm b/lib/PerconaTest.pm index fbde2649..5d41d08f 100644 --- a/lib/PerconaTest.pm +++ b/lib/PerconaTest.pm @@ -222,7 +222,7 @@ sub parse_file { # Wait until code returns true. sub wait_until { my ( $code, $t, $max_t ) = @_; - $t ||= .25; + $t ||= .20; $max_t ||= 5; my $slept = 0; @@ -306,6 +306,19 @@ sub wait_for_sh { ); }; +sub not_running { + my ($cmd) = @_; + PTDEVDEBUG && _d('Wait until not running:', $cmd); + return wait_until( + sub { + my $output = `ps x | grep -v grep | grep "$cmd"`; + PTDEVDEBUG && _d($output); + return 1 unless $output; + return 0; + } + ); +} + sub _read { my ( $fh ) = @_; return <$fh>; diff --git a/t/pt-stalk/pt-stalk.t b/t/pt-stalk/pt-stalk.t index fc1004c6..a677d961 100644 --- a/t/pt-stalk/pt-stalk.t +++ b/t/pt-stalk/pt-stalk.t @@ -155,10 +155,8 @@ is( "Collect ran for --run-time" ); -$output = `ps x | grep -v grep | grep 'pt-stalk --iterations 1'`; -is( - $output, - "", +ok( + PerconaTest::not_running("pt-stalk --iterations 1"), "pt-stalk is not running" ); @@ -202,10 +200,8 @@ ok( "No files collected" ); -$output = `ps x | grep -v grep | grep 'pt-stalk --no-collect'`; -is( - $output, - "", +ok( + PerconaTest::not_running("pt-stalk --no-collect"), "pt-stalk is not running" ); @@ -280,10 +276,8 @@ is( "Not stalking, collect gathered data" ); -$output = `ps x | grep -v grep | grep 'pt-stalk --no-stalk'`; -is( - $output, - "", +ok( + PerconaTest::not_running("pt-stalk --no-stalk"), "Not stalking, pt-stalk is not running" );