#!/usr/bin/env perl -w use strict; use Test::More; use Cache::Memcached; use IO::Socket::INET; my $port = 11311; my $testaddr = "127.0.0.1:$port"; my $sock = IO::Socket::INET->new( LocalAddr => $testaddr, Proto => 'tcp', ReuseAddr => 1, ); my @res = ( ["OK\r\n", 1], ["ERROR\r\n", 0], ["\r\nERROR\r\n", 0], ["FOO\r\nERROR\r\n", 0], ["FOO\r\nOK\r\nERROR\r\n", 0], ["\r\n\r\nOK\r\n", 0], ["END\r\n", 0], ); if ($sock) { plan tests => scalar @res; } else { plan skip_all => "cannot bind to $testaddr\n"; exit 0; } close $sock; my $pid = fork; die "Cannot fork because: '$!'" unless defined $pid; unless ($pid) { my $sock = IO::Socket::INET->new( LocalAddr => $testaddr, Proto => 'tcp', ReuseAddr => 1, Listen => 1, ) or die "cannot open $testaddr: $!"; my $csock = $sock->accept(); while (defined (my $buf = <$csock>)) { my $res = shift @res; print $csock $res->[0]; } close $csock; close $sock; exit 0; } # give the forked server a chance to startup sleep 1; my $memd = Cache::Memcached->new({ servers => [ $testaddr ] }); for (@res) { ($_->[0] =~ s/\W//g); is $memd->flush_all, $_->[1], $_->[0]; }