EV-Memcached
view release on metacpan or search on metacpan
t/04_features.t view on Meta::CPAN
});
});
run_ev();
}
# --- XS ALIAS: append/prepend ---
{
my $mc = make_mc();
my $key = "${prefix}ap_alias";
$mc->set($key, "hello", sub {
$mc->append($key, " world", sub {
my ($res, $err) = @_;
ok(!$err, "append via XS ALIAS");
$mc->prepend($key, "say ", sub {
ok(!$err, "prepend via XS ALIAS");
$mc->get($key, sub {
my ($val) = @_;
is($val, "say hello world", "append/prepend correct");
EV::break;
});
});
});
});
run_ev();
$mc->disconnect;
}
# --- XS ALIAS: touch/gat/gats ---
{
my $mc = make_mc();
my $key = "${prefix}tg_alias";
$mc->set($key, "data", 0, 42, sub {
$mc->touch($key, 300, sub {
my ($res, $err) = @_;
ok(!$err, "touch via XS ALIAS");
$mc->gat($key, 300, sub {
my ($val, $err) = @_;
is($val, "data", "gat via XS ALIAS");
$mc->gats($key, 300, sub {
my ($result, $err) = @_;
is($result->{value}, "data", "gats value");
is($result->{flags}, 42, "gats flags");
ok($result->{cas}, "gats cas");
EV::break;
});
});
});
});
run_ev();
$mc->disconnect;
}
# --- new() constructor in XS ---
{
my $mc = EV::Memcached->new(
host => $host,
port => $port,
max_pending => 10,
keepalive => 5,
priority => 1,
connect_timeout => 3000,
on_error => sub { diag "error: @_" },
);
$mc->on_connect(sub { EV::break });
my $t = EV::timer 5, 0, sub { fail("timeout"); EV::break };
EV::run;
ok($mc->is_connected, "XS new() connected");
is($mc->max_pending, 10, "XS new() max_pending");
is($mc->connect_timeout, 3000, "XS new() connect_timeout");
$mc->disconnect;
}
# --- fire-and-forget set with expiry and flags ---
{
my $mc = make_mc();
my $key = "${prefix}ff_opts";
$mc->set($key, "val", 300, 77);
$mc->noop(sub {
$mc->gets($key, sub {
my ($result, $err) = @_;
is($result->{value}, "val", "fire-and-forget set with expiry/flags: value");
is($result->{flags}, 77, "fire-and-forget set with expiry/flags: flags");
EV::break;
});
});
run_ev();
$mc->disconnect;
}
done_testing;
( run in 1.807 second using v1.01-cache-2.11-cpan-d8267643d1d )