skip_unless_mongod
build_client
get_test_db
server_version
check_min_server_version
/
;
skip_unless_mongod();
my
@events
;
my
$conn
= build_client(
monitoring_callback
=>
sub
{
push
@events
,
shift
;
});
my
$server_version
= server_version(
$conn
);
my
$testdb
= get_test_db(
$conn
);
my
$coll
=
$testdb
->get_collection(
'test_collection'
);
for
my
$index
(0..1000) {
$coll
->insert_one({
type
=>
'testval'
,
value
=>
$index
,
});
}
my
$id
;
@events
= ();
do
{
my
$results
=
$coll
->query({
type
=>
'testval'
});
ok
defined
(
$results
->
next
),
'fetch one document'
;
$id
=
$results
->result->_cursor_id;
ok
defined
(
$id
),
'cursor id'
;
undef
$results
;
};
my
(
$event
) =
grep
{
$_
->{commandName} eq
'killCursors'
&&
$_
->{type} eq
'command_succeeded'
}
@events
;
ok
defined
(
$event
),
'successful killcursors event'
;
if
(
defined
$event
and
defined
$id
) {
is
$event
->{reply}{ok}, 1,
'reply ok'
;
unless
( check_min_server_version(
$conn
,
'v3.2.0'
) ) {
ok( !
grep
{
$_
eq
$id
} @{
$event
->{reply}{cursorsAlive}},
"cursor id not in alive list"
);
is_deeply(
$event
->{reply}{cursorsKilled}, [
$id
],
'cursor id in killed list'
);
}
}
done_testing;