additional minor cleanup to the TimeUtil code
[folly.git] / folly / io / async / test / TimeUtil.h
index d28df919ac9c70635a82b519718bc7202608cfa3..7b41d1e4d66f20367b1e66957a22eb0bc7dcf2f5 100644 (file)
 
 namespace folly {
 
+/**
+ * A class for tracking time durations in test code.
+ *
+ * This is primarily useful for testing timeout functionality.  When comparing
+ * the differences between two TimePoints, it can exclude time spent waiting on
+ * the OS scheduler.  This helps avoid spurious test failures when timeouts are
+ * exceeded by longer than expected simply because the underlying system was
+ * busy and could not schedule this thread in time.
+ */
 class TimePoint {
  public:
   explicit TimePoint(bool set = true)
@@ -39,19 +48,19 @@ class TimePoint {
             timeWaiting_.count() == 0);
   }
 
-  std::chrono::system_clock::time_point getTime() const {
+  std::chrono::steady_clock::time_point getTime() const {
     return timeStart_;
   }
 
-  std::chrono::system_clock::time_point getTimeStart() const {
+  std::chrono::steady_clock::time_point getTimeStart() const {
     return timeStart_;
   }
 
-  std::chrono::system_clock::time_point getTimeEnd() const {
+  std::chrono::steady_clock::time_point getTimeEnd() const {
     return timeStart_;
   }
 
-  std::chrono::milliseconds getTimeWaiting() const {
+  std::chrono::nanoseconds getTimeWaiting() const {
     return timeWaiting_;
   }
 
@@ -60,19 +69,18 @@ class TimePoint {
   }
 
  private:
-  std::chrono::system_clock::time_point timeStart_;
-  std::chrono::system_clock::time_point timeEnd_;
-  std::chrono::milliseconds timeWaiting_{0};
+  std::chrono::steady_clock::time_point timeStart_;
+  std::chrono::steady_clock::time_point timeEnd_;
+  std::chrono::nanoseconds timeWaiting_{0};
   pid_t tid_;
 };
 
 std::ostream& operator<<(std::ostream& os, const TimePoint& timePoint);
 
-bool checkTimeout(const TimePoint& start,
-                  const TimePoint& end,
-                  std::chrono::milliseconds expectedMS,
-                  bool allowSmaller,
-                  std::chrono::milliseconds tolerance =
-                  std::chrono::milliseconds(5));
-
+bool checkTimeout(
+    const TimePoint& start,
+    const TimePoint& end,
+    std::chrono::nanoseconds expected,
+    bool allowSmaller,
+    std::chrono::nanoseconds tolerance = std::chrono::milliseconds(5));
 }