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

Side by Side Diff: webrtc/media/base/rtpdump_unittest.cc

Issue 2633453002: Delete unused rtpdump code in media/base. (Closed)
Patch Set: Created 3 years, 11 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 | « webrtc/media/base/rtpdump.cc ('k') | webrtc/media/base/testutils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <memory>
12 #include <string>
13
14 #include "webrtc/base/bytebuffer.h"
15 #include "webrtc/base/gunit.h"
16 #include "webrtc/base/thread.h"
17 #include "webrtc/media/base/rtpdump.h"
18 #include "webrtc/media/base/rtputils.h"
19 #include "webrtc/media/base/testutils.h"
20
21 namespace cricket {
22
23 static const uint32_t kTestSsrc = 1;
24
25 // Test that we read the correct header fields from the RTP/RTCP packet.
26 TEST(RtpDumpTest, ReadRtpDumpPacket) {
27 rtc::ByteBufferWriter rtp_buf;
28 RtpTestUtility::kTestRawRtpPackets[0].WriteToByteBuffer(kTestSsrc, &rtp_buf);
29 RtpDumpPacket rtp_packet(rtp_buf.Data(), rtp_buf.Length(), 0, false);
30
31 int payload_type;
32 int seq_num;
33 uint32_t ts;
34 uint32_t ssrc;
35 int rtcp_type;
36 EXPECT_FALSE(rtp_packet.is_rtcp());
37 EXPECT_TRUE(rtp_packet.IsValidRtpPacket());
38 EXPECT_FALSE(rtp_packet.IsValidRtcpPacket());
39 EXPECT_TRUE(rtp_packet.GetRtpPayloadType(&payload_type));
40 EXPECT_EQ(0, payload_type);
41 EXPECT_TRUE(rtp_packet.GetRtpSeqNum(&seq_num));
42 EXPECT_EQ(0, seq_num);
43 EXPECT_TRUE(rtp_packet.GetRtpTimestamp(&ts));
44 EXPECT_EQ(0U, ts);
45 EXPECT_TRUE(rtp_packet.GetRtpSsrc(&ssrc));
46 EXPECT_EQ(kTestSsrc, ssrc);
47 EXPECT_FALSE(rtp_packet.GetRtcpType(&rtcp_type));
48
49 rtc::ByteBufferWriter rtcp_buf;
50 RtpTestUtility::kTestRawRtcpPackets[0].WriteToByteBuffer(&rtcp_buf);
51 RtpDumpPacket rtcp_packet(rtcp_buf.Data(), rtcp_buf.Length(), 0, true);
52
53 EXPECT_TRUE(rtcp_packet.is_rtcp());
54 EXPECT_FALSE(rtcp_packet.IsValidRtpPacket());
55 EXPECT_TRUE(rtcp_packet.IsValidRtcpPacket());
56 EXPECT_TRUE(rtcp_packet.GetRtcpType(&rtcp_type));
57 EXPECT_EQ(0, rtcp_type);
58 }
59
60 // Test that we read only the RTP dump file.
61 TEST(RtpDumpTest, ReadRtpDumpFile) {
62 RtpDumpPacket packet;
63 rtc::MemoryStream stream;
64 RtpDumpWriter writer(&stream);
65 std::unique_ptr<RtpDumpReader> reader;
66
67 // Write a RTP packet to the stream, which is a valid RTP dump. Next, we will
68 // change the first line to make the RTP dump valid or invalid.
69 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(1, false, kTestSsrc, &writer));
70 stream.Rewind();
71 reader.reset(new RtpDumpReader(&stream));
72 EXPECT_EQ(rtc::SR_SUCCESS, reader->ReadPacket(&packet));
73
74 // The first line is correct.
75 stream.Rewind();
76 const char new_line[] = "#!rtpplay1.0 1.1.1.1/1\n";
77 EXPECT_EQ(rtc::SR_SUCCESS,
78 stream.WriteAll(new_line, strlen(new_line), NULL, NULL));
79 stream.Rewind();
80 reader.reset(new RtpDumpReader(&stream));
81 EXPECT_EQ(rtc::SR_SUCCESS, reader->ReadPacket(&packet));
82
83 // The first line is not correct: not started with #!rtpplay1.0.
84 stream.Rewind();
85 const char new_line2[] = "#!rtpplaz1.0 0.0.0.0/0\n";
86 EXPECT_EQ(rtc::SR_SUCCESS,
87 stream.WriteAll(new_line2, strlen(new_line2), NULL, NULL));
88 stream.Rewind();
89 reader.reset(new RtpDumpReader(&stream));
90 EXPECT_EQ(rtc::SR_ERROR, reader->ReadPacket(&packet));
91
92 // The first line is not correct: no port.
93 stream.Rewind();
94 const char new_line3[] = "#!rtpplay1.0 0.0.0.0//\n";
95 EXPECT_EQ(rtc::SR_SUCCESS,
96 stream.WriteAll(new_line3, strlen(new_line3), NULL, NULL));
97 stream.Rewind();
98 reader.reset(new RtpDumpReader(&stream));
99 EXPECT_EQ(rtc::SR_ERROR, reader->ReadPacket(&packet));
100 }
101
102 // Test that we read the same RTP packets that rtp dump writes.
103 TEST(RtpDumpTest, WriteReadSameRtp) {
104 rtc::MemoryStream stream;
105 RtpDumpWriter writer(&stream);
106 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
107 RtpTestUtility::GetTestPacketCount(), false, kTestSsrc, &writer));
108 EXPECT_TRUE(RtpTestUtility::VerifyTestPacketsFromStream(
109 RtpTestUtility::GetTestPacketCount(), &stream, kTestSsrc));
110
111 // Check stream has only RtpTestUtility::GetTestPacketCount() packets.
112 RtpDumpPacket packet;
113 RtpDumpReader reader(&stream);
114 for (size_t i = 0; i < RtpTestUtility::GetTestPacketCount(); ++i) {
115 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
116 uint32_t ssrc;
117 EXPECT_TRUE(GetRtpSsrc(&packet.data[0], packet.data.size(), &ssrc));
118 EXPECT_EQ(kTestSsrc, ssrc);
119 }
120 // No more packets to read.
121 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
122
123 // Rewind the stream and read again with a specified ssrc.
124 stream.Rewind();
125 RtpDumpReader reader_w_ssrc(&stream);
126 const uint32_t send_ssrc = kTestSsrc + 1;
127 reader_w_ssrc.SetSsrc(send_ssrc);
128 for (size_t i = 0; i < RtpTestUtility::GetTestPacketCount(); ++i) {
129 EXPECT_EQ(rtc::SR_SUCCESS, reader_w_ssrc.ReadPacket(&packet));
130 EXPECT_FALSE(packet.is_rtcp());
131 EXPECT_EQ(packet.original_data_len, packet.data.size());
132 uint32_t ssrc;
133 EXPECT_TRUE(GetRtpSsrc(&packet.data[0], packet.data.size(), &ssrc));
134 EXPECT_EQ(send_ssrc, ssrc);
135 }
136 // No more packets to read.
137 EXPECT_EQ(rtc::SR_EOS, reader_w_ssrc.ReadPacket(&packet));
138 }
139
140 // Test that we read the same RTCP packets that rtp dump writes.
141 TEST(RtpDumpTest, WriteReadSameRtcp) {
142 rtc::MemoryStream stream;
143 RtpDumpWriter writer(&stream);
144 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
145 RtpTestUtility::GetTestPacketCount(), true, kTestSsrc, &writer));
146 EXPECT_TRUE(RtpTestUtility::VerifyTestPacketsFromStream(
147 RtpTestUtility::GetTestPacketCount(), &stream, kTestSsrc));
148
149 // Check stream has only RtpTestUtility::GetTestPacketCount() packets.
150 RtpDumpPacket packet;
151 RtpDumpReader reader(&stream);
152 reader.SetSsrc(kTestSsrc + 1); // Does not affect RTCP packet.
153 for (size_t i = 0; i < RtpTestUtility::GetTestPacketCount(); ++i) {
154 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
155 EXPECT_TRUE(packet.is_rtcp());
156 EXPECT_EQ(0U, packet.original_data_len);
157 }
158 // No more packets to read.
159 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
160 }
161
162 // Test dumping only RTP packet headers.
163 TEST(RtpDumpTest, WriteReadRtpHeadersOnly) {
164 rtc::MemoryStream stream;
165 RtpDumpWriter writer(&stream);
166 writer.set_packet_filter(PF_RTPHEADER);
167
168 // Write some RTP and RTCP packets. RTP packets should only have headers;
169 // RTCP packets should be eaten.
170 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
171 RtpTestUtility::GetTestPacketCount(), false, kTestSsrc, &writer));
172 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
173 RtpTestUtility::GetTestPacketCount(), true, kTestSsrc, &writer));
174 stream.Rewind();
175
176 // Check that only RTP packet headers are present.
177 RtpDumpPacket packet;
178 RtpDumpReader reader(&stream);
179 for (size_t i = 0; i < RtpTestUtility::GetTestPacketCount(); ++i) {
180 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
181 EXPECT_FALSE(packet.is_rtcp());
182 size_t len = 0;
183 packet.GetRtpHeaderLen(&len);
184 EXPECT_EQ(len, packet.data.size());
185 EXPECT_GT(packet.original_data_len, packet.data.size());
186 }
187 // No more packets to read.
188 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
189 }
190
191 // Test dumping only RTCP packets.
192 TEST(RtpDumpTest, WriteReadRtcpOnly) {
193 rtc::MemoryStream stream;
194 RtpDumpWriter writer(&stream);
195 writer.set_packet_filter(PF_RTCPPACKET);
196
197 // Write some RTP and RTCP packets. RTP packets should be eaten.
198 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
199 RtpTestUtility::GetTestPacketCount(), false, kTestSsrc, &writer));
200 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
201 RtpTestUtility::GetTestPacketCount(), true, kTestSsrc, &writer));
202 stream.Rewind();
203
204 // Check that only RTCP packets are present.
205 RtpDumpPacket packet;
206 RtpDumpReader reader(&stream);
207 for (size_t i = 0; i < RtpTestUtility::GetTestPacketCount(); ++i) {
208 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
209 EXPECT_TRUE(packet.is_rtcp());
210 EXPECT_EQ(0U, packet.original_data_len);
211 }
212 // No more packets to read.
213 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
214 }
215
216 // Test that RtpDumpLoopReader reads RTP packets continously and the elapsed
217 // time, the sequence number, and timestamp are maintained properly.
218 TEST(RtpDumpTest, LoopReadRtp) {
219 rtc::MemoryStream stream;
220 RtpDumpWriter writer(&stream);
221 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
222 RtpTestUtility::GetTestPacketCount(), false, kTestSsrc, &writer));
223 EXPECT_TRUE(RtpTestUtility::VerifyTestPacketsFromStream(
224 3 * RtpTestUtility::GetTestPacketCount(), &stream, kTestSsrc));
225 }
226
227 // Test that RtpDumpLoopReader reads RTCP packets continously and the elapsed
228 // time is maintained properly.
229 TEST(RtpDumpTest, LoopReadRtcp) {
230 rtc::MemoryStream stream;
231 RtpDumpWriter writer(&stream);
232 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(
233 RtpTestUtility::GetTestPacketCount(), true, kTestSsrc, &writer));
234 EXPECT_TRUE(RtpTestUtility::VerifyTestPacketsFromStream(
235 3 * RtpTestUtility::GetTestPacketCount(), &stream, kTestSsrc));
236 }
237
238 // Test that RtpDumpLoopReader reads continously from stream with a single RTP
239 // packets.
240 TEST(RtpDumpTest, LoopReadSingleRtp) {
241 rtc::MemoryStream stream;
242 RtpDumpWriter writer(&stream);
243 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(1, false, kTestSsrc, &writer));
244
245 // The regular reader can read only one packet.
246 RtpDumpPacket packet;
247 stream.Rewind();
248 RtpDumpReader reader(&stream);
249 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
250 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
251
252 // The loop reader reads three packets from the input stream.
253 stream.Rewind();
254 RtpDumpLoopReader loop_reader(&stream);
255 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
256 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
257 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
258 }
259
260 // Test that RtpDumpLoopReader reads continously from stream with a single RTCP
261 // packets.
262 TEST(RtpDumpTest, LoopReadSingleRtcp) {
263 rtc::MemoryStream stream;
264 RtpDumpWriter writer(&stream);
265 ASSERT_TRUE(RtpTestUtility::WriteTestPackets(1, true, kTestSsrc, &writer));
266
267 // The regular reader can read only one packet.
268 RtpDumpPacket packet;
269 stream.Rewind();
270 RtpDumpReader reader(&stream);
271 EXPECT_EQ(rtc::SR_SUCCESS, reader.ReadPacket(&packet));
272 EXPECT_EQ(rtc::SR_EOS, reader.ReadPacket(&packet));
273
274 // The loop reader reads three packets from the input stream.
275 stream.Rewind();
276 RtpDumpLoopReader loop_reader(&stream);
277 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
278 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
279 EXPECT_EQ(rtc::SR_SUCCESS, loop_reader.ReadPacket(&packet));
280 }
281
282 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/base/rtpdump.cc ('k') | webrtc/media/base/testutils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698