]> granicus.if.org Git - pdns/commitdiff
calidns: Add a --quiet option
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 11 May 2018 14:34:11 +0000 (16:34 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 11 May 2018 14:34:11 +0000 (16:34 +0200)
docs/manpages/calidns.1.rst
pdns/calidns.cc

index 96ee6fa3941e666630b3bdd45e87d40acbffc685..8ec977b8c82571ca06bba5fe14d3ca17c34585a6 100644 (file)
@@ -43,4 +43,6 @@ Options
 --minimum-success-rate <NUM>   Stop the test as soon as the success rate drops below this value,
                                in percent.
 --plot-file <FILE>             Write results to the specified file.
+--quiet                        Whether to run quietly, outputting only the maximum QPS reached.
+                               This option is mostly useful when used with --minimum-success-rate.
 --want-recursion               Set this flag to send queries with the Recursion Desired flag set.
index 90dbfa90cfc2438e016c028d7469912082ee2cb5..503e932de9f4cd817dbd7bf82016a25b2736b2e5 100644 (file)
@@ -227,6 +227,7 @@ try
     ("maximum-qps", po::value<uint32_t>(), "Stop incrementing once this rate has been reached, to provide a stable load")
     ("minimum-success-rate", po::value<double>()->default_value(0), "Stop the test as soon as the success rate drops below this value, in percent")
     ("plot-file", po::value<string>(), "Write results to the specific file")
+    ("quiet", "Whether to run quietly, outputting only the maximum QPS reached. This option is mostly useful when used with --minimum-success-rate")
     ("want-recursion", "Set the Recursion Desired flag on queries");
   po::options_description alloptions;
   po::options_description hidden("hidden options");
@@ -269,6 +270,7 @@ try
   }
 
   bool wantRecursion = g_vm.count("want-recursion");
+  bool beQuiet = g_vm.count("quiet");
   bool useECSFromFile = g_vm.count("ecs-from-file");
 
   double hitrate = g_vm["hitrate"].as<double>();
@@ -303,7 +305,9 @@ try
           return EXIT_FAILURE;
         }
 
-        cout<<"Adding ECS option to outgoing queries with random addresses from the "<<ecsRange.toString()<<" range"<<endl;
+        if (!beQuiet) {
+          cout<<"Adding ECS option to outgoing queries with random addresses from the "<<ecsRange.toString()<<" range"<<endl;
+        }
       }
     }
     catch (const NetmaskException& e) {
@@ -366,7 +370,9 @@ try
     unknown.emplace_back(std::make_shared<vector<uint8_t>>(packet));
   }
   random_shuffle(unknown.begin(), unknown.end());
-  cout<<"Generated "<<unknown.size()<<" ready to use queries"<<endl;
+  if (!beQuiet) {
+    cout<<"Generated "<<unknown.size()<<" ready to use queries"<<endl;
+  }
   
   vector<Socket*> sockets;
   ComboAddress dest;
@@ -401,13 +407,17 @@ try
 
   for(qps=qpsstart;;) {
     double seconds=1;
-    cout<<"Aiming at "<<qps<< "qps (RD="<<wantRecursion<<") for "<<seconds<<" seconds at cache hitrate "<<100.0*hitrate<<"%";
+    if (!beQuiet) {
+      cout<<"Aiming at "<<qps<< "qps (RD="<<wantRecursion<<") for "<<seconds<<" seconds at cache hitrate "<<100.0*hitrate<<"%";
+    }
     unsigned int misses=(1-hitrate)*qps*seconds;
     unsigned int total=qps*seconds;
     if (misses == 0) {
       misses = 1;
     }
-    cout<<", need "<<misses<<" misses, "<<total<<" queries, have "<<unknown.size()<<" unknown left!"<<endl;
+    if (!beQuiet) {
+      cout<<", need "<<misses<<" misses, "<<total<<" queries, have "<<unknown.size()<<" unknown left!"<<endl;
+    }
 
     if (misses > unknown.size()) {
       cerr<<"Not enough queries remaining (need at least "<<misses<<" and got "<<unknown.size()<<", please add more to the query file), exiting."<<endl;
@@ -434,14 +444,18 @@ try
     
     const auto udiff = dt.udiffNoReset();
     const auto realqps=toSend.size()/(udiff/1000000.0);
-    cout<<"Achieved "<<realqps<<" qps over "<< udiff/1000000.0<<" seconds"<<endl;
+    if (!beQuiet) {
+      cout<<"Achieved "<<realqps<<" qps over "<< udiff/1000000.0<<" seconds"<<endl;
+    }
     
     usleep(50000);
     const auto received = g_recvcounter.load();
     const auto udiffReceived = dt.udiff();
     const auto realReceivedQPS = received/(udiffReceived/1000000.0);
     double perc=received*100.0/toSend.size();
-    cout<<"Received "<<received<<" packets over "<< udiffReceived/1000000.0<<" seconds ("<<perc<<"%, adjusted received rate "<<realReceivedQPS<<" qps)"<<endl;
+     if (!beQuiet) {
+       cout<<"Received "<<received<<" packets over "<< udiffReceived/1000000.0<<" seconds ("<<perc<<"%, adjusted received rate "<<realReceivedQPS<<" qps)"<<endl;
+     }
 
     if (plot) {
       plot<<qps<<" "<<realqps<<" "<<perc<<" "<<received/(udiff/1000000.0)<<" " << 8*g_recvbytes.load()/(udiff/1000000.0)<<endl;
@@ -456,8 +470,13 @@ try
     }
 
     if (minimumSuccessRate > 0.0 && perc < minimumSuccessRate) {
-      cout<<"The latest success rate ("<<perc<<") dropped below the minimum success rate of "<<minimumSuccessRate<<", stopping."<<endl;
-      cout<<"The final rate reached before failing was "<<bestQPS<<" qps (best rate at 100% was "<<bestPerfectQPS<<" qps)"<<endl;
+      if (beQuiet) {
+        cout<<bestQPS<<endl;
+      }
+      else {
+        cout<<"The latest success rate ("<<perc<<") dropped below the minimum success rate of "<<minimumSuccessRate<<", stopping."<<endl;
+        cout<<"The final rate reached before failing was "<<bestQPS<<" qps (best rate at 100% was "<<bestPerfectQPS<<" qps)"<<endl;
+      }
       break;
     }