EV-Redis

 view release on metacpan or  search on metacpan

t/options.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Test::RedisServer;

use EV;
use EV::Redis;
use lib 't/lib';
use RedisTestHelper qw(get_redis_version);

my $redis_server;
eval {
    $redis_server = Test::RedisServer->new;
} or plan skip_all => 'redis-server is required to this test';

my %connect_info = $redis_server->connect_info;

# --- keepalive ---

{
    my $r = EV::Redis->new;
    is $r->keepalive, 0, 'keepalive default is 0';
    $r->keepalive(15);
    is $r->keepalive, 15, 'keepalive setter/getter roundtrip';
    $r->keepalive(0);
    is $r->keepalive, 0, 'keepalive can be disabled';
}

{
    my $r = EV::Redis->new(keepalive => 30);
    is $r->keepalive, 30, 'keepalive via constructor';
}

{
    eval { EV::Redis->new->keepalive(-1) };
    like $@, qr/non-negative/, 'keepalive rejects negative';

    eval { EV::Redis->new->keepalive(2_000_001) };
    like $@, qr/too large/, 'keepalive rejects too large';
}

# keepalive set while connected
{
    my $r = EV::Redis->new(
        path     => $connect_info{sock},
        on_error => sub { },
    );
    my $t; $t = EV::timer 0.1, 0, sub {
        undef $t;
        $r->keepalive(10);
        is $r->keepalive, 10, 'keepalive set while connected';
        $r->disconnect;
    };
    EV::run;
}

# --- prefer_ipv4 / prefer_ipv6 ---

{
    my $r = EV::Redis->new;
    is $r->prefer_ipv4, 0, 'prefer_ipv4 default is 0';
    is $r->prefer_ipv6, 0, 'prefer_ipv6 default is 0';

    $r->prefer_ipv4(1);
    is $r->prefer_ipv4, 1, 'prefer_ipv4 set to 1';
    is $r->prefer_ipv6, 0, 'prefer_ipv6 cleared when ipv4 set';

    $r->prefer_ipv6(1);
    is $r->prefer_ipv6, 1, 'prefer_ipv6 set to 1';
    is $r->prefer_ipv4, 0, 'prefer_ipv4 cleared when ipv6 set';

    $r->prefer_ipv6(0);
    is $r->prefer_ipv6, 0, 'prefer_ipv6 cleared';
    is $r->prefer_ipv4, 0, 'prefer_ipv4 still 0';
}

{
    my $r = EV::Redis->new(prefer_ipv4 => 1);
    is $r->prefer_ipv4, 1, 'prefer_ipv4 via constructor';
    is $r->prefer_ipv6, 0, 'prefer_ipv6 not set';
}

{
    my $r = EV::Redis->new(prefer_ipv6 => 1);
    is $r->prefer_ipv6, 1, 'prefer_ipv6 via constructor';
    is $r->prefer_ipv4, 0, 'prefer_ipv4 not set';
}

# --- source_addr ---

{
    my $r = EV::Redis->new;
    ok !defined $r->source_addr, 'source_addr default is undef';

    $r->source_addr('192.168.1.1');
    is $r->source_addr, '192.168.1.1', 'source_addr setter/getter roundtrip';

    $r->source_addr('10.0.0.1');
    is $r->source_addr, '10.0.0.1', 'source_addr can be changed';

    $r->source_addr(undef);
    ok !defined $r->source_addr, 'source_addr cleared with undef';
}

{
    my $r = EV::Redis->new(source_addr => '127.0.0.1');
    is $r->source_addr, '127.0.0.1', 'source_addr via constructor';
}

# --- tcp_user_timeout ---



( run in 1.313 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )