Browse Source

[master] Fix a bug in perfdhcp in elapsed time calculation.

This fix was okayed on jabber. It solves the problem in elapsed time
calculation between two DHCP packets. If the timestamp for both packets
is equal, the elapsed time is now 0. Previously, an exception was thrown.
Marcin Siodelski 11 years ago
parent
commit
43c5b41435
2 changed files with 9 additions and 7 deletions
  1. 3 6
      tests/tools/perfdhcp/test_control.cc
  2. 6 1
      tests/tools/perfdhcp/test_control.h

+ 3 - 6
tests/tools/perfdhcp/test_control.cc

@@ -1,4 +1,4 @@
-// Copyright (C) 2012-2013 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2014 Internet Systems Consortium, Inc. ("ISC")
 //
 // Permission to use, copy, modify, and/or distribute this software for any
 // purpose with or without fee is hereby granted, provided that the above
@@ -564,11 +564,8 @@ TestControl::getElapsedTime(const T& pkt1, const T& pkt2) {
         isc_throw(InvalidOperation, "packet timestamp not set");;
     }
     time_period elapsed_period(pkt1_time, pkt2_time);
-    if (elapsed_period.is_null()) {
-        isc_throw(InvalidOperation, "unable to calculate time elapsed"
-                  " between packets");
-    }
-    return(elapsed_period.length().total_milliseconds());
+    return (elapsed_period.is_null() ? 0 :
+            elapsed_period.length().total_milliseconds());
 }
 
 int

+ 6 - 1
tests/tools/perfdhcp/test_control.h

@@ -1,4 +1,4 @@
-// Copyright (C) 2012-2013 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2014 Internet Systems Consortium, Inc. ("ISC")
 //
 // Permission to use, copy, modify, and/or distribute this software for any
 // purpose with or without fee is hereby granted, provided that the above
@@ -943,6 +943,11 @@ protected:
 
     /// \brief Calculate elapsed time between two packets.
     ///
+    /// This function calculates the time elapsed between two packets. If
+    /// the timestamp of the pkt2 is greater than timestamp of the pkt1,
+    /// the positive value is returned. If the pkt2 timestamp is equal or
+    /// less than pkt1 timestamp, 0 is returned.
+    ///
     /// \tparam T Pkt4Ptr or Pkt6Ptr class.
     /// \param pkt1 first packet.
     /// \param pkt2 second packet.