our
@EXPORT
=
qw(
libmemcached_test_create
libmemcached_test_key
libmemcached_version_ge
libmemcached_test_servers
)
;
memcached_create
memcached_server_add
memcached_get
memcached_set
memcached_errstr
memcached_version
)
;
sub
libmemcached_test_servers {
my
$servers
=
$ENV
{PERL_LIBMEMCACHED_TEST_SERVERS};
$servers
||=
'localhost:11211'
;
return
split
(/\s*,\s*/,
$servers
);
}
sub
libmemcached_test_create {
my
(
$args
) =
@_
;
my
$memc
= memcached_create()
or
die
"memcached_create failed"
;
my
(
$server
,
$port
) =
split
/:/, (libmemcached_test_servers())[0];
my
$rc
= memcached_server_add(
$memc
,
$server
,
$port
);
die
"libmemcached_test_create: memcached_server_add($server) failed: "
.memcached_errstr(
$memc
)
if
not
$rc
;
memcached_set(
$memc
,
"foo"
,
"hello memcached"
);
plan
skip_all
=>
"Can't talk to any memcached servers"
if
memcached_errstr(
$memc
) !~ /SERVER END|SUCCESS|NOT FOUND/;
plan
skip_all
=>
"memcached server version less than $args->{min_version}"
if
$args
->{min_version}
&& not libmemcached_version_ge(
$memc
,
$args
->{min_version});
return
$memc
;
}
sub
libmemcached_version_ge {
my
(
$memc
,
$min_version
) =
@_
;
my
@min_version
=
split
/\./,
$min_version
;
my
@memcached_version
= memcached_version(
$memc
);
for
(0,1,2) {
return
1
if
$memcached_version
[
$_
] >
$min_version
[
$_
];
return
0
if
$memcached_version
[
$_
] <
$min_version
[
$_
];
}
return
1;
}
sub
libmemcached_test_key {
our
$time_rand
||= ($^T +
rand
());
return
$time_rand
;
}
1;