The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
BEGIN {
    unless ( $ENV{RIAK_PBC_HOST} ) {
        require Test::More;
        Test::More::plan(
            skip_all => 'variable RIAK_PBC_HOST is not defined' );
    }
}

package main;

use Test::More tests => 3;
use Test::LeakTrace;
use Riak::Light;

no_leaks_ok {

    my ( $host, $port ) = split ':', $ENV{RIAK_PBC_HOST};

    my $client = Riak::Light->new(
        host             => $host, port => $port,
        timeout_provider => undef
    );

    $client->put( foo => bar => { my => 666 } );
    $client->get( foo => 'bar' );
    $client->del( foo => 'bar' );
}
' should be ok for no timeout_provider';

my ( $host, $port ) = split ':', $ENV{RIAK_PBC_HOST};

my $client = Riak::Light->new(
    host             => $host, port => $port,
    timeout_provider => 'Riak::Light::Timeout::Select'
);

no_leaks_ok {
    for ( 1 .. 2 ) {
        $client->put( foo => bar => { my => 666 } );
        $client->get( foo => 'bar' );
        $client->del( foo => 'bar' );
    }
}
' should be ok for setsockopt timeout_provider';

leaktrace {

    $client->put( foo => bar => { my => 666 } );
    $client->get( foo => 'bar' );
    $client->del( foo => 'bar' );
};
no_leaks_ok {

    my $client2 = Riak::Light->new(
        host             => $host, port => $port,
        timeout_provider => 'Riak::Light::Timeout::Select'
    );
    $client2->put( foo => bar => { my => 666 } );
    $client2->get( foo => 'bar' );
    $client2->del( foo => 'bar' );
}
' should be ok for setsockopt timeout_provider';