|
Packit Service |
584ef9 |
#!/usr/bin/perl
|
|
Packit Service |
584ef9 |
# Test for adding connection id to the output when watching fetchers
|
|
Packit Service |
584ef9 |
# and mutations.
|
|
Packit Service |
584ef9 |
# Note that this test relies on the order of connection establishments. This
|
|
Packit Service |
584ef9 |
# could be improved if there's a way for a client to retrieve its connection id.
|
|
Packit Service |
584ef9 |
use strict;
|
|
Packit Service |
584ef9 |
use warnings;
|
|
Packit Service |
584ef9 |
use Socket qw/SO_RCVBUF/;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
use Test::More tests => 4;
|
|
Packit Service |
584ef9 |
use FindBin qw($Bin);
|
|
Packit Service |
584ef9 |
use lib "$Bin/lib";
|
|
Packit Service |
584ef9 |
use MemcachedTest;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
my $server = new_memcached('-m 60 -o watcher_logbuf_size=8');
|
|
Packit Service |
584ef9 |
my $client_first = $server->sock;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
my $stats;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# get the first client's connection id
|
|
Packit Service |
584ef9 |
print $client_first "stats conns\r\n";
|
|
Packit Service |
584ef9 |
while (<$client_first>) {
|
|
Packit Service |
584ef9 |
last if /^(\.|END)/;
|
|
Packit Service |
584ef9 |
$stats = $_;
|
|
Packit Service |
584ef9 |
}
|
|
Packit Service |
584ef9 |
my $cfd_first =(split(':', $stats))[0];
|
|
Packit Service |
584ef9 |
$cfd_first =~ s/[^0-9]//g;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# start watching fetchers and mutations
|
|
Packit Service |
584ef9 |
my $watcher = $server->new_sock;
|
|
Packit Service |
584ef9 |
print $watcher "watch fetchers mutations\n";
|
|
Packit Service |
584ef9 |
my $res = <$watcher>;
|
|
Packit Service |
584ef9 |
is($res, "OK\r\n", "watching enabled for fetchers and mutations");
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# first client does a set, which will result in a get and a set
|
|
Packit Service |
584ef9 |
print $client_first "set foo 0 0 5 noreply\r\nhello\r\n";
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# ensure client's connection id is correct
|
|
Packit Service |
584ef9 |
$res = <$watcher>;
|
|
Packit Service |
584ef9 |
print $res;
|
|
Packit Service |
584ef9 |
like($res, qr/ts=\d+\.\d+\ gid=\d+ type=item_get key=foo status=not_found clsid=\d+ cfd=$cfd_first/,
|
|
Packit Service |
584ef9 |
"Saw a miss with the connection id $cfd_first");
|
|
Packit Service |
584ef9 |
$res = <$watcher>;
|
|
Packit Service |
584ef9 |
print $res;
|
|
Packit Service |
584ef9 |
like($res, qr/ts=\d+\.\d+\ gid=\d+ type=item_store key=foo status=stored cmd=set ttl=\d+ clsid=\d+ cfd=$cfd_first/,
|
|
Packit Service |
584ef9 |
"Saw a set with the connection id $cfd_first");
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# get the second client's connection id
|
|
Packit Service |
584ef9 |
my $client_second = $server->new_sock;
|
|
Packit Service |
584ef9 |
print $client_second "stats conns\r\n";
|
|
Packit Service |
584ef9 |
while (<$client_second>) {
|
|
Packit Service |
584ef9 |
last if /^(\.|END)/;
|
|
Packit Service |
584ef9 |
$stats = $_;
|
|
Packit Service |
584ef9 |
}
|
|
Packit Service |
584ef9 |
my $cfd_second =(split(':', $stats))[0];
|
|
Packit Service |
584ef9 |
$cfd_second =~ s/[^0-9]//g;
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# second client does a get
|
|
Packit Service |
584ef9 |
print $client_second "get foo\r\n";
|
|
Packit Service |
584ef9 |
|
|
Packit Service |
584ef9 |
# now we should see second client's connection id
|
|
Packit Service |
584ef9 |
$res = <$watcher>;
|
|
Packit Service |
584ef9 |
print $res;
|
|
Packit Service |
584ef9 |
like($res, qr/ts=\d+\.\d+\ gid=\d+ type=item_get key=foo status=found clsid=\d+ cfd=$cfd_second/,
|
|
Packit Service |
584ef9 |
"Saw a get with the connection id $cfd_second");
|
|
Packit Service |
584ef9 |
|