4
use Test::More tests => 15;
9
my $server = new_memcached();
10
my $sock = $server->sock;
13
sub wait_for_early_second {
14
my $have_hires = eval "use Time::HiRes (); 1";
16
my $tsh = Time::HiRes::time();
18
return if ($tsh - $ts) < 0.5;
25
select undef, undef, undef, 0.10; # 1/10th of a second sleeps until time changes.
29
wait_for_early_second();
31
print $sock "set foo 0 1 6\r\nfooval\r\n";
32
is(scalar <$sock>, "STORED\r\n", "stored foo");
34
mem_get_is($sock, "foo", "fooval");
36
mem_get_is($sock, "foo", undef);
39
print $sock "set foo 0 $expire 6\r\nfooval\r\n";
40
is(scalar <$sock>, "STORED\r\n", "stored foo");
41
mem_get_is($sock, "foo", undef, "already expired");
44
print $sock "set foo 0 $expire 6\r\nfoov+1\r\n";
45
is(scalar <$sock>, "STORED\r\n", "stored foo");
46
mem_get_is($sock, "foo", "foov+1");
48
mem_get_is($sock, "foo", undef, "now expired");
50
$expire = time() - 20;
51
print $sock "set boo 0 $expire 6\r\nbooval\r\n";
52
is(scalar <$sock>, "STORED\r\n", "stored boo");
53
mem_get_is($sock, "boo", undef, "now expired");
55
print $sock "add add 0 2 6\r\naddval\r\n";
56
is(scalar <$sock>, "STORED\r\n", "stored add");
57
mem_get_is($sock, "add", "addval");
59
print $sock "add add 0 2 7\r\naddval2\r\n";
60
is(scalar <$sock>, "NOT_STORED\r\n", "add failure");
62
print $sock "add add 0 2 7\r\naddval3\r\n";
63
is(scalar <$sock>, "STORED\r\n", "stored add again");
64
mem_get_is($sock, "add", "addval3");