Add possibility to get the last processed RTT from the call stats class (to be used by RTP/RTCP module).
R=mflodman@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/2383004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5139 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video_engine/call_stats_unittest.cc b/webrtc/video_engine/call_stats_unittest.cc
index e5b23611..f504094 100644
--- a/webrtc/video_engine/call_stats_unittest.cc
+++ b/webrtc/video_engine/call_stats_unittest.cc
@@ -41,15 +41,24 @@
TEST_F(CallStatsTest, AddAndTriggerCallback) {
MockStatsObserver stats_observer;
- RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+ RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
call_stats_->RegisterStatsObserver(&stats_observer);
TickTime::AdvanceFakeClock(1000);
+ EXPECT_EQ(0U, rtcp_rtt_stats->LastProcessedRtt());
- uint32_t rtt = 25;
- rtcp_observer->OnRttUpdate(rtt);
- EXPECT_CALL(stats_observer, OnRttUpdate(rtt))
+ const uint32_t kRtt = 25;
+ rtcp_rtt_stats->OnRttUpdate(kRtt);
+ EXPECT_CALL(stats_observer, OnRttUpdate(kRtt))
.Times(1);
call_stats_->Process();
+ EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt());
+
+ const int kRttTimeOutMs = 1500 + 10;
+ TickTime::AdvanceFakeClock(kRttTimeOutMs);
+ EXPECT_CALL(stats_observer, OnRttUpdate(_))
+ .Times(0);
+ call_stats_->Process();
+ EXPECT_EQ(0U, rtcp_rtt_stats->LastProcessedRtt());
call_stats_->DeregisterStatsObserver(&stats_observer);
}
@@ -57,8 +66,8 @@
TEST_F(CallStatsTest, ProcessTime) {
MockStatsObserver stats_observer;
call_stats_->RegisterStatsObserver(&stats_observer);
- RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
- rtcp_observer->OnRttUpdate(100);
+ RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
+ rtcp_rtt_stats->OnRttUpdate(100);
// Time isn't updated yet.
EXPECT_CALL(stats_observer, OnRttUpdate(_))
@@ -73,7 +82,7 @@
// Advance clock just too little to get an update.
TickTime::AdvanceFakeClock(999);
- rtcp_observer->OnRttUpdate(100);
+ rtcp_rtt_stats->OnRttUpdate(100);
EXPECT_CALL(stats_observer, OnRttUpdate(_))
.Times(0);
call_stats_->Process();
@@ -98,9 +107,9 @@
call_stats_->RegisterStatsObserver(&stats_observer_2);
call_stats_->RegisterStatsObserver(&stats_observer_2);
- RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+ RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
uint32_t rtt = 100;
- rtcp_observer->OnRttUpdate(rtt);
+ rtcp_rtt_stats->OnRttUpdate(rtt);
// Verify both observers are updated.
TickTime::AdvanceFakeClock(1000);
@@ -113,7 +122,7 @@
// Deregister the second observer and verify update is only sent to the first
// observer.
call_stats_->DeregisterStatsObserver(&stats_observer_2);
- rtcp_observer->OnRttUpdate(rtt);
+ rtcp_rtt_stats->OnRttUpdate(rtt);
TickTime::AdvanceFakeClock(1000);
EXPECT_CALL(stats_observer_1, OnRttUpdate(rtt))
.Times(1);
@@ -123,7 +132,7 @@
// Deregister the first observer.
call_stats_->DeregisterStatsObserver(&stats_observer_1);
- rtcp_observer->OnRttUpdate(rtt);
+ rtcp_rtt_stats->OnRttUpdate(rtt);
TickTime::AdvanceFakeClock(1000);
EXPECT_CALL(stats_observer_1, OnRttUpdate(rtt))
.Times(0);
@@ -136,14 +145,14 @@
TEST_F(CallStatsTest, ChangeRtt) {
MockStatsObserver stats_observer;
call_stats_->RegisterStatsObserver(&stats_observer);
- RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+ RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
// Advance clock to be ready for an update.
TickTime::AdvanceFakeClock(1000);
// Set a first value and verify the callback is triggered.
const uint32_t first_rtt = 100;
- rtcp_observer->OnRttUpdate(first_rtt);
+ rtcp_rtt_stats->OnRttUpdate(first_rtt);
EXPECT_CALL(stats_observer, OnRttUpdate(first_rtt))
.Times(1);
call_stats_->Process();
@@ -151,7 +160,7 @@
// Increase rtt and verify the new value is reported.
TickTime::AdvanceFakeClock(1000);
const uint32_t high_rtt = first_rtt + 20;
- rtcp_observer->OnRttUpdate(high_rtt);
+ rtcp_rtt_stats->OnRttUpdate(high_rtt);
EXPECT_CALL(stats_observer, OnRttUpdate(high_rtt))
.Times(1);
call_stats_->Process();
@@ -161,13 +170,13 @@
// in the callback.
TickTime::AdvanceFakeClock(1000);
const uint32_t low_rtt = first_rtt - 20;
- rtcp_observer->OnRttUpdate(low_rtt);
+ rtcp_rtt_stats->OnRttUpdate(low_rtt);
EXPECT_CALL(stats_observer, OnRttUpdate(high_rtt))
.Times(1);
call_stats_->Process();
- // Advance time to make the high report invalid, the lower rtt should no be in
- // the callback.
+ // Advance time to make the high report invalid, the lower rtt should now be
+ // in the callback.
TickTime::AdvanceFakeClock(1000);
EXPECT_CALL(stats_observer, OnRttUpdate(low_rtt))
.Times(1);