Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: media/cast/net/rtcp/rtcp_unittest.cc

Issue 1878883003: Refactor: simplify interface of SenderRtcpSession and CastTransport. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/cast/net/rtcp/rtcp_defines.h ('k') | media/cast/net/rtcp/sender_rtcp_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 13 matching lines...) Expand all
24 24
25 namespace { 25 namespace {
26 26
27 media::cast::RtcpTimeData CreateRtcpTimeData(base::TimeTicks now) { 27 media::cast::RtcpTimeData CreateRtcpTimeData(base::TimeTicks now) {
28 media::cast::RtcpTimeData ret; 28 media::cast::RtcpTimeData ret;
29 ret.timestamp = now; 29 ret.timestamp = now;
30 media::cast::ConvertTimeTicksToNtp(now, &ret.ntp_seconds, &ret.ntp_fraction); 30 media::cast::ConvertTimeTicksToNtp(now, &ret.ntp_seconds, &ret.ntp_fraction);
31 return ret; 31 return ret;
32 } 32 }
33 33
34 } // namespace
35
36 using testing::_; 34 using testing::_;
37 35
38 static const uint32_t kSenderSsrc = 0x10203; 36 static const uint32_t kSenderSsrc = 0x10203;
39 static const uint32_t kReceiverSsrc = 0x40506; 37 static const uint32_t kReceiverSsrc = 0x40506;
40 static const int kInitialReceiverClockOffsetSeconds = -5; 38 static const int kInitialReceiverClockOffsetSeconds = -5;
41 static const uint16_t kTargetDelayMs = 100; 39 static const uint16_t kTargetDelayMs = 100;
42 40
43 class FakeRtcpTransport : public PacedPacketSender { 41 class FakeRtcpTransport : public PacedPacketSender {
44 public: 42 public:
45 explicit FakeRtcpTransport(base::SimpleTestTickClock* clock) 43 explicit FakeRtcpTransport(base::SimpleTestTickClock* clock)
(...skipping 22 matching lines...) Expand all
68 void CancelSendingPacket(const PacketKey& packet_key) final {} 66 void CancelSendingPacket(const PacketKey& packet_key) final {}
69 67
70 private: 68 private:
71 base::SimpleTestTickClock* const clock_; 69 base::SimpleTestTickClock* const clock_;
72 base::TimeDelta packet_delay_; 70 base::TimeDelta packet_delay_;
73 RtcpSession* rtcp_session_; // RTCP destination. 71 RtcpSession* rtcp_session_; // RTCP destination.
74 72
75 DISALLOW_COPY_AND_ASSIGN(FakeRtcpTransport); 73 DISALLOW_COPY_AND_ASSIGN(FakeRtcpTransport);
76 }; 74 };
77 75
78 class RtcpTest : public ::testing::Test { 76 } // namespace
77
78 class RtcpTest : public ::testing::Test, public RtcpObserver {
79 protected: 79 protected:
80 RtcpTest() 80 RtcpTest()
81 : sender_clock_(new base::SimpleTestTickClock()), 81 : sender_clock_(new base::SimpleTestTickClock()),
82 receiver_clock_(new test::SkewedTickClock(sender_clock_.get())), 82 receiver_clock_(new test::SkewedTickClock(sender_clock_.get())),
83 rtp_sender_pacer_(sender_clock_.get()), 83 rtp_sender_pacer_(sender_clock_.get()),
84 rtp_receiver_pacer_(sender_clock_.get()), 84 rtp_receiver_pacer_(sender_clock_.get()),
85 rtcp_at_rtp_sender_( 85 rtcp_at_rtp_sender_(sender_clock_.get(),
86 base::Bind(&RtcpTest::OnReceivedCastFeedback, 86 &rtp_sender_pacer_,
87 base::Unretained(this)), 87 this,
88 base::Bind(&RtcpTest::OnMeasuredRoundTripTime, 88 kSenderSsrc,
89 base::Unretained(this)), 89 kReceiverSsrc),
90 base::Bind(&RtcpTest::OnReceivedLogs, base::Unretained(this)),
91 base::Bind(&RtcpTest::OnReceivedPli, base::Unretained(this)),
92 sender_clock_.get(),
93 &rtp_sender_pacer_,
94 kSenderSsrc,
95 kReceiverSsrc),
96 rtcp_at_rtp_receiver_(receiver_clock_.get(), 90 rtcp_at_rtp_receiver_(receiver_clock_.get(),
97 kReceiverSsrc, 91 kReceiverSsrc,
98 kSenderSsrc), 92 kSenderSsrc),
99 received_pli_(false) { 93 received_pli_(false) {
100 sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 94 sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
101 receiver_clock_->SetSkew( 95 receiver_clock_->SetSkew(
102 1.0, // No skew. 96 1.0, // No skew.
103 base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds)); 97 base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds));
104 98
105 rtp_sender_pacer_.set_rtcp_destination(&rtcp_at_rtp_receiver_); 99 rtp_sender_pacer_.set_rtcp_destination(&rtcp_at_rtp_receiver_);
106 rtp_receiver_pacer_.set_rtcp_destination(&rtcp_at_rtp_sender_); 100 rtp_receiver_pacer_.set_rtcp_destination(&rtcp_at_rtp_sender_);
107 } 101 }
108 102
109 ~RtcpTest() override {} 103 ~RtcpTest() override {}
110 104
111 void OnReceivedCastFeedback(const RtcpCastMessage& cast_message) { 105 // RtcpObserver implementation.
106 void OnReceivedCastMessage(const RtcpCastMessage& cast_message) override {
112 last_cast_message_ = cast_message; 107 last_cast_message_ = cast_message;
113 } 108 }
114 109 void OnReceivedRtt(base::TimeDelta round_trip_time) override {
115 void OnMeasuredRoundTripTime(base::TimeDelta rtt) { 110 current_round_trip_time_ = round_trip_time;
116 current_round_trip_time_ = rtt;
117 } 111 }
118 112 void OnReceivedReceiverLog(const RtcpReceiverLogMessage& logs) override {
119 void OnReceivedLogs(const RtcpReceiverLogMessage& receiver_logs) {
120 RtcpReceiverLogMessage().swap(last_logs_); 113 RtcpReceiverLogMessage().swap(last_logs_);
121 114
122 // Make a copy of the logs. 115 // Make a copy of the logs.
123 for (const RtcpReceiverFrameLogMessage& frame_log_msg : receiver_logs) { 116 for (const RtcpReceiverFrameLogMessage& frame_log_msg : logs) {
124 last_logs_.push_back( 117 last_logs_.push_back(
125 RtcpReceiverFrameLogMessage(frame_log_msg.rtp_timestamp_)); 118 RtcpReceiverFrameLogMessage(frame_log_msg.rtp_timestamp_));
126 for (const RtcpReceiverEventLogMessage& event_log_msg : 119 for (const RtcpReceiverEventLogMessage& event_log_msg :
127 frame_log_msg.event_log_messages_) { 120 frame_log_msg.event_log_messages_) {
128 RtcpReceiverEventLogMessage event_log; 121 RtcpReceiverEventLogMessage event_log;
129 event_log.type = event_log_msg.type; 122 event_log.type = event_log_msg.type;
130 event_log.event_timestamp = event_log_msg.event_timestamp; 123 event_log.event_timestamp = event_log_msg.event_timestamp;
131 event_log.delay_delta = event_log_msg.delay_delta; 124 event_log.delay_delta = event_log_msg.delay_delta;
132 event_log.packet_id = event_log_msg.packet_id; 125 event_log.packet_id = event_log_msg.packet_id;
133 last_logs_.back().event_log_messages_.push_back(event_log); 126 last_logs_.back().event_log_messages_.push_back(event_log);
134 } 127 }
135 } 128 }
136 } 129 }
137 130
131 void OnReceivedPli() override { received_pli_ = true; }
132
138 PacketRef BuildRtcpPacketFromRtpReceiver( 133 PacketRef BuildRtcpPacketFromRtpReceiver(
139 const RtcpTimeData& time_data, 134 const RtcpTimeData& time_data,
140 const RtcpCastMessage* cast_message, 135 const RtcpCastMessage* cast_message,
141 const RtcpPliMessage* pli_message, 136 const RtcpPliMessage* pli_message,
142 base::TimeDelta target_delay, 137 base::TimeDelta target_delay,
143 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, 138 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events,
144 const RtpReceiverStatistics* rtp_receiver_statistics) { 139 const RtpReceiverStatistics* rtp_receiver_statistics) {
145 RtcpBuilder builder(rtcp_at_rtp_receiver_.local_ssrc()); 140 RtcpBuilder builder(rtcp_at_rtp_receiver_.local_ssrc());
146 builder.Start(); 141 builder.Start();
147 RtcpReceiverReferenceTimeReport rrtr; 142 RtcpReceiverReferenceTimeReport rrtr;
(...skipping 27 matching lines...) Expand all
175 } 170 }
176 if (cast_message) 171 if (cast_message)
177 builder.AddCast(*cast_message, target_delay); 172 builder.AddCast(*cast_message, target_delay);
178 if (pli_message) 173 if (pli_message)
179 builder.AddPli(*pli_message); 174 builder.AddPli(*pli_message);
180 if (rtcp_events) 175 if (rtcp_events)
181 builder.AddReceiverLog(*rtcp_events); 176 builder.AddReceiverLog(*rtcp_events);
182 return builder.Finish(); 177 return builder.Finish();
183 } 178 }
184 179
185 void OnReceivedPli() { received_pli_ = true; }
186
187 std::unique_ptr<base::SimpleTestTickClock> sender_clock_; 180 std::unique_ptr<base::SimpleTestTickClock> sender_clock_;
188 std::unique_ptr<test::SkewedTickClock> receiver_clock_; 181 std::unique_ptr<test::SkewedTickClock> receiver_clock_;
189 FakeRtcpTransport rtp_sender_pacer_; 182 FakeRtcpTransport rtp_sender_pacer_;
190 FakeRtcpTransport rtp_receiver_pacer_; 183 FakeRtcpTransport rtp_receiver_pacer_;
191 SenderRtcpSession rtcp_at_rtp_sender_; 184 SenderRtcpSession rtcp_at_rtp_sender_;
192 ReceiverRtcpSession rtcp_at_rtp_receiver_; 185 ReceiverRtcpSession rtcp_at_rtp_receiver_;
193 186
194 base::TimeDelta current_round_trip_time_; 187 base::TimeDelta current_round_trip_time_;
195 RtcpCastMessage last_cast_message_; 188 RtcpCastMessage last_cast_message_;
196 RtcpReceiverLogMessage last_logs_; 189 RtcpReceiverLogMessage last_logs_;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // Only 24 bits of event timestamp sent on wire. 373 // Only 24 bits of event timestamp sent on wire.
381 uint32_t event_ts = 374 uint32_t event_ts =
382 (event.timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff; 375 (event.timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff;
383 uint32_t log_msg_ts = 376 uint32_t log_msg_ts =
384 (log_msg.event_timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff; 377 (log_msg.event_timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff;
385 EXPECT_EQ(log_msg_ts, event_ts); 378 EXPECT_EQ(log_msg_ts, event_ts);
386 } 379 }
387 380
388 } // namespace cast 381 } // namespace cast
389 } // namespace media 382 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/rtcp_defines.h ('k') | media/cast/net/rtcp/sender_rtcp_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698