summaryrefslogtreecommitdiff
path: root/t/lru-crawler.t
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2014-04-15 00:22:59 -0700
committerdormando <dormando@rydia.net>2014-04-17 00:43:17 -0700
commitd425b35b9f084ea87df7ca8de088c4ff02cdf945 (patch)
treeebca17ff103d775ec4867526fce3db679faa7fc0 /t/lru-crawler.t
parent0d1f505c1590db5e874df8254908270dbe7fd563 (diff)
downloadmemcached-d425b35b9f084ea87df7ca8de088c4ff02cdf945.tar.gz
basic tests + lrucrawler -> lru_crawler
Diffstat (limited to 't/lru-crawler.t')
-rw-r--r--t/lru-crawler.t68
1 files changed, 68 insertions, 0 deletions
diff --git a/t/lru-crawler.t b/t/lru-crawler.t
new file mode 100644
index 0000000..1e28a91
--- /dev/null
+++ b/t/lru-crawler.t
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More tests => 188;
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+use MemcachedTest;
+
+my $server = new_memcached('-m 32');
+{
+ my $stats = mem_stats($server->sock, ' settings');
+ is($stats->{lru_crawler}, "no");
+}
+
+my $sock = $server->sock;
+
+# Fill a slab a bit.
+# Some immortal items, some long expiring items, some short expiring items.
+# Done so the immortals end up at the tail.
+for (1 .. 30) {
+ print $sock "set ifoo$_ 0 0 2\r\nok\r\n";
+ is(scalar <$sock>, "STORED\r\n", "stored key");
+}
+for (1 .. 30) {
+ print $sock "set lfoo$_ 0 3600 2\r\nok\r\n";
+ is(scalar <$sock>, "STORED\r\n", "stored key");
+}
+for (1 .. 30) {
+ print $sock "set sfoo$_ 0 1 2\r\nok\r\n";
+ is(scalar <$sock>, "STORED\r\n", "stored key");
+}
+
+{
+ my $slabs = mem_stats($sock, "slabs");
+ is($slabs->{"1:used_chunks"}, 90, "slab1 has 90 used chunks");
+}
+
+print $sock "lru_crawler enable\r\n";
+is(scalar <$sock>, "OK\r\n", "enabled lru crawler");
+{
+ my $stats = mem_stats($server->sock, ' settings');
+ is($stats->{lru_crawler}, "yes");
+}
+
+# TODO: counter for how often it's run? then poll that?
+sleep 5;
+
+{
+ my $slabs = mem_stats($sock, "slabs");
+ is($slabs->{"1:used_chunks"}, 60, "slab1 now has 60 used chunks");
+ my $items = mem_stats($sock, "items");
+ is($items->{"items:1:reclaimed"}, 30, "slab1 has 30 reclaims");
+}
+
+for (1 .. 30) {
+ mem_get_is($sock, "ifoo$_", "ok");
+ mem_get_is($sock, "lfoo$_", "ok");
+ mem_get_is($sock, "sfoo$_", undef);
+}
+
+print $sock "lru_crawler disable\r\n";
+is(scalar <$sock>, "OK\r\n", "disabled lru crawler");
+{
+ my $stats = mem_stats($server->sock, ' settings');
+ is($stats->{lru_crawler}, "no");
+}
+