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

Side by Side Diff: webrtc/api/rtcstatscollector_unittest.cc

Issue 2610843003: RTC[In/Out]boundRTPStreamStats.mediaTrackId collected. (Closed)
Patch Set: Rebase with master 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/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats_objects.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 /* 1 /*
2 * Copyright 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/api/rtcstatscollector.h" 11 #include "webrtc/api/rtcstatscollector.h"
12 12
13 #include <memory> 13 #include <memory>
14 #include <ostream> 14 #include <ostream>
15 #include <string> 15 #include <string>
16 #include <vector> 16 #include <vector>
17 17
18 #include "webrtc/api/jsepsessiondescription.h" 18 #include "webrtc/api/jsepsessiondescription.h"
19 #include "webrtc/api/mediastream.h" 19 #include "webrtc/api/mediastream.h"
20 #include "webrtc/api/mediastreamtrack.h" 20 #include "webrtc/api/mediastreamtrack.h"
21 #include "webrtc/api/rtpparameters.h" 21 #include "webrtc/api/rtpparameters.h"
22 #include "webrtc/api/stats/rtcstats_objects.h" 22 #include "webrtc/api/stats/rtcstats_objects.h"
23 #include "webrtc/api/stats/rtcstatsreport.h" 23 #include "webrtc/api/stats/rtcstatsreport.h"
24 #include "webrtc/api/test/mock_datachannel.h" 24 #include "webrtc/api/test/mock_datachannel.h"
25 #include "webrtc/api/test/mock_peerconnection.h" 25 #include "webrtc/api/test/mock_peerconnection.h"
26 #include "webrtc/api/test/mock_rtpreceiver.h"
27 #include "webrtc/api/test/mock_rtpsender.h"
26 #include "webrtc/api/test/mock_webrtcsession.h" 28 #include "webrtc/api/test/mock_webrtcsession.h"
27 #include "webrtc/api/test/rtcstatsobtainer.h" 29 #include "webrtc/api/test/rtcstatsobtainer.h"
28 #include "webrtc/base/checks.h" 30 #include "webrtc/base/checks.h"
29 #include "webrtc/base/fakeclock.h" 31 #include "webrtc/base/fakeclock.h"
30 #include "webrtc/base/fakesslidentity.h" 32 #include "webrtc/base/fakesslidentity.h"
31 #include "webrtc/base/gunit.h" 33 #include "webrtc/base/gunit.h"
32 #include "webrtc/base/logging.h" 34 #include "webrtc/base/logging.h"
33 #include "webrtc/base/socketaddress.h" 35 #include "webrtc/base/socketaddress.h"
34 #include "webrtc/base/thread_checker.h" 36 #include "webrtc/base/thread_checker.h"
35 #include "webrtc/base/timedelta.h" 37 #include "webrtc/base/timedelta.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 return MediaStreamTrackInterface::kVideoKind; 283 return MediaStreamTrackInterface::kVideoKind;
282 } 284 }
283 VideoTrackSourceInterface* GetSource() const override { 285 VideoTrackSourceInterface* GetSource() const override {
284 return source_; 286 return source_;
285 } 287 }
286 288
287 private: 289 private:
288 rtc::scoped_refptr<VideoTrackSourceInterface> source_; 290 rtc::scoped_refptr<VideoTrackSourceInterface> source_;
289 }; 291 };
290 292
293 rtc::scoped_refptr<MediaStreamTrackInterface> CreateFakeTrack(
294 cricket::MediaType media_type,
295 const std::string& track_id) {
296 if (media_type == cricket::MEDIA_TYPE_AUDIO) {
297 return FakeAudioTrackForStats::Create(
298 track_id,
299 MediaStreamTrackInterface::TrackState::kLive,
300 32767,
301 new FakeAudioProcessorForStats(
302 AudioProcessorInterface::AudioProcessorStats()));
303 } else {
304 RTC_DCHECK_EQ(media_type, cricket::MEDIA_TYPE_VIDEO);
305 return FakeVideoTrackForStats::Create(
306 track_id,
307 MediaStreamTrackInterface::TrackState::kLive,
308 new FakeVideoTrackSourceForStats(
309 VideoTrackSourceInterface::Stats()));
310 }
311 }
312
291 class RTCStatsCollectorTestHelper : public SetSessionDescriptionObserver { 313 class RTCStatsCollectorTestHelper : public SetSessionDescriptionObserver {
292 public: 314 public:
293 RTCStatsCollectorTestHelper() 315 RTCStatsCollectorTestHelper()
294 : worker_thread_(rtc::Thread::Current()), 316 : worker_thread_(rtc::Thread::Current()),
295 network_thread_(rtc::Thread::Current()), 317 network_thread_(rtc::Thread::Current()),
296 media_engine_(new cricket::FakeMediaEngine()), 318 media_engine_(new cricket::FakeMediaEngine()),
297 channel_manager_( 319 channel_manager_(
298 new cricket::ChannelManager(media_engine_, 320 new cricket::ChannelManager(media_engine_,
299 worker_thread_, 321 worker_thread_,
300 network_thread_)), 322 network_thread_)),
301 media_controller_( 323 media_controller_(
302 MediaControllerInterface::Create(cricket::MediaConfig(), 324 MediaControllerInterface::Create(cricket::MediaConfig(),
303 worker_thread_, 325 worker_thread_,
304 channel_manager_.get(), 326 channel_manager_.get(),
305 &event_log_)), 327 &event_log_)),
306 session_(media_controller_.get()), 328 session_(media_controller_.get()),
307 pc_() { 329 pc_() {
308 // Default return values for mocks. 330 // Default return values for mocks.
309 EXPECT_CALL(pc_, local_streams()).WillRepeatedly(Return(nullptr)); 331 EXPECT_CALL(pc_, local_streams()).WillRepeatedly(Return(nullptr));
310 EXPECT_CALL(pc_, remote_streams()).WillRepeatedly(Return(nullptr)); 332 EXPECT_CALL(pc_, remote_streams()).WillRepeatedly(Return(nullptr));
311 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_)); 333 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_));
334 EXPECT_CALL(pc_, GetSenders()).WillRepeatedly(Return(
335 std::vector<rtc::scoped_refptr<RtpSenderInterface>>()));
336 EXPECT_CALL(pc_, GetReceivers()).WillRepeatedly(Return(
337 std::vector<rtc::scoped_refptr<RtpReceiverInterface>>()));
312 EXPECT_CALL(pc_, sctp_data_channels()).WillRepeatedly( 338 EXPECT_CALL(pc_, sctp_data_channels()).WillRepeatedly(
313 ReturnRef(data_channels_)); 339 ReturnRef(data_channels_));
314 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 340 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
315 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 341 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
316 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(ReturnNull()); 342 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(ReturnNull());
317 EXPECT_CALL(session_, GetLocalCertificate(_, _)).WillRepeatedly( 343 EXPECT_CALL(session_, GetLocalCertificate(_, _)).WillRepeatedly(
318 Return(false)); 344 Return(false));
319 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 345 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
320 .WillRepeatedly(Return(nullptr)); 346 .WillRepeatedly(Return(nullptr));
321 } 347 }
322 348
323 rtc::ScopedFakeClock& fake_clock() { return fake_clock_; } 349 rtc::ScopedFakeClock& fake_clock() { return fake_clock_; }
324 rtc::Thread* worker_thread() { return worker_thread_; } 350 rtc::Thread* worker_thread() { return worker_thread_; }
325 rtc::Thread* network_thread() { return network_thread_; } 351 rtc::Thread* network_thread() { return network_thread_; }
326 cricket::FakeMediaEngine* media_engine() { return media_engine_; } 352 cricket::FakeMediaEngine* media_engine() { return media_engine_; }
327 MockWebRtcSession& session() { return session_; } 353 MockWebRtcSession& session() { return session_; }
328 MockPeerConnection& pc() { return pc_; } 354 MockPeerConnection& pc() { return pc_; }
329 std::vector<rtc::scoped_refptr<DataChannel>>& data_channels() { 355 std::vector<rtc::scoped_refptr<DataChannel>>& data_channels() {
330 return data_channels_; 356 return data_channels_;
331 } 357 }
332 358
333 // SetSessionDescriptionObserver overrides. 359 // SetSessionDescriptionObserver overrides.
334 void OnSuccess() override {} 360 void OnSuccess() override {}
335 void OnFailure(const std::string& error) override { 361 void OnFailure(const std::string& error) override {
336 RTC_NOTREACHED() << error; 362 RTC_NOTREACHED() << error;
337 } 363 }
338 364
365 void SetupLocalTrackAndSender(cricket::MediaType media_type,
366 const std::string& track_id,
367 uint32_t ssrc) {
368 rtc::scoped_refptr<StreamCollection> local_streams =
369 StreamCollection::Create();
370 EXPECT_CALL(pc_, local_streams())
371 .WillRepeatedly(Return(local_streams));
372
373 rtc::scoped_refptr<MediaStream> local_stream =
374 MediaStream::Create("LocalStreamLabel");
375 local_streams->AddStream(local_stream);
376
377 rtc::scoped_refptr<MediaStreamTrackInterface> track;
378 if (media_type == cricket::MEDIA_TYPE_AUDIO) {
379 track = CreateFakeTrack(media_type, track_id);
380 local_stream->AddTrack(static_cast<AudioTrackInterface*>(track.get()));
381 } else {
382 track = CreateFakeTrack(media_type, track_id);
383 local_stream->AddTrack(static_cast<VideoTrackInterface*>(track.get()));
384 }
385
386 rtc::scoped_refptr<MockRtpSender> sender(
387 new rtc::RefCountedObject<MockRtpSender>());
388 EXPECT_CALL(*sender, track()).WillRepeatedly(Return(track));
389 EXPECT_CALL(*sender, ssrc()).WillRepeatedly(Return(ssrc));
390 EXPECT_CALL(*sender, media_type()).WillRepeatedly(Return(media_type));
391 EXPECT_CALL(*sender, GetParameters()).WillRepeatedly(Invoke(
392 [ssrc]() {
393 RtpParameters params;
394 params.encodings.push_back(RtpEncodingParameters());
395 params.encodings[0].ssrc = rtc::Optional<uint32_t>(ssrc);
396 return params;
397 }));
398 EXPECT_CALL(pc_, GetSenders()).WillRepeatedly(Return(
399 std::vector<rtc::scoped_refptr<RtpSenderInterface>>({
400 rtc::scoped_refptr<RtpSenderInterface>(sender.get()) })));
401 }
402
403 void SetupRemoteTrackAndReceiver(cricket::MediaType media_type,
404 const std::string& track_id,
405 uint32_t ssrc) {
406 rtc::scoped_refptr<StreamCollection> remote_streams =
407 StreamCollection::Create();
408 EXPECT_CALL(pc_, remote_streams())
409 .WillRepeatedly(Return(remote_streams));
410
411 rtc::scoped_refptr<MediaStream> remote_stream =
412 MediaStream::Create("RemoteStreamLabel");
413 remote_streams->AddStream(remote_stream);
414
415 rtc::scoped_refptr<MediaStreamTrackInterface> track;
416 if (media_type == cricket::MEDIA_TYPE_AUDIO) {
417 track = CreateFakeTrack(media_type, track_id);
418 remote_stream->AddTrack(static_cast<AudioTrackInterface*>(track.get()));
419 } else {
420 track = CreateFakeTrack(media_type, track_id);
421 remote_stream->AddTrack(static_cast<VideoTrackInterface*>(track.get()));
422 }
423
424 rtc::scoped_refptr<MockRtpReceiver> receiver(
425 new rtc::RefCountedObject<MockRtpReceiver>());
426 EXPECT_CALL(*receiver, track()).WillRepeatedly(Return(track));
427 EXPECT_CALL(*receiver, media_type()).WillRepeatedly(Return(media_type));
428 EXPECT_CALL(*receiver, GetParameters()).WillRepeatedly(Invoke(
429 [ssrc]() {
430 RtpParameters params;
431 params.encodings.push_back(RtpEncodingParameters());
432 params.encodings[0].ssrc = rtc::Optional<uint32_t>(ssrc);
433 return params;
434 }));
435 EXPECT_CALL(pc_, GetReceivers()).WillRepeatedly(Return(
436 std::vector<rtc::scoped_refptr<RtpReceiverInterface>>({
437 rtc::scoped_refptr<RtpReceiverInterface>(receiver.get()) })));
438 }
439
339 private: 440 private:
340 rtc::ScopedFakeClock fake_clock_; 441 rtc::ScopedFakeClock fake_clock_;
341 RtcEventLogNullImpl event_log_; 442 RtcEventLogNullImpl event_log_;
342 rtc::Thread* const worker_thread_; 443 rtc::Thread* const worker_thread_;
343 rtc::Thread* const network_thread_; 444 rtc::Thread* const network_thread_;
344 cricket::FakeMediaEngine* media_engine_; 445 cricket::FakeMediaEngine* media_engine_;
345 std::unique_ptr<cricket::ChannelManager> channel_manager_; 446 std::unique_ptr<cricket::ChannelManager> channel_manager_;
346 std::unique_ptr<MediaControllerInterface> media_controller_; 447 std::unique_ptr<MediaControllerInterface> media_controller_;
347 MockWebRtcSession session_; 448 MockWebRtcSession session_;
348 MockPeerConnection pc_; 449 MockPeerConnection pc_;
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 new FakeAudioProcessorForStats(remote_audio_processor_stats)); 1354 new FakeAudioProcessorForStats(remote_audio_processor_stats));
1254 remote_stream->AddTrack(remote_audio_track); 1355 remote_stream->AddTrack(remote_audio_track);
1255 1356
1256 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1357 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1257 1358
1258 RTCMediaStreamStats expected_local_stream( 1359 RTCMediaStreamStats expected_local_stream(
1259 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us()); 1360 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us());
1260 expected_local_stream.stream_identifier = local_stream->label(); 1361 expected_local_stream.stream_identifier = local_stream->label();
1261 expected_local_stream.track_ids = std::vector<std::string>(); 1362 expected_local_stream.track_ids = std::vector<std::string>();
1262 expected_local_stream.track_ids->push_back( 1363 expected_local_stream.track_ids->push_back(
1263 "RTCMediaStreamTrack_LocalAudioTrackID"); 1364 "RTCMediaStreamTrack_local_LocalAudioTrackID");
1264 ASSERT_TRUE(report->Get(expected_local_stream.id())); 1365 ASSERT_TRUE(report->Get(expected_local_stream.id()));
1265 EXPECT_EQ(expected_local_stream, 1366 EXPECT_EQ(expected_local_stream,
1266 report->Get(expected_local_stream.id())->cast_to< 1367 report->Get(expected_local_stream.id())->cast_to<
1267 RTCMediaStreamStats>()); 1368 RTCMediaStreamStats>());
1268 1369
1269 RTCMediaStreamStats expected_remote_stream( 1370 RTCMediaStreamStats expected_remote_stream(
1270 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us()); 1371 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us());
1271 expected_remote_stream.stream_identifier = remote_stream->label(); 1372 expected_remote_stream.stream_identifier = remote_stream->label();
1272 expected_remote_stream.track_ids = std::vector<std::string>(); 1373 expected_remote_stream.track_ids = std::vector<std::string>();
1273 expected_remote_stream.track_ids->push_back( 1374 expected_remote_stream.track_ids->push_back(
1274 "RTCMediaStreamTrack_RemoteAudioTrackID"); 1375 "RTCMediaStreamTrack_remote_RemoteAudioTrackID");
1275 ASSERT_TRUE(report->Get(expected_remote_stream.id())); 1376 ASSERT_TRUE(report->Get(expected_remote_stream.id()));
1276 EXPECT_EQ(expected_remote_stream, 1377 EXPECT_EQ(expected_remote_stream,
1277 report->Get(expected_remote_stream.id())->cast_to< 1378 report->Get(expected_remote_stream.id())->cast_to<
1278 RTCMediaStreamStats>()); 1379 RTCMediaStreamStats>());
1279 1380
1280 RTCMediaStreamTrackStats expected_local_audio_track( 1381 RTCMediaStreamTrackStats expected_local_audio_track(
1281 "RTCMediaStreamTrack_LocalAudioTrackID", report->timestamp_us()); 1382 "RTCMediaStreamTrack_local_LocalAudioTrackID", report->timestamp_us());
1282 expected_local_audio_track.track_identifier = local_audio_track->id(); 1383 expected_local_audio_track.track_identifier = local_audio_track->id();
1283 expected_local_audio_track.remote_source = false; 1384 expected_local_audio_track.remote_source = false;
1284 expected_local_audio_track.ended = true; 1385 expected_local_audio_track.ended = true;
1285 expected_local_audio_track.detached = false; 1386 expected_local_audio_track.detached = false;
1286 expected_local_audio_track.audio_level = 1.0; 1387 expected_local_audio_track.audio_level = 1.0;
1287 expected_local_audio_track.echo_return_loss = 42.0; 1388 expected_local_audio_track.echo_return_loss = 42.0;
1288 expected_local_audio_track.echo_return_loss_enhancement = 52.0; 1389 expected_local_audio_track.echo_return_loss_enhancement = 52.0;
1289 ASSERT_TRUE(report->Get(expected_local_audio_track.id())); 1390 ASSERT_TRUE(report->Get(expected_local_audio_track.id()));
1290 EXPECT_EQ(expected_local_audio_track, 1391 EXPECT_EQ(expected_local_audio_track,
1291 report->Get(expected_local_audio_track.id())->cast_to< 1392 report->Get(expected_local_audio_track.id())->cast_to<
1292 RTCMediaStreamTrackStats>()); 1393 RTCMediaStreamTrackStats>());
1293 1394
1294 RTCMediaStreamTrackStats expected_remote_audio_track( 1395 RTCMediaStreamTrackStats expected_remote_audio_track(
1295 "RTCMediaStreamTrack_RemoteAudioTrackID", report->timestamp_us()); 1396 "RTCMediaStreamTrack_remote_RemoteAudioTrackID", report->timestamp_us());
1296 expected_remote_audio_track.track_identifier = remote_audio_track->id(); 1397 expected_remote_audio_track.track_identifier = remote_audio_track->id();
1297 expected_remote_audio_track.remote_source = true; 1398 expected_remote_audio_track.remote_source = true;
1298 expected_remote_audio_track.ended = false; 1399 expected_remote_audio_track.ended = false;
1299 expected_remote_audio_track.detached = false; 1400 expected_remote_audio_track.detached = false;
1300 expected_remote_audio_track.audio_level = 0.0; 1401 expected_remote_audio_track.audio_level = 0.0;
1301 expected_remote_audio_track.echo_return_loss = 13.0; 1402 expected_remote_audio_track.echo_return_loss = 13.0;
1302 expected_remote_audio_track.echo_return_loss_enhancement = 37.0; 1403 expected_remote_audio_track.echo_return_loss_enhancement = 37.0;
1303 ASSERT_TRUE(report->Get(expected_remote_audio_track.id())); 1404 ASSERT_TRUE(report->Get(expected_remote_audio_track.id()));
1304 EXPECT_EQ(expected_remote_audio_track, 1405 EXPECT_EQ(expected_remote_audio_track,
1305 report->Get(expected_remote_audio_track.id())->cast_to< 1406 report->Get(expected_remote_audio_track.id())->cast_to<
(...skipping 19 matching lines...) Expand all
1325 FakeAudioTrackForStats::Create( 1426 FakeAudioTrackForStats::Create(
1326 "LocalAudioTrackID", 1427 "LocalAudioTrackID",
1327 MediaStreamTrackInterface::TrackState::kEnded, 1428 MediaStreamTrackInterface::TrackState::kEnded,
1328 32767, 1429 32767,
1329 new FakeAudioProcessorForStats(local_audio_processor_stats)); 1430 new FakeAudioProcessorForStats(local_audio_processor_stats));
1330 local_stream->AddTrack(local_audio_track); 1431 local_stream->AddTrack(local_audio_track);
1331 1432
1332 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1433 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1333 1434
1334 RTCMediaStreamTrackStats expected_local_audio_track( 1435 RTCMediaStreamTrackStats expected_local_audio_track(
1335 "RTCMediaStreamTrack_LocalAudioTrackID", report->timestamp_us()); 1436 "RTCMediaStreamTrack_local_LocalAudioTrackID", report->timestamp_us());
1336 expected_local_audio_track.track_identifier = local_audio_track->id(); 1437 expected_local_audio_track.track_identifier = local_audio_track->id();
1337 expected_local_audio_track.remote_source = false; 1438 expected_local_audio_track.remote_source = false;
1338 expected_local_audio_track.ended = true; 1439 expected_local_audio_track.ended = true;
1339 expected_local_audio_track.detached = false; 1440 expected_local_audio_track.detached = false;
1340 expected_local_audio_track.audio_level = 1.0; 1441 expected_local_audio_track.audio_level = 1.0;
1341 // Should be undefined: |expected_local_audio_track.echo_return_loss| and 1442 // Should be undefined: |expected_local_audio_track.echo_return_loss| and
1342 // |expected_local_audio_track.echo_return_loss_enhancement|. 1443 // |expected_local_audio_track.echo_return_loss_enhancement|.
1343 ASSERT_TRUE(report->Get(expected_local_audio_track.id())); 1444 ASSERT_TRUE(report->Get(expected_local_audio_track.id()));
1344 EXPECT_EQ(expected_local_audio_track, 1445 EXPECT_EQ(expected_local_audio_track,
1345 report->Get(expected_local_audio_track.id())->cast_to< 1446 report->Get(expected_local_audio_track.id())->cast_to<
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1390 remote_video_track_source); 1491 remote_video_track_source);
1391 remote_stream->AddTrack(remote_video_track); 1492 remote_stream->AddTrack(remote_video_track);
1392 1493
1393 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1494 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1394 1495
1395 RTCMediaStreamStats expected_local_stream( 1496 RTCMediaStreamStats expected_local_stream(
1396 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us()); 1497 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us());
1397 expected_local_stream.stream_identifier = local_stream->label(); 1498 expected_local_stream.stream_identifier = local_stream->label();
1398 expected_local_stream.track_ids = std::vector<std::string>(); 1499 expected_local_stream.track_ids = std::vector<std::string>();
1399 expected_local_stream.track_ids->push_back( 1500 expected_local_stream.track_ids->push_back(
1400 "RTCMediaStreamTrack_LocalVideoTrackID"); 1501 "RTCMediaStreamTrack_local_LocalVideoTrackID");
1401 ASSERT_TRUE(report->Get(expected_local_stream.id())); 1502 ASSERT_TRUE(report->Get(expected_local_stream.id()));
1402 EXPECT_EQ(expected_local_stream, 1503 EXPECT_EQ(expected_local_stream,
1403 report->Get(expected_local_stream.id())->cast_to< 1504 report->Get(expected_local_stream.id())->cast_to<
1404 RTCMediaStreamStats>()); 1505 RTCMediaStreamStats>());
1405 1506
1406 RTCMediaStreamStats expected_remote_stream( 1507 RTCMediaStreamStats expected_remote_stream(
1407 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us()); 1508 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us());
1408 expected_remote_stream.stream_identifier = remote_stream->label(); 1509 expected_remote_stream.stream_identifier = remote_stream->label();
1409 expected_remote_stream.track_ids = std::vector<std::string>(); 1510 expected_remote_stream.track_ids = std::vector<std::string>();
1410 expected_remote_stream.track_ids->push_back( 1511 expected_remote_stream.track_ids->push_back(
1411 "RTCMediaStreamTrack_RemoteVideoTrackID"); 1512 "RTCMediaStreamTrack_remote_RemoteVideoTrackID");
1412 ASSERT_TRUE(report->Get(expected_remote_stream.id())); 1513 ASSERT_TRUE(report->Get(expected_remote_stream.id()));
1413 EXPECT_EQ(expected_remote_stream, 1514 EXPECT_EQ(expected_remote_stream,
1414 report->Get(expected_remote_stream.id())->cast_to< 1515 report->Get(expected_remote_stream.id())->cast_to<
1415 RTCMediaStreamStats>()); 1516 RTCMediaStreamStats>());
1416 1517
1417 RTCMediaStreamTrackStats expected_local_video_track( 1518 RTCMediaStreamTrackStats expected_local_video_track(
1418 "RTCMediaStreamTrack_LocalVideoTrackID", report->timestamp_us()); 1519 "RTCMediaStreamTrack_local_LocalVideoTrackID", report->timestamp_us());
1419 expected_local_video_track.track_identifier = local_video_track->id(); 1520 expected_local_video_track.track_identifier = local_video_track->id();
1420 expected_local_video_track.remote_source = false; 1521 expected_local_video_track.remote_source = false;
1421 expected_local_video_track.ended = false; 1522 expected_local_video_track.ended = false;
1422 expected_local_video_track.detached = false; 1523 expected_local_video_track.detached = false;
1423 expected_local_video_track.frame_width = 1234; 1524 expected_local_video_track.frame_width = 1234;
1424 expected_local_video_track.frame_height = 4321; 1525 expected_local_video_track.frame_height = 4321;
1425 ASSERT_TRUE(report->Get(expected_local_video_track.id())); 1526 ASSERT_TRUE(report->Get(expected_local_video_track.id()));
1426 EXPECT_EQ(expected_local_video_track, 1527 EXPECT_EQ(expected_local_video_track,
1427 report->Get(expected_local_video_track.id())->cast_to< 1528 report->Get(expected_local_video_track.id())->cast_to<
1428 RTCMediaStreamTrackStats>()); 1529 RTCMediaStreamTrackStats>());
1429 1530
1430 RTCMediaStreamTrackStats expected_remote_video_track( 1531 RTCMediaStreamTrackStats expected_remote_video_track(
1431 "RTCMediaStreamTrack_RemoteVideoTrackID", report->timestamp_us()); 1532 "RTCMediaStreamTrack_remote_RemoteVideoTrackID", report->timestamp_us());
1432 expected_remote_video_track.track_identifier = remote_video_track->id(); 1533 expected_remote_video_track.track_identifier = remote_video_track->id();
1433 expected_remote_video_track.remote_source = true; 1534 expected_remote_video_track.remote_source = true;
1434 expected_remote_video_track.ended = true; 1535 expected_remote_video_track.ended = true;
1435 expected_remote_video_track.detached = false; 1536 expected_remote_video_track.detached = false;
1436 expected_remote_video_track.frame_width = 1234; 1537 expected_remote_video_track.frame_width = 1234;
1437 expected_remote_video_track.frame_height = 4321; 1538 expected_remote_video_track.frame_height = 4321;
1438 ASSERT_TRUE(report->Get(expected_remote_video_track.id())); 1539 ASSERT_TRUE(report->Get(expected_remote_video_track.id()));
1439 EXPECT_EQ(expected_remote_video_track, 1540 EXPECT_EQ(expected_remote_video_track,
1440 report->Get(expected_remote_video_track.id())->cast_to< 1541 report->Get(expected_remote_video_track.id())->cast_to<
1441 RTCMediaStreamTrackStats>()); 1542 RTCMediaStreamTrackStats>());
1442 } 1543 }
1443 1544
1444 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { 1545 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) {
1445 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1546 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1446 cricket::VoiceChannel voice_channel( 1547 cricket::VoiceChannel voice_channel(
1447 test_->worker_thread(), test_->network_thread(), nullptr, 1548 test_->worker_thread(), test_->network_thread(), nullptr,
1448 test_->media_engine(), voice_media_channel, "VoiceContentName", 1549 test_->media_engine(), voice_media_channel, "VoiceContentName",
1449 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); 1550 kDefaultRtcpMuxRequired, kDefaultSrtpRequired);
1450 1551
1552 test_->SetupRemoteTrackAndReceiver(
1553 cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", 1);
1554
1451 cricket::VoiceMediaInfo voice_media_info; 1555 cricket::VoiceMediaInfo voice_media_info;
1452 1556
1453 voice_media_info.receivers.push_back(cricket::VoiceReceiverInfo()); 1557 voice_media_info.receivers.push_back(cricket::VoiceReceiverInfo());
1454 voice_media_info.receivers[0].local_stats.push_back( 1558 voice_media_info.receivers[0].local_stats.push_back(
1455 cricket::SsrcReceiverInfo()); 1559 cricket::SsrcReceiverInfo());
1456 voice_media_info.receivers[0].local_stats[0].ssrc = 1; 1560 voice_media_info.receivers[0].local_stats[0].ssrc = 1;
1457 voice_media_info.receivers[0].packets_lost = 42; 1561 voice_media_info.receivers[0].packets_lost = 42;
1458 voice_media_info.receivers[0].packets_rcvd = 2; 1562 voice_media_info.receivers[0].packets_rcvd = 2;
1459 voice_media_info.receivers[0].bytes_rcvd = 3; 1563 voice_media_info.receivers[0].bytes_rcvd = 3;
1460 voice_media_info.receivers[0].codec_payload_type = rtc::Optional<int>(42); 1564 voice_media_info.receivers[0].codec_payload_type = rtc::Optional<int>(42);
(...skipping 28 matching lines...) Expand all
1489 EXPECT_CALL(test_->session(), voice_channel()) 1593 EXPECT_CALL(test_->session(), voice_channel())
1490 .WillRepeatedly(Return(&voice_channel)); 1594 .WillRepeatedly(Return(&voice_channel));
1491 1595
1492 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1596 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1493 1597
1494 RTCInboundRTPStreamStats expected_audio( 1598 RTCInboundRTPStreamStats expected_audio(
1495 "RTCInboundRTPAudioStream_1", report->timestamp_us()); 1599 "RTCInboundRTPAudioStream_1", report->timestamp_us());
1496 expected_audio.ssrc = "1"; 1600 expected_audio.ssrc = "1";
1497 expected_audio.is_remote = false; 1601 expected_audio.is_remote = false;
1498 expected_audio.media_type = "audio"; 1602 expected_audio.media_type = "audio";
1603 expected_audio.media_track_id =
1604 "RTCMediaStreamTrack_remote_RemoteAudioTrackID";
1499 expected_audio.transport_id = "RTCTransport_TransportName_" + 1605 expected_audio.transport_id = "RTCTransport_TransportName_" +
1500 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1606 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1501 expected_audio.codec_id = "RTCCodec_InboundAudio_42"; 1607 expected_audio.codec_id = "RTCCodec_InboundAudio_42";
1502 expected_audio.packets_received = 2; 1608 expected_audio.packets_received = 2;
1503 expected_audio.bytes_received = 3; 1609 expected_audio.bytes_received = 3;
1504 expected_audio.packets_lost = 42; 1610 expected_audio.packets_lost = 42;
1505 expected_audio.jitter = 4.5; 1611 expected_audio.jitter = 4.5;
1506 expected_audio.fraction_lost = 5.5; 1612 expected_audio.fraction_lost = 5.5;
1507 1613
1508 ASSERT(report->Get(expected_audio.id())); 1614 ASSERT(report->Get(expected_audio.id()));
1509 const RTCInboundRTPStreamStats& audio = report->Get( 1615 const RTCInboundRTPStreamStats& audio = report->Get(
1510 expected_audio.id())->cast_to<RTCInboundRTPStreamStats>(); 1616 expected_audio.id())->cast_to<RTCInboundRTPStreamStats>();
1511 EXPECT_EQ(audio, expected_audio); 1617 EXPECT_EQ(audio, expected_audio);
1512 1618
1513 ASSERT_TRUE(report->Get(*expected_audio.transport_id)); 1619 EXPECT_TRUE(report->Get(*expected_audio.media_track_id));
1514 ASSERT_TRUE(report->Get(*expected_audio.codec_id)); 1620 EXPECT_TRUE(report->Get(*expected_audio.transport_id));
1621 EXPECT_TRUE(report->Get(*expected_audio.codec_id));
1515 } 1622 }
1516 1623
1517 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { 1624 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) {
1518 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1625 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1519 cricket::VideoChannel video_channel( 1626 cricket::VideoChannel video_channel(
1520 test_->worker_thread(), test_->network_thread(), nullptr, 1627 test_->worker_thread(), test_->network_thread(), nullptr,
1521 video_media_channel, "VideoContentName", kDefaultRtcpMuxRequired, 1628 video_media_channel, "VideoContentName", kDefaultRtcpMuxRequired,
1522 kDefaultSrtpRequired); 1629 kDefaultSrtpRequired);
1523 1630
1631 test_->SetupRemoteTrackAndReceiver(
1632 cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", 1);
1633
1524 cricket::VideoMediaInfo video_media_info; 1634 cricket::VideoMediaInfo video_media_info;
1525 1635
1526 video_media_info.receivers.push_back(cricket::VideoReceiverInfo()); 1636 video_media_info.receivers.push_back(cricket::VideoReceiverInfo());
1527 video_media_info.receivers[0].local_stats.push_back( 1637 video_media_info.receivers[0].local_stats.push_back(
1528 cricket::SsrcReceiverInfo()); 1638 cricket::SsrcReceiverInfo());
1529 video_media_info.receivers[0].local_stats[0].ssrc = 1; 1639 video_media_info.receivers[0].local_stats[0].ssrc = 1;
1530 video_media_info.receivers[0].packets_rcvd = 2; 1640 video_media_info.receivers[0].packets_rcvd = 2;
1531 video_media_info.receivers[0].packets_lost = 42; 1641 video_media_info.receivers[0].packets_lost = 42;
1532 video_media_info.receivers[0].bytes_rcvd = 3; 1642 video_media_info.receivers[0].bytes_rcvd = 3;
1533 video_media_info.receivers[0].fraction_lost = 4.5f; 1643 video_media_info.receivers[0].fraction_lost = 4.5f;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 EXPECT_CALL(test_->session(), video_channel()) 1675 EXPECT_CALL(test_->session(), video_channel())
1566 .WillRepeatedly(Return(&video_channel)); 1676 .WillRepeatedly(Return(&video_channel));
1567 1677
1568 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1678 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1569 1679
1570 RTCInboundRTPStreamStats expected_video( 1680 RTCInboundRTPStreamStats expected_video(
1571 "RTCInboundRTPVideoStream_1", report->timestamp_us()); 1681 "RTCInboundRTPVideoStream_1", report->timestamp_us());
1572 expected_video.ssrc = "1"; 1682 expected_video.ssrc = "1";
1573 expected_video.is_remote = false; 1683 expected_video.is_remote = false;
1574 expected_video.media_type = "video"; 1684 expected_video.media_type = "video";
1685 expected_video.media_track_id =
1686 "RTCMediaStreamTrack_remote_RemoteVideoTrackID";
1575 expected_video.transport_id = "RTCTransport_TransportName_" + 1687 expected_video.transport_id = "RTCTransport_TransportName_" +
1576 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1688 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1577 expected_video.codec_id = "RTCCodec_InboundVideo_42"; 1689 expected_video.codec_id = "RTCCodec_InboundVideo_42";
1578 expected_video.fir_count = 5; 1690 expected_video.fir_count = 5;
1579 expected_video.pli_count = 6; 1691 expected_video.pli_count = 6;
1580 expected_video.nack_count = 7; 1692 expected_video.nack_count = 7;
1581 expected_video.packets_received = 2; 1693 expected_video.packets_received = 2;
1582 expected_video.bytes_received = 3; 1694 expected_video.bytes_received = 3;
1583 expected_video.packets_lost = 42; 1695 expected_video.packets_lost = 42;
1584 expected_video.fraction_lost = 4.5; 1696 expected_video.fraction_lost = 4.5;
1585 expected_video.frames_decoded = 8; 1697 expected_video.frames_decoded = 8;
1586 1698
1587 ASSERT(report->Get(expected_video.id())); 1699 ASSERT(report->Get(expected_video.id()));
1588 const RTCInboundRTPStreamStats& video = report->Get( 1700 const RTCInboundRTPStreamStats& video = report->Get(
1589 expected_video.id())->cast_to<RTCInboundRTPStreamStats>(); 1701 expected_video.id())->cast_to<RTCInboundRTPStreamStats>();
1590 EXPECT_EQ(video, expected_video); 1702 EXPECT_EQ(video, expected_video);
1591 1703
1592 ASSERT_TRUE(report->Get(*expected_video.transport_id)); 1704 EXPECT_TRUE(report->Get(*expected_video.media_track_id));
1593 ASSERT_TRUE(report->Get(*video.codec_id)); 1705 EXPECT_TRUE(report->Get(*expected_video.transport_id));
1706 EXPECT_TRUE(report->Get(*video.codec_id));
1594 } 1707 }
1595 1708
1596 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { 1709 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) {
1597 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1710 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1598 cricket::VoiceChannel voice_channel( 1711 cricket::VoiceChannel voice_channel(
1599 test_->worker_thread(), test_->network_thread(), nullptr, 1712 test_->worker_thread(), test_->network_thread(), nullptr,
1600 test_->media_engine(), voice_media_channel, "VoiceContentName", 1713 test_->media_engine(), voice_media_channel, "VoiceContentName",
1601 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); 1714 kDefaultRtcpMuxRequired, kDefaultSrtpRequired);
1602 1715
1716 test_->SetupLocalTrackAndSender(
1717 cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID", 1);
1718
1603 cricket::VoiceMediaInfo voice_media_info; 1719 cricket::VoiceMediaInfo voice_media_info;
1604 1720
1605 voice_media_info.senders.push_back(cricket::VoiceSenderInfo()); 1721 voice_media_info.senders.push_back(cricket::VoiceSenderInfo());
1606 voice_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo()); 1722 voice_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo());
1607 voice_media_info.senders[0].local_stats[0].ssrc = 1; 1723 voice_media_info.senders[0].local_stats[0].ssrc = 1;
1608 voice_media_info.senders[0].packets_sent = 2; 1724 voice_media_info.senders[0].packets_sent = 2;
1609 voice_media_info.senders[0].bytes_sent = 3; 1725 voice_media_info.senders[0].bytes_sent = 3;
1610 voice_media_info.senders[0].rtt_ms = 4500; 1726 voice_media_info.senders[0].rtt_ms = 4500;
1611 voice_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42); 1727 voice_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42);
1612 1728
(...skipping 25 matching lines...) Expand all
1638 EXPECT_CALL(test_->session(), voice_channel()) 1754 EXPECT_CALL(test_->session(), voice_channel())
1639 .WillRepeatedly(Return(&voice_channel)); 1755 .WillRepeatedly(Return(&voice_channel));
1640 1756
1641 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1757 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1642 1758
1643 RTCOutboundRTPStreamStats expected_audio( 1759 RTCOutboundRTPStreamStats expected_audio(
1644 "RTCOutboundRTPAudioStream_1", report->timestamp_us()); 1760 "RTCOutboundRTPAudioStream_1", report->timestamp_us());
1645 expected_audio.ssrc = "1"; 1761 expected_audio.ssrc = "1";
1646 expected_audio.is_remote = false; 1762 expected_audio.is_remote = false;
1647 expected_audio.media_type = "audio"; 1763 expected_audio.media_type = "audio";
1764 expected_audio.media_track_id = "RTCMediaStreamTrack_local_LocalAudioTrackID";
1648 expected_audio.transport_id = "RTCTransport_TransportName_" + 1765 expected_audio.transport_id = "RTCTransport_TransportName_" +
1649 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1766 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1650 expected_audio.codec_id = "RTCCodec_OutboundAudio_42"; 1767 expected_audio.codec_id = "RTCCodec_OutboundAudio_42";
1651 expected_audio.packets_sent = 2; 1768 expected_audio.packets_sent = 2;
1652 expected_audio.bytes_sent = 3; 1769 expected_audio.bytes_sent = 3;
1653 expected_audio.round_trip_time = 4.5; 1770 expected_audio.round_trip_time = 4.5;
1654 1771
1655 ASSERT(report->Get(expected_audio.id())); 1772 ASSERT(report->Get(expected_audio.id()));
1656 const RTCOutboundRTPStreamStats& audio = report->Get( 1773 const RTCOutboundRTPStreamStats& audio = report->Get(
1657 expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>(); 1774 expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>();
1658 EXPECT_EQ(audio, expected_audio); 1775 EXPECT_EQ(audio, expected_audio);
1659 1776
1660 ASSERT_TRUE(report->Get(*expected_audio.transport_id)); 1777 EXPECT_TRUE(report->Get(*expected_audio.media_track_id));
1661 ASSERT_TRUE(report->Get(*expected_audio.codec_id)); 1778 EXPECT_TRUE(report->Get(*expected_audio.transport_id));
1779 EXPECT_TRUE(report->Get(*expected_audio.codec_id));
1662 } 1780 }
1663 1781
1664 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { 1782 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
1665 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1783 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1666 cricket::VideoChannel video_channel( 1784 cricket::VideoChannel video_channel(
1667 test_->worker_thread(), test_->network_thread(), nullptr, 1785 test_->worker_thread(), test_->network_thread(), nullptr,
1668 video_media_channel, "VideoContentName", kDefaultRtcpMuxRequired, 1786 video_media_channel, "VideoContentName", kDefaultRtcpMuxRequired,
1669 kDefaultSrtpRequired); 1787 kDefaultSrtpRequired);
1670 1788
1789 test_->SetupLocalTrackAndSender(
1790 cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID", 1);
1791
1671 cricket::VideoMediaInfo video_media_info; 1792 cricket::VideoMediaInfo video_media_info;
1672 1793
1673 video_media_info.senders.push_back(cricket::VideoSenderInfo()); 1794 video_media_info.senders.push_back(cricket::VideoSenderInfo());
1674 video_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo()); 1795 video_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo());
1675 video_media_info.senders[0].local_stats[0].ssrc = 1; 1796 video_media_info.senders[0].local_stats[0].ssrc = 1;
1676 video_media_info.senders[0].firs_rcvd = 2; 1797 video_media_info.senders[0].firs_rcvd = 2;
1677 video_media_info.senders[0].plis_rcvd = 3; 1798 video_media_info.senders[0].plis_rcvd = 3;
1678 video_media_info.senders[0].nacks_rcvd = 4; 1799 video_media_info.senders[0].nacks_rcvd = 4;
1679 video_media_info.senders[0].packets_sent = 5; 1800 video_media_info.senders[0].packets_sent = 5;
1680 video_media_info.senders[0].bytes_sent = 6; 1801 video_media_info.senders[0].bytes_sent = 6;
(...skipping 30 matching lines...) Expand all
1711 EXPECT_CALL(test_->session(), video_channel()) 1832 EXPECT_CALL(test_->session(), video_channel())
1712 .WillRepeatedly(Return(&video_channel)); 1833 .WillRepeatedly(Return(&video_channel));
1713 1834
1714 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1835 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1715 1836
1716 RTCOutboundRTPStreamStats expected_video( 1837 RTCOutboundRTPStreamStats expected_video(
1717 "RTCOutboundRTPVideoStream_1", report->timestamp_us()); 1838 "RTCOutboundRTPVideoStream_1", report->timestamp_us());
1718 expected_video.ssrc = "1"; 1839 expected_video.ssrc = "1";
1719 expected_video.is_remote = false; 1840 expected_video.is_remote = false;
1720 expected_video.media_type = "video"; 1841 expected_video.media_type = "video";
1842 expected_video.media_track_id = "RTCMediaStreamTrack_local_LocalVideoTrackID";
1721 expected_video.transport_id = "RTCTransport_TransportName_" + 1843 expected_video.transport_id = "RTCTransport_TransportName_" +
1722 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1844 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1723 expected_video.codec_id = "RTCCodec_OutboundVideo_42"; 1845 expected_video.codec_id = "RTCCodec_OutboundVideo_42";
1724 expected_video.fir_count = 2; 1846 expected_video.fir_count = 2;
1725 expected_video.pli_count = 3; 1847 expected_video.pli_count = 3;
1726 expected_video.nack_count = 4; 1848 expected_video.nack_count = 4;
1727 expected_video.packets_sent = 5; 1849 expected_video.packets_sent = 5;
1728 expected_video.bytes_sent = 6; 1850 expected_video.bytes_sent = 6;
1729 expected_video.round_trip_time = 7.5; 1851 expected_video.round_trip_time = 7.5;
1730 expected_video.frames_encoded = 8; 1852 expected_video.frames_encoded = 8;
1731 expected_video.qp_sum = 16; 1853 expected_video.qp_sum = 16;
1732 1854
1733 ASSERT(report->Get(expected_video.id())); 1855 ASSERT(report->Get(expected_video.id()));
1734 const RTCOutboundRTPStreamStats& video = report->Get( 1856 const RTCOutboundRTPStreamStats& video = report->Get(
1735 expected_video.id())->cast_to<RTCOutboundRTPStreamStats>(); 1857 expected_video.id())->cast_to<RTCOutboundRTPStreamStats>();
1736 EXPECT_EQ(video, expected_video); 1858 EXPECT_EQ(video, expected_video);
1737 1859
1738 ASSERT_TRUE(report->Get(*expected_video.transport_id)); 1860 EXPECT_TRUE(report->Get(*expected_video.media_track_id));
1739 ASSERT_TRUE(report->Get(*expected_video.codec_id)); 1861 EXPECT_TRUE(report->Get(*expected_video.transport_id));
1862 EXPECT_TRUE(report->Get(*expected_video.codec_id));
1740 } 1863 }
1741 1864
1742 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Default) { 1865 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Default) {
1743 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1866 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1744 cricket::VoiceChannel voice_channel( 1867 cricket::VoiceChannel voice_channel(
1745 test_->worker_thread(), test_->network_thread(), nullptr, 1868 test_->worker_thread(), test_->network_thread(), nullptr,
1746 test_->media_engine(), voice_media_channel, "VoiceContentName", 1869 test_->media_engine(), voice_media_channel, "VoiceContentName",
1747 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); 1870 kDefaultRtcpMuxRequired, kDefaultSrtpRequired);
1748 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1871 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1749 cricket::VideoChannel video_channel( 1872 cricket::VideoChannel video_channel(
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
2011 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; 2134 rtc::scoped_refptr<FakeRTCStatsCollector> collector_;
2012 }; 2135 };
2013 2136
2014 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { 2137 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) {
2015 collector_->VerifyThreadUsageAndResultsMerging(); 2138 collector_->VerifyThreadUsageAndResultsMerging();
2016 } 2139 }
2017 2140
2018 } // namespace 2141 } // namespace
2019 2142
2020 } // namespace webrtc 2143 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698