OLD | NEW |
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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/test/simple_test_tick_clock.h" | 6 #include "base/test/simple_test_tick_clock.h" |
7 #include "media/cast/cast_defines.h" | 7 #include "media/cast/cast_defines.h" |
8 #include "media/cast/cast_environment.h" | 8 #include "media/cast/cast_environment.h" |
9 #include "media/cast/net/pacing/paced_sender.h" | 9 #include "media/cast/net/pacing/paced_sender.h" |
10 #include "media/cast/net/rtcp/rtcp_builder.h" | 10 #include "media/cast/net/rtcp/rtcp_builder.h" |
11 #include "media/cast/net/rtcp/rtcp_utility.h" | 11 #include "media/cast/net/rtcp/rtcp_utility.h" |
12 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h" | 12 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h" |
13 #include "media/cast/test/fake_single_thread_task_runner.h" | 13 #include "media/cast/test/fake_single_thread_task_runner.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
15 | 15 |
16 namespace media { | 16 namespace media { |
17 namespace cast { | 17 namespace cast { |
18 | 18 |
19 namespace { | 19 namespace { |
20 static const uint32 kSendingSsrc = 0x12345678; | 20 static const uint32 kSendingSsrc = 0x12345678; |
21 static const std::string kCName("test@10.1.1.1"); | |
22 } // namespace | 21 } // namespace |
23 | 22 |
24 class TestRtcpTransport : public PacedPacketSender { | 23 class TestRtcpTransport : public PacedPacketSender { |
25 public: | 24 public: |
26 TestRtcpTransport() | 25 TestRtcpTransport() |
27 : expected_packet_length_(0), | 26 : expected_packet_length_(0), |
28 packet_count_(0) { | 27 packet_count_(0) { |
29 } | 28 } |
30 | 29 |
31 virtual bool SendRtcpPacket(const Packet& packet) OVERRIDE { | 30 virtual bool SendRtcpPacket(const Packet& packet) OVERRIDE { |
(...skipping 24 matching lines...) Expand all Loading... |
56 int packet_count_; | 55 int packet_count_; |
57 }; | 56 }; |
58 | 57 |
59 class RtcpBuilderTest : public ::testing::Test { | 58 class RtcpBuilderTest : public ::testing::Test { |
60 protected: | 59 protected: |
61 RtcpBuilderTest() | 60 RtcpBuilderTest() |
62 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)), | 61 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)), |
63 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, | 62 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, |
64 task_runner_, task_runner_, task_runner_, task_runner_, | 63 task_runner_, task_runner_, task_runner_, task_runner_, |
65 GetDefaultCastSenderLoggingConfig())), | 64 GetDefaultCastSenderLoggingConfig())), |
66 rtcp_builder_(new RtcpBuilder(&test_transport_, kSendingSsrc, kCName)) { | 65 rtcp_builder_(new RtcpBuilder(&test_transport_, kSendingSsrc)) { |
67 } | 66 } |
68 | 67 |
69 base::SimpleTestTickClock testing_clock_; | 68 base::SimpleTestTickClock testing_clock_; |
70 TestRtcpTransport test_transport_; | 69 TestRtcpTransport test_transport_; |
71 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 70 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
72 scoped_refptr<CastEnvironment> cast_environment_; | 71 scoped_refptr<CastEnvironment> cast_environment_; |
73 scoped_ptr<RtcpBuilder> rtcp_builder_; | 72 scoped_ptr<RtcpBuilder> rtcp_builder_; |
74 }; | 73 }; |
75 | 74 |
76 TEST_F(RtcpBuilderTest, RtcpSenderReport) { | 75 TEST_F(RtcpBuilderTest, RtcpSenderReport) { |
77 RtcpSenderInfo sender_info; | 76 RtcpSenderInfo sender_info; |
78 sender_info.ntp_seconds = kNtpHigh; | 77 sender_info.ntp_seconds = kNtpHigh; |
79 sender_info.ntp_fraction = kNtpLow; | 78 sender_info.ntp_fraction = kNtpLow; |
80 sender_info.rtp_timestamp = kRtpTimestamp; | 79 sender_info.rtp_timestamp = kRtpTimestamp; |
81 sender_info.send_packet_count = kSendPacketCount; | 80 sender_info.send_packet_count = kSendPacketCount; |
82 sender_info.send_octet_count = kSendOctetCount; | 81 sender_info.send_octet_count = kSendOctetCount; |
83 | 82 |
84 // Sender report + c_name. | 83 // Sender report. |
85 TestRtcpPacketBuilder p; | 84 TestRtcpPacketBuilder p; |
86 p.AddSr(kSendingSsrc, 0); | 85 p.AddSr(kSendingSsrc, 0); |
87 p.AddSdesCname(kSendingSsrc, kCName); | |
88 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 86 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
89 | 87 |
90 rtcp_builder_->SendRtcpFromRtpSender(RtcpBuilder::kRtcpSr, | 88 rtcp_builder_->SendRtcpFromRtpSender(RtcpBuilder::kRtcpSr, |
91 &sender_info, | 89 &sender_info, |
92 NULL, | 90 NULL, |
93 NULL, | 91 NULL, |
94 kSendingSsrc, | 92 kSendingSsrc); |
95 kCName); | |
96 | 93 |
97 EXPECT_EQ(1, test_transport_.packet_count()); | 94 EXPECT_EQ(1, test_transport_.packet_count()); |
98 } | 95 } |
99 | 96 |
100 TEST_F(RtcpBuilderTest, RtcpSenderReportWithDlrr) { | 97 TEST_F(RtcpBuilderTest, RtcpSenderReportWithDlrr) { |
101 RtcpSenderInfo sender_info; | 98 RtcpSenderInfo sender_info; |
102 sender_info.ntp_seconds = kNtpHigh; | 99 sender_info.ntp_seconds = kNtpHigh; |
103 sender_info.ntp_fraction = kNtpLow; | 100 sender_info.ntp_fraction = kNtpLow; |
104 sender_info.rtp_timestamp = kRtpTimestamp; | 101 sender_info.rtp_timestamp = kRtpTimestamp; |
105 sender_info.send_packet_count = kSendPacketCount; | 102 sender_info.send_packet_count = kSendPacketCount; |
106 sender_info.send_octet_count = kSendOctetCount; | 103 sender_info.send_octet_count = kSendOctetCount; |
107 | 104 |
108 // Sender report + c_name + dlrr. | 105 // Sender report + dlrr. |
109 TestRtcpPacketBuilder p1; | 106 TestRtcpPacketBuilder p1; |
110 p1.AddSr(kSendingSsrc, 0); | 107 p1.AddSr(kSendingSsrc, 0); |
111 p1.AddSdesCname(kSendingSsrc, kCName); | 108 p1.AddSdesCname(kSendingSsrc); |
112 p1.AddXrHeader(kSendingSsrc); | 109 p1.AddXrHeader(kSendingSsrc); |
113 p1.AddXrDlrrBlock(kSendingSsrc); | 110 p1.AddXrDlrrBlock(kSendingSsrc); |
114 test_transport_.SetExpectedRtcpPacket(p1.Packet(), p1.Length()); | 111 test_transport_.SetExpectedRtcpPacket(p1.Packet(), p1.Length()); |
115 | 112 |
116 RtcpDlrrReportBlock dlrr_rb; | 113 RtcpDlrrReportBlock dlrr_rb; |
117 dlrr_rb.last_rr = kLastRr; | 114 dlrr_rb.last_rr = kLastRr; |
118 dlrr_rb.delay_since_last_rr = kDelayLastRr; | 115 dlrr_rb.delay_since_last_rr = kDelayLastRr; |
119 | 116 |
120 rtcp_builder_->SendRtcpFromRtpSender( | 117 rtcp_builder_->SendRtcpFromRtpSender( |
121 RtcpBuilder::kRtcpSr | RtcpBuilder::kRtcpDlrr, | 118 RtcpBuilder::kRtcpSr | RtcpBuilder::kRtcpDlrr, |
122 &sender_info, | 119 &sender_info, |
123 &dlrr_rb, | 120 &dlrr_rb, |
124 NULL, | 121 NULL, |
125 kSendingSsrc, | 122 kSendingSsrc); |
126 kCName); | |
127 | 123 |
128 EXPECT_EQ(1, test_transport_.packet_count()); | 124 EXPECT_EQ(1, test_transport_.packet_count()); |
129 } | 125 } |
130 | 126 |
131 TEST_F(RtcpBuilderTest, RtcpSenderReportWithDlrr) { | 127 TEST_F(RtcpBuilderTest, RtcpSenderReportWithDlrr) { |
132 RtcpSenderInfo sender_info; | 128 RtcpSenderInfo sender_info; |
133 sender_info.ntp_seconds = kNtpHigh; | 129 sender_info.ntp_seconds = kNtpHigh; |
134 sender_info.ntp_fraction = kNtpLow; | 130 sender_info.ntp_fraction = kNtpLow; |
135 sender_info.rtp_timestamp = kRtpTimestamp; | 131 sender_info.rtp_timestamp = kRtpTimestamp; |
136 sender_info.send_packet_count = kSendPacketCount; | 132 sender_info.send_packet_count = kSendPacketCount; |
137 sender_info.send_octet_count = kSendOctetCount; | 133 sender_info.send_octet_count = kSendOctetCount; |
138 | 134 |
139 // Sender report + c_name + dlrr + sender log. | 135 // Sender report + + dlrr + sender log. |
140 TestRtcpPacketBuilder p; | 136 TestRtcpPacketBuilder p; |
141 p.AddSr(kSendingSsrc, 0); | 137 p.AddSr(kSendingSsrc, 0); |
142 p.AddSdesCname(kSendingSsrc, kCName); | 138 p.AddSdesCname(kSendingSsrc); |
143 p.AddXrHeader(kSendingSsrc); | 139 p.AddXrHeader(kSendingSsrc); |
144 p.AddXrDlrrBlock(kSendingSsrc); | 140 p.AddXrDlrrBlock(kSendingSsrc); |
145 | 141 |
146 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 142 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
147 | 143 |
148 RtcpDlrrReportBlock dlrr_rb; | 144 RtcpDlrrReportBlock dlrr_rb; |
149 dlrr_rb.last_rr = kLastRr; | 145 dlrr_rb.last_rr = kLastRr; |
150 dlrr_rb.delay_since_last_rr = kDelayLastRr; | 146 dlrr_rb.delay_since_last_rr = kDelayLastRr; |
151 | 147 |
152 rtcp_builder_->SendRtcpFromRtpSender( | 148 rtcp_builder_->SendRtcpFromRtpSender( |
153 RtcpBuilder::kRtcpSr | RtcpBuilder::kRtcpDlrr | | 149 RtcpBuilder::kRtcpSr | RtcpBuilder::kRtcpDlrr | |
154 RtcpBuilder::kRtcpSenderLog, | 150 RtcpBuilder::kRtcpSenderLog, |
155 &sender_info, | 151 &sender_info, |
156 &dlrr_rb, | 152 &dlrr_rb, |
157 kSendingSsrc, | 153 kSendingSsrc); |
158 kCName); | |
159 | 154 |
160 EXPECT_EQ(1, test_transport_.packet_count()); | 155 EXPECT_EQ(1, test_transport_.packet_count()); |
161 } | 156 } |
162 | 157 |
163 } // namespace cast | 158 } // namespace cast |
164 } // namespace media | 159 } // namespace media |
OLD | NEW |