[memcached] bradfitz, r334: more/updated tests, these about the dele...

commits at code.sixapart.com commits at code.sixapart.com
Mon Sep 4 04:01:36 UTC 2006


more/updated tests, these about the delete-locked window.



A   trunk/server/test/delete-window.t
U   trunk/server/test/getset.t


Added: trunk/server/test/delete-window.t
===================================================================
--- trunk/server/test/delete-window.t	2006-09-04 04:01:10 UTC (rev 333)
+++ trunk/server/test/delete-window.t	2006-09-04 04:01:35 UTC (rev 334)
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 14;
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+use MemcachedTest;
+
+my $server = new_memcached();
+my $sock = $server->sock;
+my $line = sub { return scalar <$sock> };
+
+# immediate set/deletes
+print $sock "set foo 0 0 6\r\nfooval\r\ndelete foo\r\nset foo 0 0 6\r\nfooval\r\ndelete foo\r\n";
+is($line->(), "STORED\r\n",  "pipeline set");
+is($line->(), "DELETED\r\n", "pipeline delete");
+is($line->(), "STORED\r\n",  "pipeline set");
+is($line->(), "DELETED\r\n", "pipeline delete");
+
+# not found test
+print $sock "delete foo\r\n";
+is($line->(), "NOT_FOUND\r\n", "thing not found to delete");
+
+# test the cool-down window (see protocol doc) whereby add/replace commands can't
+# work n seconds after deleting.
+print $sock "set foo 0 0 3\r\nbar\r\n";
+is($line->(), "STORED\r\n", "stored foo");
+print $sock "delete foo 1\r\n";
+is($line->(), "DELETED\r\n", "deleted with 1 second window");
+print $sock "get foo\r\n";
+is($line->(), "END\r\n", "nothing found");
+print $sock "add foo 0 0 7\r\nfoo-add\r\n";
+is($line->(), "NOT_STORED\r\n", "didn't add foo");
+print $sock "replace foo 0 0 11\r\nfoo-replace\r\n";
+is($line->(), "NOT_STORED\r\n", "didn't replace foo");
+print $sock "set foo 0 0 7\r\nfoo-set\r\n";
+is($line->(), "STORED\r\n", "stored foo-set");
+
+# add can work after expiration time
+print $sock "set foo 0 0 3\r\nbar\r\n";
+is($line->(), "STORED\r\n", "stored foo");
+print $sock "delete foo 1\r\n";
+is($line->(), "DELETED\r\n", "deleted with 1 second window");
+sleep(1.2);
+print $sock "add foo 0 0 7\r\nfoo-add\r\n";
+is($line->(), "STORED\r\n", "stored foo-add");
+
+# wait fo
+diag("waiting 5 seconds for the deleter event...");
+sleep(5.2);
+print $sock "get foo\r\n";
+is($line->(), "VALUE foo 0 7\r\n", "got foo value...");
+is($line->(), "foo-add\r\n", ".. with value foo-add");
+is($line->(), "END\r\n", "got END");
+
+
+__END__
+sleep 10;
+
+# test a set, delete w/ timer, set, wait 5.2 seconds (for 5 second
+# deleter event), then get to see which we get.
+print $sock "set baz 0 0 4\r\nval1\r\n";
+is($line->(), "STORED\r\n", "stored baz = val1");
+print $sock "delete foo 1\r\n";
+is($line->(), "DELETED\r\n", "deleted with 1 second window");
+
+print $sock "set baz 0 0 4\r\nval2\r\n";
+is($line->(), "STORED\r\n", "stored baz = val2");
+diag("sleeping for 5 seconds to wait for deleter event...");
+sleep(5.2);
+print $sock "get baz\r\n";
+is($line->(), "VALUE baz 0 4\r\n", "got baz value...");
+is($line->(), "val2\r\n", ".. with value val2");
+is($line->(), "END\r\n", "got END");
+
+


Property changes on: trunk/server/test/delete-window.t
___________________________________________________________________
Name: svn:executable
   + *

Modified: trunk/server/test/getset.t
===================================================================
--- trunk/server/test/getset.t	2006-09-04 04:01:10 UTC (rev 333)
+++ trunk/server/test/getset.t	2006-09-04 04:01:35 UTC (rev 334)
@@ -12,7 +12,7 @@
 # set foo (and should get it)
 print $sock "set foo 0 0 6\r\nfooval\r\n";
 is(scalar <$sock>, "STORED\r\n", "stored foo");
-print $sock "get foo\n";
+print $sock "get foo\r\n";
 is(scalar <$sock>, "VALUE foo 0 6\r\n", "got FOO value");
 is(scalar <$sock>, "fooval\r\n", "got fooval");
 is(scalar <$sock>, "END\r\n", "got END");
@@ -20,7 +20,7 @@
 # add bar (and should get it)
 print $sock "add bar 0 0 6\r\nbarval\r\n";
 is(scalar <$sock>, "STORED\r\n", "stored barval");
-print $sock "get bar\n";
+print $sock "get bar\r\n";
 is(scalar <$sock>, "VALUE bar 0 6\r\n", "got bar value");
 is(scalar <$sock>, "barval\r\n", "got barval");
 is(scalar <$sock>, "END\r\n", "got END");
@@ -28,7 +28,7 @@
 # add foo (but shouldn't get new value)
 print $sock "add foo 0 0 5\r\nfoov2\r\n";
 is(scalar <$sock>, "NOT_STORED\r\n", "not stored");
-print $sock "get foo\n";
+print $sock "get foo\r\n";
 is(scalar <$sock>, "VALUE foo 0 6\r\n", "got FOO value");
 is(scalar <$sock>, "fooval\r\n", "got fooval");
 is(scalar <$sock>, "END\r\n", "got END");




More information about the memcached-commits mailing list