Fix CallStatsUnittests to update the RTT on the process thread (as in production).
Bug: webrtc:10848 Change-Id: Ib56ba887ef148188c902dee680b29809ae8cb8f6 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148064 Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Commit-Queue: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28768}
This commit is contained in:
parent
4d7c405599
commit
c89468a4b7
@ -46,6 +46,13 @@ class CallStatsTest : public ::testing::Test {
|
||||
process_thread_->DeRegisterModule(&call_stats_);
|
||||
}
|
||||
|
||||
// Queues an rtt update call on the process thread.
|
||||
void AsyncSimulateRttUpdate(int64_t rtt) {
|
||||
RtcpRttStats* rtcp_rtt_stats = &call_stats_;
|
||||
process_thread_->PostTask(ToQueuedTask(
|
||||
[rtcp_rtt_stats, rtt] { rtcp_rtt_stats->OnRttUpdate(rtt); }));
|
||||
}
|
||||
|
||||
protected:
|
||||
std::unique_ptr<ProcessThread> process_thread_{
|
||||
ProcessThread::Create("CallStats")};
|
||||
@ -67,9 +74,10 @@ TEST_F(CallStatsTest, AddAndTriggerCallback) {
|
||||
call_stats_.RegisterStatsObserver(&stats_observer);
|
||||
EXPECT_EQ(-1, rtcp_rtt_stats->LastProcessedRtt());
|
||||
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
|
||||
EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt());
|
||||
|
||||
call_stats_.DeregisterStatsObserver(&stats_observer);
|
||||
@ -106,7 +114,7 @@ TEST_F(CallStatsTest, ProcessTime) {
|
||||
|
||||
call_stats_.RegisterStatsObserver(&stats_observer);
|
||||
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
|
||||
call_stats_.DeregisterStatsObserver(&stats_observer);
|
||||
@ -123,7 +131,6 @@ TEST_F(CallStatsTest, MultipleObservers) {
|
||||
call_stats_.RegisterStatsObserver(&stats_observer_2);
|
||||
call_stats_.RegisterStatsObserver(&stats_observer_2);
|
||||
|
||||
RtcpRttStats* rtcp_rtt_stats = &call_stats_;
|
||||
static constexpr const int64_t kRtt = 100;
|
||||
|
||||
// Verify both observers are updated.
|
||||
@ -137,7 +144,7 @@ TEST_F(CallStatsTest, MultipleObservers) {
|
||||
.Times(AnyNumber())
|
||||
.WillOnce(InvokeWithoutArgs([&ev2] { ev2.Set(); }))
|
||||
.WillRepeatedly(Return());
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
ASSERT_TRUE(ev1.Wait(100));
|
||||
ASSERT_TRUE(ev2.Wait(100));
|
||||
|
||||
@ -150,7 +157,7 @@ TEST_F(CallStatsTest, MultipleObservers) {
|
||||
.WillOnce(InvokeWithoutArgs([&ev1] { ev1.Set(); }))
|
||||
.WillRepeatedly(Return());
|
||||
EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0);
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
ASSERT_TRUE(ev1.Wait(100));
|
||||
|
||||
// Deregister the first observer.
|
||||
@ -159,7 +166,7 @@ TEST_F(CallStatsTest, MultipleObservers) {
|
||||
// Now make sure we don't get any callbacks.
|
||||
EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(0);
|
||||
EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0);
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
|
||||
// Force a call to Process().
|
||||
process_thread_->WakeUp(&call_stats_);
|
||||
@ -232,7 +239,7 @@ TEST_F(CallStatsTest, ChangeRtt) {
|
||||
.WillOnce(InvokeWithoutArgs([&event] { event.Set(); }));
|
||||
|
||||
// Trigger the first rtt value and set off the chain of callbacks.
|
||||
rtcp_rtt_stats->OnRttUpdate(kFirstRtt); // Reported at T0 (0ms).
|
||||
AsyncSimulateRttUpdate(kFirstRtt); // Reported at T0 (0ms).
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
|
||||
call_stats_.DeregisterStatsObserver(&stats_observer);
|
||||
@ -279,7 +286,7 @@ TEST_F(CallStatsTest, LastProcessedRtt) {
|
||||
// Set a first values and verify that LastProcessedRtt initially returns the
|
||||
// average rtt.
|
||||
fake_clock_.AdvanceTimeMilliseconds(CallStats::kUpdateIntervalMs);
|
||||
rtcp_rtt_stats->OnRttUpdate(kRttLow);
|
||||
AsyncSimulateRttUpdate(kRttLow);
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
EXPECT_EQ(kAvgRtt2, rtcp_rtt_stats->LastProcessedRtt());
|
||||
|
||||
@ -290,18 +297,17 @@ TEST_F(CallStatsTest, ProducesHistogramMetrics) {
|
||||
metrics::Reset();
|
||||
rtc::Event event;
|
||||
static constexpr const int64_t kRtt = 123;
|
||||
RtcpRttStats* rtcp_rtt_stats = &call_stats_;
|
||||
MockStatsObserver stats_observer;
|
||||
call_stats_.RegisterStatsObserver(&stats_observer);
|
||||
EXPECT_CALL(stats_observer, OnRttUpdate(kRtt, kRtt))
|
||||
.Times(AnyNumber())
|
||||
.WillOnce(InvokeWithoutArgs([&event] { event.Set(); }))
|
||||
.WillRepeatedly(Return());
|
||||
.WillRepeatedly(InvokeWithoutArgs([&event] { event.Set(); }));
|
||||
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds *
|
||||
CallStats::kUpdateIntervalMs);
|
||||
rtcp_rtt_stats->OnRttUpdate(kRtt);
|
||||
AsyncSimulateRttUpdate(kRtt);
|
||||
EXPECT_TRUE(event.Wait(1000));
|
||||
|
||||
call_stats_.DeregisterStatsObserver(&stats_observer);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user