AnyEvent-RipeRedis
view release on metacpan or search on metacpan
t/tlib/Test/RedisRunner.pm view on Meta::CPAN
package Test::RedisRunner;
use strict;
use warnings;
our $VERSION = '0.1404';
use File::Temp;
use POSIX qw( SIGTERM WNOHANG );
use Time::HiRes qw( sleep );
use Carp;
use Errno ();
sub new {
my $class = shift;
my %params = @_;
my $self = bless {}, $class;
$self->{pid} = $params{pid};
$self->{conf} = $params{conf};
$self->{timeout} = $params{timeout} || 3;
$self->{auto_start} = 1;
if ( exists $params{auto_start} ) {
$self->{auto_start} = $params{auto_start};
}
unless ( defined $params{tmpdir} ) {
$params{tmpdir} = File::Temp->newdir( CLEANUP => 1 );
}
$self->{tmpdir} = $params{tmpdir};
$self->{_owner_pid} = $$;
my $tmpdir = $self->{tmpdir};
my $conf = $self->{conf};
unless ( defined $conf->{port} || defined $conf->{unixsocket} ) {
$conf->{unixsocket} = $tmpdir . '/redis.sock';
$conf->{port} = '0';
}
unless ( defined $conf->{dir} ) {
$conf->{dir} = "$tmpdir/";
}
if ( $conf->{loglevel} && $conf->{loglevel} eq 'warning' ) {
warn "Test::RedisRunner does not support \"loglevel warning\","
. " using \"notice\" instead.\n";
$conf->{loglevel} = 'notice';
}
if ( $self->{auto_start} ) {
$self->start();
}
return $self;
}
sub start {
my $self = shift;
return if defined $self->{pid};
my $tmpdir = $self->{tmpdir};
open( my $logfh, '>>', "$tmpdir/redis-server.log" )
or croak "failed to create log file: $tmpdir/redis-server.log";
( run in 2.299 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )