From: Bert Hubert Date: Sun, 13 Jun 2010 20:45:28 +0000 (+0000) Subject: comment the 'inflighter' a bit, plus add very nice statistical output to dnsbulktest X-Git-Tag: rec-3.3~67 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf2aaa52a0882c6914eb15430ed0591f1c034446;p=pdns comment the 'inflighter' a bit, plus add very nice statistical output to dnsbulktest see http://bert-hubert.blogspot.com/2010/06/better-statistical-regression-tests.html git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1635 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/dnsbulktest.cc b/pdns/dnsbulktest.cc index cf8c07baa..7f15e160c 100644 --- a/pdns/dnsbulktest.cc +++ b/pdns/dnsbulktest.cc @@ -33,7 +33,7 @@ struct SendReceive ComboAddress remote(remoteAddr, port); connect(d_socket, (struct sockaddr*)&remote, remote.getSocklen()); d_oks = d_errors = d_nodatas = d_nxdomains = d_unknowns = 0; - d_receiveds = d_receiveerrors = 0; + d_receiveds = d_receiveerrors = d_senderrors = 0; for(unsigned int id =0 ; id < numeric_limits::max(); ++id) d_idqueue.push_back(id); } @@ -51,13 +51,18 @@ struct SendReceive vector packet; DNSPacketWriter pw(packet, domain, QType::A); - + + if(d_idqueue.empty()) { + cerr<<"Exhausted ids!"<id = d_idqueue.front(); d_idqueue.pop_front(); pw.getHeader()->rd = 1; pw.getHeader()->qr = 0; - ::send(d_socket, &*packet.begin(), packet.size(), 0); + if(::send(d_socket, &*packet.begin(), packet.size(), 0) < 0) + d_senderrors++; return pw.getHeader()->id; } @@ -93,6 +98,7 @@ struct SendReceive } id = mdp.d_header.id; + d_idqueue.push_back(id); return 1; } @@ -127,7 +133,7 @@ struct SendReceive } } unsigned int d_errors, d_nxdomains, d_nodatas, d_oks, d_unknowns; - unsigned int d_receiveds, d_receiveerrors; + unsigned int d_receiveds, d_receiveerrors, d_senderrors; }; @@ -143,7 +149,7 @@ int main(int argc, char** argv) Inflighter, SendReceive> inflighter(domains, sr); inflighter.d_maxInFlight = 1000; - inflighter.d_timeoutSeconds = 15; + inflighter.d_timeoutSeconds = 3; string line; pair split; @@ -159,6 +165,8 @@ int main(int argc, char** argv) cerr<<"Read "< void Inflighter::run() +template bool Inflighter::run() { if(!d_init) init(); - // cout << "Have "<iter, answer); + d_sr.deliverAnswer(*ival->iter, answer); // deliver to sender/receiver d_ttdWatch.erase(ival); break; // we can send new questions! } @@ -120,13 +127,14 @@ template void Inflighter 10000 */ ) { // no new responses, time for some cleanup of the ttdWatch struct timeval now; gettimeofday(&now, 0); typedef typename ttdwatch_t::template index::type waiters_by_ttd_index_t; waiters_by_ttd_index_t& waiters_index = boost::multi_index::get(d_ttdWatch); + // this provides a list of items sorted by age for(typename waiters_by_ttd_index_t::iterator valiter = waiters_index.begin(); valiter != waiters_index.end(); ) { if(valiter->ttd.tv_sec < now.tv_sec || (valiter->ttd.tv_sec == now.tv_sec && valiter->ttd.tv_usec < now.tv_usec)) { d_sr.deliverTimeout(valiter->id); // so backend can release id @@ -135,13 +143,14 @@ template void Inflighter