Blame t/expirations.t

Packit Service 584ef9
#!/usr/bin/perl
Packit Service 584ef9
Packit Service 584ef9
use strict;
Packit Service 584ef9
use Test::More tests => 15;
Packit Service 584ef9
use FindBin qw($Bin);
Packit Service 584ef9
use lib "$Bin/lib";
Packit Service 584ef9
use MemcachedTest;
Packit Service 584ef9
Packit Service 584ef9
my $server = new_memcached();
Packit Service 584ef9
my $sock = $server->sock;
Packit Service 584ef9
my $expire;
Packit Service 584ef9
Packit Service 584ef9
sub wait_for_early_second {
Packit Service 584ef9
    my $have_hires = eval "use Time::HiRes (); 1";
Packit Service 584ef9
    if ($have_hires) {
Packit Service 584ef9
        my $tsh = Time::HiRes::time();
Packit Service 584ef9
        my $ts = int($tsh);
Packit Service 584ef9
        return if ($tsh - $ts) < 0.5;
Packit Service 584ef9
    }
Packit Service 584ef9
Packit Service 584ef9
    my $ts = int(time());
Packit Service 584ef9
    while (1) {
Packit Service 584ef9
        my $t = int(time());
Packit Service 584ef9
        return if $t != $ts;
Packit Service 584ef9
        select undef, undef, undef, 0.10;  # 1/10th of a second sleeps until time changes.
Packit Service 584ef9
    }
Packit Service 584ef9
}
Packit Service 584ef9
Packit Service 584ef9
wait_for_early_second();
Packit Service 584ef9
Packit Service 584ef9
print $sock "set foo 0 3 6\r\nfooval\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored foo");
Packit Service 584ef9
Packit Service 584ef9
mem_get_is($sock, "foo", "fooval");
Packit Service 584ef9
sleep(4);
Packit Service 584ef9
mem_get_is($sock, "foo", undef);
Packit Service 584ef9
Packit Service 584ef9
$expire = time() - 1;
Packit Service 584ef9
print $sock "set foo 0 $expire 6\r\nfooval\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored foo");
Packit Service 584ef9
mem_get_is($sock, "foo", undef, "already expired");
Packit Service 584ef9
Packit Service 584ef9
$expire = time() + 1;
Packit Service 584ef9
print $sock "set foo 0 $expire 6\r\nfoov+1\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored foo");
Packit Service 584ef9
mem_get_is($sock, "foo", "foov+1");
Packit Service 584ef9
sleep(2.2);
Packit Service 584ef9
mem_get_is($sock, "foo", undef, "now expired");
Packit Service 584ef9
Packit Service 584ef9
$expire = time() - 20;
Packit Service 584ef9
print $sock "set boo 0 $expire 6\r\nbooval\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored boo");
Packit Service 584ef9
mem_get_is($sock, "boo", undef, "now expired");
Packit Service 584ef9
Packit Service 584ef9
print $sock "add add 0 2 6\r\naddval\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored add");
Packit Service 584ef9
mem_get_is($sock, "add", "addval");
Packit Service 584ef9
# second add fails
Packit Service 584ef9
print $sock "add add 0 2 7\r\naddval2\r\n";
Packit Service 584ef9
is(scalar <$sock>, "NOT_STORED\r\n", "add failure");
Packit Service 584ef9
sleep(2.3);
Packit Service 584ef9
print $sock "add add 0 2 7\r\naddval3\r\n";
Packit Service 584ef9
is(scalar <$sock>, "STORED\r\n", "stored add again");
Packit Service 584ef9
mem_get_is($sock, "add", "addval3");