From 9ddd72989aff3b44b8ddebe2a923b4fa0fa185af Mon Sep 17 00:00:00 2001 From: Evan Shrubsole Date: Wed, 9 Oct 2019 10:37:09 +0200 Subject: [PATCH] Add Duration field to EventRateCounter This can be better used to determine the length of test calls, rather than using the interval metric. Bug: webrtc:11017 Change-Id: I69f66fa750b061a7d010d591a718555e2b5b34b7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156087 Commit-Queue: Evan Shrubsole Reviewed-by: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#29413} --- test/scenario/BUILD.gn | 1 + test/scenario/performance_stats.cc | 7 ++++++ test/scenario/performance_stats.h | 1 + test/scenario/performance_stats_unittest.cc | 27 +++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 test/scenario/performance_stats_unittest.cc diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn index af1059d875..1df39fa44d 100644 --- a/test/scenario/BUILD.gn +++ b/test/scenario/BUILD.gn @@ -162,6 +162,7 @@ if (rtc_include_tests) { rtc_source_set("scenario_unittests") { testonly = true sources = [ + "performance_stats_unittest.cc", "scenario_unittest.cc", "stats_collection_unittest.cc", "video_stream_unittest.cc", diff --git a/test/scenario/performance_stats.cc b/test/scenario/performance_stats.cc index 0bbf86dc61..5f5b506c1f 100644 --- a/test/scenario/performance_stats.cc +++ b/test/scenario/performance_stats.cc @@ -40,6 +40,13 @@ double EventRateCounter::Rate() const { return (event_count_ - 1) / (last_time_ - first_time_).seconds(); } +TimeDelta EventRateCounter::TotalDuration() const { + if (first_time_.IsInfinite()) { + return TimeDelta::Zero(); + } + return last_time_ - first_time_; +} + double SampleStats::Max() { if (IsEmpty()) return INFINITY; diff --git a/test/scenario/performance_stats.h b/test/scenario/performance_stats.h index b1ff39802f..310ee8d7f9 100644 --- a/test/scenario/performance_stats.h +++ b/test/scenario/performance_stats.h @@ -99,6 +99,7 @@ class EventRateCounter { bool IsEmpty() const; double Rate() const; SampleStats& interval() { return interval_; } + TimeDelta TotalDuration() const; int Count() const { return event_count_; } private: diff --git a/test/scenario/performance_stats_unittest.cc b/test/scenario/performance_stats_unittest.cc new file mode 100644 index 0000000000..93ab1a109a --- /dev/null +++ b/test/scenario/performance_stats_unittest.cc @@ -0,0 +1,27 @@ +/* + * Copyright 2019 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#include "test/scenario/performance_stats.h" + +#include "test/gtest.h" + +namespace webrtc { +namespace test { + +TEST(EventRateCounter, ReturnsCorrectTotalDuration) { + EventRateCounter event_rate_counter; + EXPECT_EQ(event_rate_counter.TotalDuration(), TimeDelta::Zero()); + event_rate_counter.AddEvent(Timestamp::seconds(1)); + EXPECT_EQ(event_rate_counter.TotalDuration(), TimeDelta::Zero()); + event_rate_counter.AddEvent(Timestamp::seconds(2)); + EXPECT_EQ(event_rate_counter.TotalDuration(), TimeDelta::seconds(1)); +} + +} // namespace test +} // namespace webrtc