[memcached] bradfitz, r348: two new tests:
commits at code.sixapart.com
commits at code.sixapart.com
Mon Sep 4 07:12:54 UTC 2006
two new tests:
1) bogus commands: not yet done. did as a side-effect of the second
one, but it actually turned out me being on crack,
but I left the stub for later.
the real one:
2) multi-versioning of items with different clients in different states
A trunk/server/test/bogus-commands.t
A trunk/server/test/multiversioning.t
Added: trunk/server/test/bogus-commands.t
===================================================================
--- trunk/server/test/bogus-commands.t 2006-09-04 06:38:02 UTC (rev 347)
+++ trunk/server/test/bogus-commands.t 2006-09-04 07:12:54 UTC (rev 348)
@@ -0,0 +1,13 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 1;
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+use MemcachedTest;
+
+my $server = new_memcached();
+my $sock = $server->sock;
+
+print $sock "boguscommand slkdsldkfjsd\r\n";
+is(scalar <$sock>, "ERROR\r\n", "got error back");
Property changes on: trunk/server/test/bogus-commands.t
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/server/test/multiversioning.t
===================================================================
--- trunk/server/test/multiversioning.t 2006-09-04 06:38:02 UTC (rev 347)
+++ trunk/server/test/multiversioning.t 2006-09-04 07:12:54 UTC (rev 348)
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 13;
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+use MemcachedTest;
+
+my $server = new_memcached();
+my $sock = $server->sock;
+my $sock2 = $server->new_sock;
+
+ok($sock != $sock2, "have two different connections open");
+
+# set large value
+my $size = 32 * 1024; # 256 kB
+my $bigval = "0123456789abcdef" x ($size / 16);
+$bigval =~ s/^0/\[/; $bigval =~ s/f$/\]/;
+my $bigval2 = uc($bigval);
+
+print $sock "set big 0 0 $size\r\n$bigval\r\n";
+is(scalar <$sock>, "STORED\r\n", "stored foo");
+mem_get_is($sock, "big", $bigval, "big value got correctly");
+
+print $sock "get big\r\n";
+my $buf;
+is(read($sock, $buf, $size / 2), $size / 2, "read half the answer back");
+like($buf, qr/VALUE big/, "buf has big value header in it");
+like($buf, qr/abcdef/, "buf has some data in it");
+unlike($buf, qr/abcde\]/, "buf doesn't yet close");
+
+# sock2 interrupts (maybe sock1 is slow) and deletes stuff:
+print $sock2 "delete big\r\n";
+is(scalar <$sock2>, "DELETED\r\n", "deleted big from sock2 while sock1's still reading it");
+mem_get_is($sock2, "big", undef, "nothing from sock2 now. gone from namespace.");
+print $sock2 "set big 0 0 $size\r\n$bigval2\r\n";
+is(scalar <$sock2>, "STORED\r\n", "stored big w/ val2");
+mem_get_is($sock2, "big", $bigval2, "big value2 got correctly");
+
+# sock1 resumes reading...
+$buf .= <$sock>;
+$buf .= <$sock>;
+like($buf, qr/abcde\]/, "buf now closes");
+
+# and if sock1 reads again, it's the uppercase version:
+mem_get_is($sock, "big", $bigval2, "big value2 got correctly from sock1");
Property changes on: trunk/server/test/multiversioning.t
___________________________________________________________________
Name: svn:executable
+ *
More information about the memcached-commits
mailing list