Fix for rare read of uninitialized value in remote estimate test.

Bug: webrtc:10949
Change-Id: Ibddf5026eac7beff067f53c8c221aa1b41c5d50b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151902
Reviewed-by: Yves Gerey <yvesg@google.com>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29098}
This commit is contained in:
Sebastian Jansson 2019-09-06 12:46:37 +02:00 committed by Commit Bot
parent 2b9dba3d9c
commit e15c10a02a
2 changed files with 18 additions and 9 deletions

View File

@ -10,6 +10,7 @@
#include "test/network/traffic_route.h"
#include <algorithm>
#include <utility>
#include "absl/memory/memory.h"
@ -86,10 +87,12 @@ void TrafficRoute::SendPacket(size_t packet_size) {
}
void TrafficRoute::SendPacket(size_t packet_size, uint16_t dest_port) {
rtc::CopyOnWriteBuffer data(packet_size);
std::fill_n(data.data<uint8_t>(), data.size(), 0);
receiver_->OnPacketReceived(EmulatedIpPacket(
/*from=*/rtc::SocketAddress(),
rtc::SocketAddress(endpoint_->GetPeerLocalAddress(), dest_port),
rtc::CopyOnWriteBuffer(packet_size), clock_->CurrentTime()));
rtc::SocketAddress(endpoint_->GetPeerLocalAddress(), dest_port), data,
clock_->CurrentTime()));
}
} // namespace test

View File

@ -67,7 +67,7 @@ TEST(RemoteEstimateEndToEnd, OfferedCapabilityIsInAnswer) {
}
offer_exchange_done.Set();
});
EXPECT_TRUE(s.WaitAndProcess(&offer_exchange_done));
RTC_CHECK(s.WaitAndProcess(&offer_exchange_done));
}
TEST(RemoteEstimateEndToEnd, AudioUsesAbsSendTimeExtension) {
@ -100,16 +100,22 @@ TEST(RemoteEstimateEndToEnd, AudioUsesAbsSendTimeExtension) {
kRtpExtensionAbsoluteSendTime));
offer_exchange_done.Set();
});
EXPECT_TRUE(s.WaitAndProcess(&offer_exchange_done));
RTC_CHECK(s.WaitAndProcess(&offer_exchange_done));
send_node->router()->SetWatcher(
[extension_map, &received_abs_send_time](const EmulatedIpPacket& packet) {
auto extensions = GetRtpPacketExtensions(packet.data, extension_map);
if (extensions) {
EXPECT_TRUE(extensions->hasAbsoluteSendTime);
received_abs_send_time.Set();
// The dummy packets used by the fake signaling are filled with 0. We
// want to ignore those and we can do that on the basis that the first
// byte of RTP packets are guaranteed to not be 0.
// TODO(srte): Find a more elegant way to check for RTP traffic.
if (packet.size() > 1 && packet.cdata()[0] != 0) {
auto extensions = GetRtpPacketExtensions(packet.data, extension_map);
if (extensions) {
EXPECT_TRUE(extensions->hasAbsoluteSendTime);
received_abs_send_time.Set();
}
}
});
EXPECT_TRUE(s.WaitAndProcess(&received_abs_send_time));
RTC_CHECK(s.WaitAndProcess(&received_abs_send_time));
}
} // namespace test
} // namespace webrtc