Chromium Code Reviews

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc

Issue 1491843004: [rtp_rtcp] RTT intermidiate calculation use ntp time instead of milliseconds. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase & reduced RtpRtcpImplUnittest to more reasanable expectations Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index e0c70c2b5cd08a1f5c61581cede0c8df7cbef4f4..07a3deb58bab76148d64522d8dbea9c801089348 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -36,7 +36,8 @@
#include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h"
-#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
+#include "webrtc/modules/rtp_rtcp/source/time_util.h"
+#include "webrtc/system_wrappers/include/ntp_time.h"
namespace webrtc {
@@ -180,6 +181,42 @@ TEST_F(RtcpReceiverTest, InjectSrPacketFromExpectedPeer) {
EXPECT_EQ(kRtcpSr, rtcp_packet_info_.rtcpPacketTypeFlags);
}
+TEST_F(RtcpReceiverTest, InjectSrPacketCalculatesRTT) {
+ Random r(0x0123456789abcdef);
+ const uint32_t kSenderSsrc = r.Rand(0x00000001u, 0xfffffffeu);
+ const uint32_t kRemoteSsrc = r.Rand(0x00000001u, 0xfffffffeu);
+ const int64_t kRttMs = r.Rand(1, 18 * 3600 * 1000);
+ const uint32_t kDelayNtp = r.Rand<uint32_t>();
+ const uint32_t kDelayMs = CompactNtpIntervalToMs(kDelayNtp);
+
+ rtcp_receiver_->SetRemoteSSRC(kSenderSsrc);
+ std::set<uint32_t> ssrcs;
+ ssrcs.insert(kRemoteSsrc);
+ rtcp_receiver_->SetSsrcs(kRemoteSsrc, ssrcs);
+
+ int64_t rtt_ms = 0;
+ EXPECT_EQ(
+ -1, rtcp_receiver_->RTT(kSenderSsrc, &rtt_ms, nullptr, nullptr, nullptr));
+
+ uint32_t sent_ntp = CompactNtp(NtpTime(system_clock_));
+ system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs);
+
+ rtcp::SenderReport sr;
+ sr.From(kSenderSsrc);
+ rtcp::ReportBlock block;
+ block.To(kRemoteSsrc);
+ block.WithLastSr(sent_ntp);
+ block.WithDelayLastSr(kDelayNtp);
+ sr.WithReportBlock(block);
+
+ rtc::scoped_ptr<rtcp::RawPacket> packet = sr.Build();
+ EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
+
+ EXPECT_EQ(
+ 0, rtcp_receiver_->RTT(kSenderSsrc, &rtt_ms, nullptr, nullptr, nullptr));
+ EXPECT_NEAR(kRttMs, rtt_ms, 1);
stefan-webrtc 2016/02/03 10:03:11 What's the reason we can't get an exact rtt here?
danilchap 2016/02/03 13:27:11 Rounding. if rtt would be stored and returned in 1
stefan-webrtc 2016/02/22 16:14:35 Acknowledged.
+}
+
TEST_F(RtcpReceiverTest, InjectRrPacket) {
const uint32_t kSenderSsrc = 0x10203;
rtcp::ReceiverReport rr;
@@ -663,7 +700,7 @@ TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithSubBlock) {
rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
rtcp::Dlrr dlrr;
- dlrr.WithDlrrItem(kSourceSsrc, 0x12345, 0x67890);
+ dlrr.WithDlrrItem(kSourceSsrc, 0, 0x67890);
stefan-webrtc 2016/02/03 10:03:11 Could you explain these changes to me?
danilchap 2016/02/03 13:27:11 changed field is sent time. Before this cl it wasn
rtcp::ExtendedReports xr;
xr.From(0x2345);
xr.WithDlrr(dlrr);
@@ -681,9 +718,9 @@ TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithMultipleSubBlocks) {
rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
rtcp::Dlrr dlrr;
- dlrr.WithDlrrItem(kSourceSsrc + 1, 0x12345, 0x67890);
- dlrr.WithDlrrItem(kSourceSsrc + 2, 0x12345, 0x67890);
- dlrr.WithDlrrItem(kSourceSsrc, 0x12345, 0x67890);
+ dlrr.WithDlrrItem(kSourceSsrc + 1, 0, 0x67890);
+ dlrr.WithDlrrItem(kSourceSsrc + 2, 0, 0x67890);
+ dlrr.WithDlrrItem(kSourceSsrc, 0, 0x67890);
rtcp::ExtendedReports xr;
xr.From(0x2345);
xr.WithDlrr(dlrr);
@@ -702,7 +739,7 @@ TEST_F(RtcpReceiverTest, InjectExtendedReportsPacketWithMultipleReportBlocks) {
rtcp::Rrtr rrtr;
rtcp::Dlrr dlrr;
- dlrr.WithDlrrItem(kSourceSsrc, 0x12345, 0x67890);
+ dlrr.WithDlrrItem(kSourceSsrc, 0, 0x67890);
danilchap 2016/02/03 13:27:11 This test does check rtt wasn't estimated. So need
rtcp::VoipMetric metric;
metric.To(kSourceSsrc);
rtcp::ExtendedReports xr;
@@ -756,6 +793,32 @@ TEST_F(RtcpReceiverTest, TestXrRrRttInitiallyFalse) {
EXPECT_FALSE(rtcp_receiver_->GetAndResetXrRrRtt(&rtt_ms));
}
+TEST_F(RtcpReceiverTest, RttCalculatedAfterXrDlrr) {
+ Random rand(0x0123456789abcdef);
+ const uint32_t kSourceSsrc = rand.Rand(0x00000001u, 0xfffffffeu);
+ const uint32_t kRttMs = rand.Rand(1, 18 * 3600 * 1000);
+ const uint32_t kDelayNtp = rand.Rand<uint32_t>();
+ const uint32_t kDelayMs = CompactNtpIntervalToMs(kDelayNtp);
+ std::set<uint32_t> ssrcs;
+ ssrcs.insert(kSourceSsrc);
+ rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
+ NtpTime now(system_clock_);
+ uint32_t sent_ntp = CompactNtp(now);
+ system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs);
+
+ rtcp::Dlrr dlrr;
+ dlrr.WithDlrrItem(kSourceSsrc, sent_ntp, kDelayNtp);
+ rtcp::ExtendedReports xr;
+ xr.From(0x2345);
+ xr.WithDlrr(dlrr);
+ rtc::scoped_ptr<rtcp::RawPacket> packet = xr.Build();
+ EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
+
+ int64_t rtt_ms = 0;
+ EXPECT_TRUE(rtcp_receiver_->GetAndResetXrRrRtt(&rtt_ms));
+ EXPECT_NEAR(kRttMs, rtt_ms, 1);
+}
stefan-webrtc 2016/02/03 10:03:11 Maybe we can reuse a few lines from the other test
danilchap 2016/02/03 13:27:11 Do not want to think about test improvements in th
+
TEST_F(RtcpReceiverTest, LastReceivedXrReferenceTimeInfoInitiallyFalse) {
RtcpReceiveTimeInfo info;
EXPECT_FALSE(rtcp_receiver_->LastReceivedXrReferenceTimeInfo(&info));
@@ -764,8 +827,7 @@ TEST_F(RtcpReceiverTest, LastReceivedXrReferenceTimeInfoInitiallyFalse) {
TEST_F(RtcpReceiverTest, GetLastReceivedExtendedReportsReferenceTimeInfo) {
const uint32_t kSenderSsrc = 0x123456;
const NtpTime kNtp(0x10203, 0x40506);
- const uint32_t kNtpMid =
- RTCPUtility::MidNtp(kNtp.seconds(), kNtp.fractions());
+ const uint32_t kNtpMid = CompactNtp(kNtp);
rtcp::Rrtr rrtr;
rrtr.WithNtp(kNtp);

Powered by Google App Engine