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

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

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « media/cast/net/rtcp/rtcp_sender_unittest.cc ('k') | media/cast/net/rtcp/rtcp_utility.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/test/simple_test_tick_clock.h" 7 #include "base/test/simple_test_tick_clock.h"
8 #include "media/cast/cast_defines.h" 8 #include "media/cast/cast_defines.h"
9 #include "media/cast/cast_environment.h" 9 #include "media/cast/cast_environment.h"
10 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" 10 #include "media/cast/net/cast_transport_config.h"
11 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" 11 #include "media/cast/net/cast_transport_sender_impl.h"
12 #include "media/cast/rtcp/rtcp.h" 12 #include "media/cast/net/pacing/paced_sender.h"
13 #include "media/cast/rtcp/test_rtcp_packet_builder.h" 13 #include "media/cast/net/rtcp/mock_rtcp_receiver_feedback.h"
14 #include "media/cast/net/rtcp/mock_rtcp_sender_feedback.h"
15 #include "media/cast/net/rtcp/rtcp.h"
16 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h"
14 #include "media/cast/test/fake_single_thread_task_runner.h" 17 #include "media/cast/test/fake_single_thread_task_runner.h"
15 #include "media/cast/transport/cast_transport_config.h"
16 #include "media/cast/transport/cast_transport_sender_impl.h"
17 #include "media/cast/transport/pacing/paced_sender.h"
18 #include "testing/gmock/include/gmock/gmock.h" 18 #include "testing/gmock/include/gmock/gmock.h"
19 19
20 namespace media { 20 namespace media {
21 namespace cast { 21 namespace cast {
22 22
23 using testing::_; 23 using testing::_;
24 24
25 static const uint32 kSenderSsrc = 0x10203; 25 static const uint32 kSenderSsrc = 0x10203;
26 static const uint32 kReceiverSsrc = 0x40506; 26 static const uint32 kReceiverSsrc = 0x40506;
27 static const std::string kCName("test@10.1.1.1"); 27 static const std::string kCName("test@10.1.1.1");
28 static const uint32 kRtcpIntervalMs = 500; 28 static const uint32 kRtcpIntervalMs = 500;
29 static const int64 kAddedDelay = 123; 29 static const int64 kAddedDelay = 123;
30 static const int64 kAddedShortDelay = 100; 30 static const int64 kAddedShortDelay = 100;
31 31
32 class RtcpTestPacketSender : public transport::PacketSender { 32 class RtcpTestPacketSender : public PacketSender {
33 public: 33 public:
34 explicit RtcpTestPacketSender(base::SimpleTestTickClock* testing_clock) 34 explicit RtcpTestPacketSender(base::SimpleTestTickClock* testing_clock)
35 : drop_packets_(false), 35 : drop_packets_(false),
36 short_delay_(false), 36 short_delay_(false),
37 rtcp_receiver_(NULL), 37 rtcp_receiver_(NULL),
38 testing_clock_(testing_clock) {} 38 testing_clock_(testing_clock) {}
39 virtual ~RtcpTestPacketSender() {} 39 virtual ~RtcpTestPacketSender() {}
40 // Packet lists imply a RTP packet. 40 // Packet lists imply a RTP packet.
41 void set_rtcp_receiver(Rtcp* rtcp) { rtcp_receiver_ = rtcp; } 41 void set_rtcp_receiver(Rtcp* rtcp) { rtcp_receiver_ = rtcp; }
42 42
43 void set_short_delay() { short_delay_ = true; } 43 void set_short_delay() { short_delay_ = true; }
44 44
45 void set_drop_packets(bool drop_packets) { drop_packets_ = drop_packets; } 45 void set_drop_packets(bool drop_packets) { drop_packets_ = drop_packets; }
46 46
47 // A singular packet implies a RTCP packet. 47 // A singular packet implies a RTCP packet.
48 virtual bool SendPacket(transport::PacketRef packet, 48 virtual bool SendPacket(PacketRef packet,
49 const base::Closure& cb) OVERRIDE { 49 const base::Closure& cb) OVERRIDE {
50 if (short_delay_) { 50 if (short_delay_) {
51 testing_clock_->Advance( 51 testing_clock_->Advance(
52 base::TimeDelta::FromMilliseconds(kAddedShortDelay)); 52 base::TimeDelta::FromMilliseconds(kAddedShortDelay));
53 } else { 53 } else {
54 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(kAddedDelay)); 54 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(kAddedDelay));
55 } 55 }
56 if (drop_packets_) 56 if (drop_packets_)
57 return true; 57 return true;
58 58
59 rtcp_receiver_->IncomingRtcpPacket(&packet->data[0], packet->data.size()); 59 rtcp_receiver_->IncomingRtcpPacket(&packet->data[0], packet->data.size());
60 return true; 60 return true;
61 } 61 }
62 62
63 private: 63 private:
64 bool drop_packets_; 64 bool drop_packets_;
65 bool short_delay_; 65 bool short_delay_;
66 Rtcp* rtcp_receiver_; 66 Rtcp* rtcp_receiver_;
67 base::SimpleTestTickClock* testing_clock_; 67 base::SimpleTestTickClock* testing_clock_;
68 68
69 DISALLOW_COPY_AND_ASSIGN(RtcpTestPacketSender); 69 DISALLOW_COPY_AND_ASSIGN(RtcpTestPacketSender);
70 }; 70 };
71 71
72 class LocalRtcpTransport : public transport::PacedPacketSender { 72 class LocalRtcpTransport : public PacedPacketSender {
73 public: 73 public:
74 LocalRtcpTransport(scoped_refptr<CastEnvironment> cast_environment, 74 LocalRtcpTransport(scoped_refptr<CastEnvironment> cast_environment,
75 base::SimpleTestTickClock* testing_clock) 75 base::SimpleTestTickClock* testing_clock)
76 : drop_packets_(false), 76 : drop_packets_(false),
77 short_delay_(false), 77 short_delay_(false),
78 testing_clock_(testing_clock) {} 78 testing_clock_(testing_clock) {}
79 79
80 void set_rtcp_receiver(Rtcp* rtcp) { rtcp_ = rtcp; } 80 void set_rtcp_receiver(Rtcp* rtcp) { rtcp_ = rtcp; }
81 81
82 void set_short_delay() { short_delay_ = true; } 82 void set_short_delay() { short_delay_ = true; }
83 83
84 void set_drop_packets(bool drop_packets) { drop_packets_ = drop_packets; } 84 void set_drop_packets(bool drop_packets) { drop_packets_ = drop_packets; }
85 85
86 virtual bool SendRtcpPacket(uint32 ssrc, 86 virtual bool SendRtcpPacket(uint32 ssrc,
87 transport::PacketRef packet) OVERRIDE { 87 PacketRef packet) OVERRIDE {
88 if (short_delay_) { 88 if (short_delay_) {
89 testing_clock_->Advance( 89 testing_clock_->Advance(
90 base::TimeDelta::FromMilliseconds(kAddedShortDelay)); 90 base::TimeDelta::FromMilliseconds(kAddedShortDelay));
91 } else { 91 } else {
92 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(kAddedDelay)); 92 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(kAddedDelay));
93 } 93 }
94 if (drop_packets_) 94 if (drop_packets_)
95 return true; 95 return true;
96 96
97 rtcp_->IncomingRtcpPacket(&packet->data[0], packet->data.size()); 97 rtcp_->IncomingRtcpPacket(&packet->data[0], packet->data.size());
98 return true; 98 return true;
99 } 99 }
100 100
101 virtual bool SendPackets( 101 virtual bool SendPackets(
102 const transport::SendPacketVector& packets) OVERRIDE { 102 const SendPacketVector& packets) OVERRIDE {
103 return false; 103 return false;
104 } 104 }
105 105
106 virtual bool ResendPackets( 106 virtual bool ResendPackets(
107 const transport::SendPacketVector& packets, 107 const SendPacketVector& packets,
108 base::TimeDelta dedupe_window) OVERRIDE { 108 base::TimeDelta dedupe_window) OVERRIDE {
109 return false; 109 return false;
110 } 110 }
111 111
112 virtual void CancelSendingPacket( 112 virtual void CancelSendingPacket(
113 const transport::PacketKey& packet_key) OVERRIDE { 113 const PacketKey& packet_key) OVERRIDE {
114 } 114 }
115 115
116 private: 116 private:
117 bool drop_packets_; 117 bool drop_packets_;
118 bool short_delay_; 118 bool short_delay_;
119 Rtcp* rtcp_; 119 Rtcp* rtcp_;
120 base::SimpleTestTickClock* testing_clock_; 120 base::SimpleTestTickClock* testing_clock_;
121 scoped_refptr<CastEnvironment> cast_environment_; 121 scoped_refptr<CastEnvironment> cast_environment_;
122 122
123 DISALLOW_COPY_AND_ASSIGN(LocalRtcpTransport); 123 DISALLOW_COPY_AND_ASSIGN(LocalRtcpTransport);
124 }; 124 };
125 125
126 class RtcpPeer : public Rtcp { 126 class RtcpPeer : public Rtcp {
127 public: 127 public:
128 RtcpPeer(scoped_refptr<CastEnvironment> cast_environment, 128 RtcpPeer(scoped_refptr<CastEnvironment> cast_environment,
129 RtcpSenderFeedback* sender_feedback, 129 RtcpSenderFeedback* sender_feedback,
130 transport::CastTransportSender* const transport_sender, 130 CastTransportSender* const transport_sender,
131 transport::PacedPacketSender* paced_packet_sender, 131 PacedPacketSender* paced_packet_sender,
132 RtpReceiverStatistics* rtp_receiver_statistics, 132 RtpReceiverStatistics* rtp_receiver_statistics,
133 RtcpMode rtcp_mode, 133 RtcpMode rtcp_mode,
134 const base::TimeDelta& rtcp_interval, 134 const base::TimeDelta& rtcp_interval,
135 uint32 local_ssrc, 135 uint32 local_ssrc,
136 uint32 remote_ssrc, 136 uint32 remote_ssrc,
137 const std::string& c_name) 137 const std::string& c_name)
138 : Rtcp(cast_environment, 138 : Rtcp(cast_environment,
139 sender_feedback, 139 sender_feedback,
140 transport_sender, 140 transport_sender,
141 paced_packet_sender, 141 paced_packet_sender,
(...skipping 16 matching lines...) Expand all
158 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), 158 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)),
159 cast_environment_(new CastEnvironment( 159 cast_environment_(new CastEnvironment(
160 scoped_ptr<base::TickClock>(testing_clock_).Pass(), 160 scoped_ptr<base::TickClock>(testing_clock_).Pass(),
161 task_runner_, 161 task_runner_,
162 task_runner_, 162 task_runner_,
163 task_runner_)), 163 task_runner_)),
164 sender_to_receiver_(testing_clock_), 164 sender_to_receiver_(testing_clock_),
165 receiver_to_sender_(cast_environment_, testing_clock_) { 165 receiver_to_sender_(cast_environment_, testing_clock_) {
166 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 166 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
167 net::IPEndPoint dummy_endpoint; 167 net::IPEndPoint dummy_endpoint;
168 transport_sender_.reset(new transport::CastTransportSenderImpl( 168 transport_sender_.reset(new CastTransportSenderImpl(
169 NULL, 169 NULL,
170 testing_clock_, 170 testing_clock_,
171 dummy_endpoint, 171 dummy_endpoint,
172 base::Bind(&UpdateCastTransportStatus), 172 base::Bind(&UpdateCastTransportStatus),
173 transport::BulkRawEventsCallback(), 173 BulkRawEventsCallback(),
174 base::TimeDelta(), 174 base::TimeDelta(),
175 task_runner_, 175 task_runner_,
176 &sender_to_receiver_)); 176 &sender_to_receiver_));
177 transport::CastTransportRtpConfig config; 177 CastTransportRtpConfig config;
178 config.ssrc = kSenderSsrc; 178 config.ssrc = kSenderSsrc;
179 config.rtp_payload_type = 127; 179 config.rtp_payload_type = 127;
180 config.stored_frames = 1; 180 config.stored_frames = 1;
181 transport_sender_->InitializeAudio(config); 181 transport_sender_->InitializeAudio(config);
182 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); 182 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0);
183 } 183 }
184 184
185 virtual ~RtcpTest() {} 185 virtual ~RtcpTest() {}
186 186
187 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { 187 static void UpdateCastTransportStatus(CastTransportStatus status) {
188 bool result = (status == transport::TRANSPORT_AUDIO_INITIALIZED || 188 bool result = (status == TRANSPORT_AUDIO_INITIALIZED ||
189 status == transport::TRANSPORT_VIDEO_INITIALIZED); 189 status == TRANSPORT_VIDEO_INITIALIZED);
190 EXPECT_TRUE(result); 190 EXPECT_TRUE(result);
191 } 191 }
192 192
193 void RunTasks(int during_ms) { 193 void RunTasks(int during_ms) {
194 for (int i = 0; i < during_ms; ++i) { 194 for (int i = 0; i < during_ms; ++i) {
195 // Call process the timers every 1 ms. 195 // Call process the timers every 1 ms.
196 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); 196 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1));
197 task_runner_->RunTasks(); 197 task_runner_->RunTasks();
198 } 198 }
199 } 199 }
200 200
201 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 201 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
202 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 202 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
203 scoped_refptr<CastEnvironment> cast_environment_; 203 scoped_refptr<CastEnvironment> cast_environment_;
204 RtcpTestPacketSender sender_to_receiver_; 204 RtcpTestPacketSender sender_to_receiver_;
205 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; 205 scoped_ptr<CastTransportSenderImpl> transport_sender_;
206 LocalRtcpTransport receiver_to_sender_; 206 LocalRtcpTransport receiver_to_sender_;
207 MockRtcpSenderFeedback mock_sender_feedback_; 207 MockRtcpSenderFeedback mock_sender_feedback_;
208 208
209 DISALLOW_COPY_AND_ASSIGN(RtcpTest); 209 DISALLOW_COPY_AND_ASSIGN(RtcpTest);
210 }; 210 };
211 211
212 TEST_F(RtcpTest, TimeToSend) { 212 TEST_F(RtcpTest, TimeToSend) {
213 const base::TimeTicks start_time = testing_clock_->NowTicks(); 213 const base::TimeTicks start_time = testing_clock_->NowTicks();
214 Rtcp rtcp(cast_environment_, 214 Rtcp rtcp(cast_environment_,
215 &mock_sender_feedback_, 215 &mock_sender_feedback_,
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fraction_3); 540 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fraction_3);
541 EXPECT_EQ(input_time, out_3); // Verify inverse. 541 EXPECT_EQ(input_time, out_3); // Verify inverse.
542 542
543 // Verify delta. 543 // Verify delta.
544 EXPECT_EQ((out_3 - out_2), time_delta); 544 EXPECT_EQ((out_3 - out_2), time_delta);
545 EXPECT_NEAR((ntp_fraction_3 - ntp_fraction_2), 0xffffffff / 2, 1); 545 EXPECT_NEAR((ntp_fraction_3 - ntp_fraction_2), 0xffffffff / 2, 1);
546 } 546 }
547 547
548 } // namespace cast 548 } // namespace cast
549 } // namespace media 549 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/rtcp_sender_unittest.cc ('k') | media/cast/net/rtcp/rtcp_utility.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698