]> granicus.if.org Git - pdns/commitdiff
make dnsreplay deal with 'the final few packets' so very small pcap files can be...
authorBert Hubert <bert.hubert@netherlabs.nl>
Sat, 15 Nov 2008 19:30:56 +0000 (19:30 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Sat, 15 Nov 2008 19:30:56 +0000 (19:30 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1268 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dnsreplay.cc

index e0c06a1d4de1f3524783cc47b90cf29259d1e59c..a28e368189f8bb40ee7d8fbe735caed4f464a595 100644 (file)
@@ -70,7 +70,6 @@ namespace po = boost::program_options;
 
 po::variables_map g_vm;
 
-
 const struct timeval operator*(float fact, const struct timeval& rhs)
 {
   //  cout<<"In: "<<rhs.tv_sec<<" + "<<rhs.tv_usec<<"\n";
@@ -414,6 +413,28 @@ void pruneQids()
 }
 
 
+void printStats(uint64_t origWaitingFor=0, uint64_t weWaitingFor=0)
+{
+
+  format headerfmt   ("%|9t|Questions - Pend. - Drop = Answers = (On time + Late) = (Err + Ok)\n");
+  format datafmt("%s%|9t|%d %|21t|%d %|29t|%d %|36t|%d %|47t|%d %|57t|%d %|66t|%d %|72t|%d\n");
+
+  
+  cerr<<headerfmt;
+  cerr<<(datafmt % "Orig"   % s_questions % origWaitingFor  % s_orignever  % s_origanswers % 0 % s_origtimedout  % 0 % 0);
+  cerr<<(datafmt % "Refer." % s_questions % weWaitingFor    % s_wenever    % s_weanswers   % 0 % s_wetimedout    % 0 % 0);
+
+  cerr<<weWaitingFor<<" queries that could still come in on time, "<<qids.size()<<" outstanding"<<endl;
+  
+  cerr<<"we late: "<<s_wetimedout<<", orig late: "<< s_origtimedout<<", "<<s_questions<<" questions sent, "<<s_origanswers
+      <<" original answers, "<<s_perfect<<" perfect, "<<s_mostly<<" mostly correct"<<", "<<s_webetter<<" we better, "<<s_origbetter<<" orig better ("<<s_origbetterset.size()<<" diff)"<<endl;
+  cerr<<"we never: "<<s_wenever<<", orig never: "<<s_orignever<<endl;
+  cerr<<"original questions from IP addresses for which recursion was not available: "<<s_norecursionavailable<<endl;
+  cerr<<"Unmatched from us: "<<s_weunmatched<<", unmatched from original: "<<s_origunmatched << " ( - decoding err: "<<s_origunmatched-s_origdnserrors<<")"<<endl;
+  cerr<<"DNS decoding errors from us: "<<s_wednserrors<<", from original: "<<s_origdnserrors<<", exact duplicates from client: "<<s_duplicates<<endl<<endl;
+
+}
+
 void houseKeeping()
 {
   static timeval last;
@@ -450,22 +471,7 @@ Orig    9           21      29     36         47        57       66    72
 
    */
 
-  format headerfmt   ("%|9t|Questions - Pend. - Drop = Answers = (On time + Late) = (Err + Ok)\n");
-  format datafmt("%s%|9t|%d %|21t|%d %|29t|%d %|36t|%d %|47t|%d %|57t|%d %|66t|%d %|72t|%d\n");
-
-  
-  cerr<<headerfmt;
-  cerr<<(datafmt % "Orig"   % s_questions % origWaitingFor  % s_orignever  % s_origanswers % 0 % s_origtimedout  % 0 % 0);
-  cerr<<(datafmt % "Refer." % s_questions % weWaitingFor    % s_wenever    % s_weanswers   % 0 % s_wetimedout    % 0 % 0);
-
-  cerr<<weWaitingFor<<" queries that could still come in on time, "<<qids.size()<<" outstanding"<<endl;
-  
-  cerr<<"we late: "<<s_wetimedout<<", orig late: "<< s_origtimedout<<", "<<s_questions<<" questions sent, "<<s_origanswers
-      <<" original answers, "<<s_perfect<<" perfect, "<<s_mostly<<" mostly correct"<<", "<<s_webetter<<" we better, "<<s_origbetter<<" orig better ("<<s_origbetterset.size()<<" diff)"<<endl;
-  cerr<<"we never: "<<s_wenever<<", orig never: "<<s_orignever<<endl;
-  cerr<<"original questions from IP addresses for which recursion was not available: "<<s_norecursionavailable<<endl;
-  cerr<<"Unmatched from us: "<<s_weunmatched<<", unmatched from original: "<<s_origunmatched << " ( - decoding err: "<<s_origunmatched-s_origdnserrors<<")"<<endl;
-  cerr<<"DNS decoding errors from us: "<<s_wednserrors<<", from original: "<<s_origdnserrors<<", exact duplicates from client: "<<s_duplicates<<endl<<endl;
+  printStats(origWaitingFor, weWaitingFor);
 
   pruneQids();
 
@@ -600,6 +606,7 @@ try
   uint32_t packetLimit = g_vm["packet-limit"].as<uint32_t>();
 
   g_rdSelector = g_vm["recursive"].as<bool>();
+
   g_quiet = g_vm["quiet"].as<bool>();
 
   float speedup=g_vm["speedup"].as<float>();
@@ -653,6 +660,9 @@ try
     mental_time= mental_time + speedup * (now-then);
   }
  out:;
+  sleep(1);
+  receiveFromReference();
+  printStats();
 }
 catch(exception& e)
 {