[memcached] bradfitz, r356: daemonize tests
commits at code.sixapart.com
commits at code.sixapart.com
Mon Sep 4 21:04:02 UTC 2006
daemonize tests
U trunk/server/test/daemonize.t
U trunk/server/test/lib/MemcachedTest.pm
Modified: trunk/server/test/daemonize.t
===================================================================
--- trunk/server/test/daemonize.t 2006-09-04 21:03:49 UTC (rev 355)
+++ trunk/server/test/daemonize.t 2006-09-04 21:04:02 UTC (rev 356)
@@ -1,11 +1,33 @@
#!/usr/bin/perl
use strict;
-use Test::More skip_all => "Tests not written."; # tests => 1
+use Test::More tests => 7;
use FindBin qw($Bin);
use lib "$Bin/lib";
use MemcachedTest;
-my $server = new_memcached();
+use File::Temp qw(tempfile);
+
+my (undef, $tmpfn) = tempfile();
+
+my $server = new_memcached("-d -P $tmpfn");
my $sock = $server->sock;
+sleep 0.5;
+ok(-e $tmpfn, "pid file exists");
+ok(-s $tmpfn, "pid file has length");
+
+open (my $fh, $tmpfn) or die;
+my $readpid = do { local $/; <$fh>; };
+chomp $readpid;
+close ($fh);
+
+ok(kill(0, $readpid), "process is still running");
+
+my $stats = mem_stats($sock);
+is($stats->{pid}, $readpid, "memcached reports same pid as file");
+
+ok($server->new_sock, "opened new socket");
+ok(kill(9, $readpid), "sent KILL signal");
+sleep 0.5;
+ok(! $server->new_sock, "failed to open new socket");
Modified: trunk/server/test/lib/MemcachedTest.pm
===================================================================
--- trunk/server/test/lib/MemcachedTest.pm 2006-09-04 21:03:49 UTC (rev 355)
+++ trunk/server/test/lib/MemcachedTest.pm 2006-09-04 21:04:02 UTC (rev 356)
@@ -6,13 +6,27 @@
use Carp qw(croak);
use vars qw(@EXPORT);
- at EXPORT = qw(new_memcached sleep mem_get_is);
+ at EXPORT = qw(new_memcached sleep mem_get_is mem_stats);
sub sleep {
my $n = shift;
select undef, undef, undef, $n;
}
+sub mem_stats {
+ my ($sock, $type) = @_;
+ $type = $type ? " $type" : "";
+ print $sock "stats$type\r\n";
+ my $stats = {};
+ while (<$sock>) {
+ last if /^(\.|END)/;
+ /^STAT (\S+) (\d+)/;
+ #print " slabs: $_";
+ $stats->{$1} = $2;
+ }
+ return $stats;
+}
+
sub mem_get_is {
# works on single-line values only. no newlines in value.
my ($sock_opts, $key, $val, $msg) = @_;
@@ -61,7 +75,7 @@
my $port = free_port();
$args .= " -p $port";
if ($< == 0) {
- $args .= " -u root";
+ $args .= " -u root";
}
my $childpid = fork();
More information about the memcached-commits
mailing list