The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use strict;
use warnings;

use Test::More;

BEGIN {
    plan skip_all => "needs TEST_SERVER variable for server testing"
        unless $ENV{TEST_SERVER};
}

use_ok( "Redis::DistLock" );

my @hosts = qw( foo bar baz );
my @rds;

# connect multiple redis instances
for my $n ( 0 .. $#hosts ) {
    my $host = $hosts[ $n ];
    my $rd = Redis::DistLock->new(
        servers => [ split( m!,!, $ENV{TEST_SERVER} ) ],
    );

    $rds[ $n ] = $rd;
}

# take a random one to get a lock
my $pick = int rand $#rds;

my $lock = $rds[ $pick ]->lock( "foo", 1, $hosts[ $pick ] );

ok( $lock, "got a lock" );

for my $n ( grep $_ != $pick, 0 .. $#rds ) {
    ok( ! $rds[ $n ]->lock( "foo", 1, $hosts[ $n ] ), "already locked" );
}

$rds[ $pick ]->release( $lock );

done_testing();

# vim: ts=4 sw=4 et: