#!perl use strict; no warnings; use Test::More; use AnyEvent::XMPP; use AnyEvent::XMPP::Namespaces qw/xmpp_ns/; use AnyEvent::XMPP::TestClient; use AnyEvent::XMPP::IM::Message; use AnyEvent::XMPP::Util qw/bare_jid/; my $cl = AnyEvent::XMPP::TestClient->new_or_exit (tests => 3, two_accounts => 1, finish_count => 2); my $C = $cl->client; my $disco = $cl->instance_ext ('AnyEvent::XMPP::Ext::Disco'); my $ping = $cl->instance_ext ('AnyEvent::XMPP::Ext::Ping'); $ping->auto_timeout (1); $disco->enable_feature ($ping->disco_feature); my $ping_error = ''; my $response_time; my $feature = 0; $C->reg_cb ( two_accounts_ready => sub { my ($C) = @_; my $con = $cl->{acc}->connection; $disco->request_info ($con, $cl->{jid2}, undef, sub { my ($disco, $info, $error) = @_; $feature = ! ! ($info->features->{xmpp_ns ('ping')}); $cl->finish; }); $ping->ping ($con, $cl->{jid2}, sub { my ($time, $error) = @_; if ($error) { $ping_error = $error->string; } $response_time = $time; $cl->finish; }); } ); $cl->wait; is ($ping_error, '', 'no ping error'); ok ($feature , 'ping feature advertised'); ok ($response_time > 0.0001, 'got a reasonable response time');