Show
Ignore:
Timestamp:
06/13/10 22:45:28 (3 years ago)
Author:
ahu
Message:

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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pdns/pdns/dnsbulktest.cc

    r1634 r1635  
    3434    connect(d_socket, (struct sockaddr*)&remote, remote.getSocklen()); 
    3535    d_oks = d_errors = d_nodatas = d_nxdomains = d_unknowns = 0; 
    36     d_receiveds = d_receiveerrors = 0; 
     36    d_receiveds = d_receiveerrors = d_senderrors = 0; 
    3737    for(unsigned int id =0 ; id < numeric_limits<uint16_t>::max(); ++id)  
    3838      d_idqueue.push_back(id); 
     
    5252   
    5353    DNSPacketWriter pw(packet, domain, QType::A); 
    54      
     54 
     55    if(d_idqueue.empty()) { 
     56      cerr<<"Exhausted ids!"<<endl; 
     57      exit(1); 
     58    }     
    5559    pw.getHeader()->id = d_idqueue.front(); 
    5660    d_idqueue.pop_front(); 
     
    5862    pw.getHeader()->qr = 0; 
    5963     
    60     ::send(d_socket, &*packet.begin(), packet.size(), 0); 
     64    if(::send(d_socket, &*packet.begin(), packet.size(), 0) < 0) 
     65      d_senderrors++; 
    6166     
    6267    return pw.getHeader()->id; 
     
    9499       
    95100      id = mdp.d_header.id; 
     101      d_idqueue.push_back(id); 
    96102     
    97103      return 1; 
     
    128134  } 
    129135  unsigned int d_errors, d_nxdomains, d_nodatas, d_oks, d_unknowns; 
    130   unsigned int d_receiveds, d_receiveerrors; 
     136  unsigned int d_receiveds, d_receiveerrors, d_senderrors; 
    131137}; 
    132138 
     
    144150  Inflighter<vector<string>, SendReceive> inflighter(domains, sr); 
    145151  inflighter.d_maxInFlight = 1000; 
    146   inflighter.d_timeoutSeconds = 15; 
     152  inflighter.d_timeoutSeconds = 3; 
    147153  string line; 
    148154   
     
    160166  random_shuffle(domains.begin(), domains.end()); 
    161167 
     168  boost::format datafmt("%s %|20t|%+15s  %|40t|%s %|60t|%+15s\n"); 
     169 
    162170  for(;;) { 
    163171    try { 
     
    169177    } 
    170178  } 
    171   cerr<<"Results: "<<sr.d_errors<<" errors, "<<sr.d_oks<<" oks, "<<sr.d_nodatas<<" nodatas, "<<sr.d_nxdomains<<" nxdomains, "<<inflighter.getTimeouts()<<" timeouts"<<endl; 
    172   cerr<<sr.d_unknowns<<" answers with an unknown status"<<endl; 
    173    
    174   cerr<<domains.size() - (sr.d_errors + sr.d_oks + sr.d_nodatas + sr.d_nxdomains + inflighter.getTimeouts() + sr.d_unknowns)<<" status results missing"<<endl; 
    175   cerr<<sr.d_receiveerrors<<" receive errors, "<<sr.d_receiveds<<" packets received correctly"<<endl; 
    176  
    177   cerr<<inflighter.getUnexpecteds()<<" unexpected responses (probably seen as timeouts)"<<endl; 
     179 
     180  cerr<< datafmt % "Sending" % "" % "Receiving" % ""; 
     181  cerr<< datafmt % "  Queued " % domains.size() % "  Received" % sr.d_receiveds; 
     182  cerr<< datafmt % "  Error -/-" % sr.d_senderrors %  "  Timeouts" % inflighter.getTimeouts(); 
     183  cerr<< datafmt % " " % "" %  "  Unexpected" % inflighter.getUnexpecteds(); 
     184   
     185  cerr<< datafmt % " Sent" % (domains.size() - sr.d_senderrors) %  " Total" % (sr.d_receiveds + inflighter.getTimeouts() + inflighter.getUnexpecteds()); 
     186   
     187  cerr<<endl;   
     188  cerr<< datafmt % "DNS Status" % ""       % "" % ""; 
     189  cerr<< datafmt % "  OK" % sr.d_oks       % "" % ""; 
     190  cerr<< datafmt % "  Error" % sr.d_errors       % "" % "";   
     191  cerr<< datafmt % "  No Data" % sr.d_nodatas       % "" % "";   
     192  cerr<< datafmt % "  NXDOMAIN" % sr.d_nxdomains      % "" % ""; 
     193  cerr<< datafmt % "  Unknowns" % sr.d_unknowns      % "" % "";   
     194  cerr<< datafmt % "Answers" % (sr.d_oks      +      sr.d_errors      +      sr.d_nodatas      + sr.d_nxdomains           +      sr.d_unknowns) % "" % ""; 
     195  cerr<< datafmt % "  Timeouts " % (inflighter.getTimeouts()) % "" % ""; 
     196  cerr<< datafmt % "Total " % (sr.d_oks      +      sr.d_errors      +      sr.d_nodatas      + sr.d_nxdomains           +      sr.d_unknowns + inflighter.getTimeouts()) % "" % ""; 
     197   
     198  /* 
     199   
     200  cerr<<"Questions: "<<domains.size()<<", responses + network errors + timeouts:  " <<  
     201    sr.d_receiveds <<" + " << sr.d_receiveerrors<<" + " << inflighter.getTimeouts()<< " = " << 
     202    sr.d_receiveds     +      sr.d_receiveerrors    +      inflighter.getTimeouts()  <<endl; 
     203     
     204  cerr<< "Unexpected responses "<< inflighter.getUnexpecteds() << endl; 
     205   
     206  cerr<<"DNS OK + DNS Error + NODATA + NXDOMAIN + Unknown: "<< 
     207    sr.d_oks << " + " << sr.d_errors << " + " << sr.d_nodatas << " + " << sr.d_nxdomains << " + " << sr.d_unknowns << " = " << 
     208    sr.d_oks      +      sr.d_errors      +      sr.d_nodatas      + sr.d_nxdomains           +      sr.d_unknowns << endl; 
     209   
     210  cerr<< "(" << domains.size() - (sr.d_errors + sr.d_oks + sr.d_nodatas + sr.d_nxdomains + inflighter.getTimeouts() + sr.d_unknowns)<<" status results missing)"<<endl; 
     211  */ 
     212   
    178213} 
    179214