use strict;
use warnings;
use Test::More;
use Test::TCP qw/empty_port wait_port/;
use Test::Skip::UnlessExistsExecutable;
use File::Which qw(which);
use Proc::Guard;
use Cache::Memcached::Fast::Safe;
use POSIX qw//;
#use Log::Minimal;
#$Log::Minimal::AUTODUMP =1;
skip_all_unless_exists 'memcached';
my @memcached;
my @user = ();
if ( $> == 0 ) {
@user = ('-u','nobody');
}
for ( 1..5 ) {
my $port = empty_port();
my $proc = proc_guard( scalar which('memcached'), '-p', $port, '-U', 0, '-l', '127.0.0.1', @user );
wait_port($port);
push @memcached, { proc => $proc, port => $port };
}
my $cache = Cache::Memcached::Fast::Safe->new({
servers => [map { "localhost:" . $_->{port} } @memcached],
});
my $version = $cache->server_versions;
my $pid = fork;
if ( $pid == 0 ) {
my $after_fork = $cache->server_versions;
is_deeply($after_fork, $version);
POSIX::_exit(0);
}
waitpid($pid,0);
is_deeply($cache->server_versions, $version);
done_testing();