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

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

Issue 2610843003: RTC[In/Out]boundRTPStreamStats.mediaTrackId collected. (Closed)
Patch Set: track_to_id_ for thread-safety and 'if (track)' on inbound 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
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 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 new FakeAudioProcessorForStats(remote_audio_processor_stats)); 1353 new FakeAudioProcessorForStats(remote_audio_processor_stats));
1253 remote_stream->AddTrack(remote_audio_track); 1354 remote_stream->AddTrack(remote_audio_track);
1254 1355
1255 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1356 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1256 1357
1257 RTCMediaStreamStats expected_local_stream( 1358 RTCMediaStreamStats expected_local_stream(
1258 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us()); 1359 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us());
1259 expected_local_stream.stream_identifier = local_stream->label(); 1360 expected_local_stream.stream_identifier = local_stream->label();
1260 expected_local_stream.track_ids = std::vector<std::string>(); 1361 expected_local_stream.track_ids = std::vector<std::string>();
1261 expected_local_stream.track_ids->push_back( 1362 expected_local_stream.track_ids->push_back(
1262 "RTCMediaStreamTrack_LocalAudioTrackID"); 1363 "RTCMediaStreamTrack_local_LocalAudioTrackID");
1263 ASSERT_TRUE(report->Get(expected_local_stream.id())); 1364 ASSERT_TRUE(report->Get(expected_local_stream.id()));
1264 EXPECT_EQ(expected_local_stream, 1365 EXPECT_EQ(expected_local_stream,
1265 report->Get(expected_local_stream.id())->cast_to< 1366 report->Get(expected_local_stream.id())->cast_to<
1266 RTCMediaStreamStats>()); 1367 RTCMediaStreamStats>());
1267 1368
1268 RTCMediaStreamStats expected_remote_stream( 1369 RTCMediaStreamStats expected_remote_stream(
1269 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us()); 1370 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us());
1270 expected_remote_stream.stream_identifier = remote_stream->label(); 1371 expected_remote_stream.stream_identifier = remote_stream->label();
1271 expected_remote_stream.track_ids = std::vector<std::string>(); 1372 expected_remote_stream.track_ids = std::vector<std::string>();
1272 expected_remote_stream.track_ids->push_back( 1373 expected_remote_stream.track_ids->push_back(
1273 "RTCMediaStreamTrack_RemoteAudioTrackID"); 1374 "RTCMediaStreamTrack_remote_RemoteAudioTrackID");
1274 ASSERT_TRUE(report->Get(expected_remote_stream.id())); 1375 ASSERT_TRUE(report->Get(expected_remote_stream.id()));
1275 EXPECT_EQ(expected_remote_stream, 1376 EXPECT_EQ(expected_remote_stream,
1276 report->Get(expected_remote_stream.id())->cast_to< 1377 report->Get(expected_remote_stream.id())->cast_to<
1277 RTCMediaStreamStats>()); 1378 RTCMediaStreamStats>());
1278 1379
1279 RTCMediaStreamTrackStats expected_local_audio_track( 1380 RTCMediaStreamTrackStats expected_local_audio_track(
1280 "RTCMediaStreamTrack_LocalAudioTrackID", report->timestamp_us()); 1381 "RTCMediaStreamTrack_local_LocalAudioTrackID", report->timestamp_us());
1281 expected_local_audio_track.track_identifier = local_audio_track->id(); 1382 expected_local_audio_track.track_identifier = local_audio_track->id();
1282 expected_local_audio_track.remote_source = false; 1383 expected_local_audio_track.remote_source = false;
1283 expected_local_audio_track.ended = true; 1384 expected_local_audio_track.ended = true;
1284 expected_local_audio_track.detached = false; 1385 expected_local_audio_track.detached = false;
1285 expected_local_audio_track.audio_level = 1.0; 1386 expected_local_audio_track.audio_level = 1.0;
1286 expected_local_audio_track.echo_return_loss = 42.0; 1387 expected_local_audio_track.echo_return_loss = 42.0;
1287 expected_local_audio_track.echo_return_loss_enhancement = 52.0; 1388 expected_local_audio_track.echo_return_loss_enhancement = 52.0;
1288 ASSERT_TRUE(report->Get(expected_local_audio_track.id())); 1389 ASSERT_TRUE(report->Get(expected_local_audio_track.id()));
1289 EXPECT_EQ(expected_local_audio_track, 1390 EXPECT_EQ(expected_local_audio_track,
1290 report->Get(expected_local_audio_track.id())->cast_to< 1391 report->Get(expected_local_audio_track.id())->cast_to<
1291 RTCMediaStreamTrackStats>()); 1392 RTCMediaStreamTrackStats>());
1292 1393
1293 RTCMediaStreamTrackStats expected_remote_audio_track( 1394 RTCMediaStreamTrackStats expected_remote_audio_track(
1294 "RTCMediaStreamTrack_RemoteAudioTrackID", report->timestamp_us()); 1395 "RTCMediaStreamTrack_remote_RemoteAudioTrackID", report->timestamp_us());
1295 expected_remote_audio_track.track_identifier = remote_audio_track->id(); 1396 expected_remote_audio_track.track_identifier = remote_audio_track->id();
1296 expected_remote_audio_track.remote_source = true; 1397 expected_remote_audio_track.remote_source = true;
1297 expected_remote_audio_track.ended = false; 1398 expected_remote_audio_track.ended = false;
1298 expected_remote_audio_track.detached = false; 1399 expected_remote_audio_track.detached = false;
1299 expected_remote_audio_track.audio_level = 0.0; 1400 expected_remote_audio_track.audio_level = 0.0;
1300 expected_remote_audio_track.echo_return_loss = 13.0; 1401 expected_remote_audio_track.echo_return_loss = 13.0;
1301 expected_remote_audio_track.echo_return_loss_enhancement = 37.0; 1402 expected_remote_audio_track.echo_return_loss_enhancement = 37.0;
1302 ASSERT_TRUE(report->Get(expected_remote_audio_track.id())); 1403 ASSERT_TRUE(report->Get(expected_remote_audio_track.id()));
1303 EXPECT_EQ(expected_remote_audio_track, 1404 EXPECT_EQ(expected_remote_audio_track,
1304 report->Get(expected_remote_audio_track.id())->cast_to< 1405 report->Get(expected_remote_audio_track.id())->cast_to<
(...skipping 19 matching lines...) Expand all
1324 FakeAudioTrackForStats::Create( 1425 FakeAudioTrackForStats::Create(
1325 "LocalAudioTrackID", 1426 "LocalAudioTrackID",
1326 MediaStreamTrackInterface::TrackState::kEnded, 1427 MediaStreamTrackInterface::TrackState::kEnded,
1327 32767, 1428 32767,
1328 new FakeAudioProcessorForStats(local_audio_processor_stats)); 1429 new FakeAudioProcessorForStats(local_audio_processor_stats));
1329 local_stream->AddTrack(local_audio_track); 1430 local_stream->AddTrack(local_audio_track);
1330 1431
1331 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1432 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1332 1433
1333 RTCMediaStreamTrackStats expected_local_audio_track( 1434 RTCMediaStreamTrackStats expected_local_audio_track(
1334 "RTCMediaStreamTrack_LocalAudioTrackID", report->timestamp_us()); 1435 "RTCMediaStreamTrack_local_LocalAudioTrackID", report->timestamp_us());
1335 expected_local_audio_track.track_identifier = local_audio_track->id(); 1436 expected_local_audio_track.track_identifier = local_audio_track->id();
1336 expected_local_audio_track.remote_source = false; 1437 expected_local_audio_track.remote_source = false;
1337 expected_local_audio_track.ended = true; 1438 expected_local_audio_track.ended = true;
1338 expected_local_audio_track.detached = false; 1439 expected_local_audio_track.detached = false;
1339 expected_local_audio_track.audio_level = 1.0; 1440 expected_local_audio_track.audio_level = 1.0;
1340 // Should be undefined: |expected_local_audio_track.echo_return_loss| and 1441 // Should be undefined: |expected_local_audio_track.echo_return_loss| and
1341 // |expected_local_audio_track.echo_return_loss_enhancement|. 1442 // |expected_local_audio_track.echo_return_loss_enhancement|.
1342 ASSERT_TRUE(report->Get(expected_local_audio_track.id())); 1443 ASSERT_TRUE(report->Get(expected_local_audio_track.id()));
1343 EXPECT_EQ(expected_local_audio_track, 1444 EXPECT_EQ(expected_local_audio_track,
1344 report->Get(expected_local_audio_track.id())->cast_to< 1445 report->Get(expected_local_audio_track.id())->cast_to<
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 remote_video_track_source); 1490 remote_video_track_source);
1390 remote_stream->AddTrack(remote_video_track); 1491 remote_stream->AddTrack(remote_video_track);
1391 1492
1392 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1493 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1393 1494
1394 RTCMediaStreamStats expected_local_stream( 1495 RTCMediaStreamStats expected_local_stream(
1395 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us()); 1496 "RTCMediaStream_local_LocalStreamLabel", report->timestamp_us());
1396 expected_local_stream.stream_identifier = local_stream->label(); 1497 expected_local_stream.stream_identifier = local_stream->label();
1397 expected_local_stream.track_ids = std::vector<std::string>(); 1498 expected_local_stream.track_ids = std::vector<std::string>();
1398 expected_local_stream.track_ids->push_back( 1499 expected_local_stream.track_ids->push_back(
1399 "RTCMediaStreamTrack_LocalVideoTrackID"); 1500 "RTCMediaStreamTrack_local_LocalVideoTrackID");
1400 ASSERT_TRUE(report->Get(expected_local_stream.id())); 1501 ASSERT_TRUE(report->Get(expected_local_stream.id()));
1401 EXPECT_EQ(expected_local_stream, 1502 EXPECT_EQ(expected_local_stream,
1402 report->Get(expected_local_stream.id())->cast_to< 1503 report->Get(expected_local_stream.id())->cast_to<
1403 RTCMediaStreamStats>()); 1504 RTCMediaStreamStats>());
1404 1505
1405 RTCMediaStreamStats expected_remote_stream( 1506 RTCMediaStreamStats expected_remote_stream(
1406 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us()); 1507 "RTCMediaStream_remote_RemoteStreamLabel", report->timestamp_us());
1407 expected_remote_stream.stream_identifier = remote_stream->label(); 1508 expected_remote_stream.stream_identifier = remote_stream->label();
1408 expected_remote_stream.track_ids = std::vector<std::string>(); 1509 expected_remote_stream.track_ids = std::vector<std::string>();
1409 expected_remote_stream.track_ids->push_back( 1510 expected_remote_stream.track_ids->push_back(
1410 "RTCMediaStreamTrack_RemoteVideoTrackID"); 1511 "RTCMediaStreamTrack_remote_RemoteVideoTrackID");
1411 ASSERT_TRUE(report->Get(expected_remote_stream.id())); 1512 ASSERT_TRUE(report->Get(expected_remote_stream.id()));
1412 EXPECT_EQ(expected_remote_stream, 1513 EXPECT_EQ(expected_remote_stream,
1413 report->Get(expected_remote_stream.id())->cast_to< 1514 report->Get(expected_remote_stream.id())->cast_to<
1414 RTCMediaStreamStats>()); 1515 RTCMediaStreamStats>());
1415 1516
1416 RTCMediaStreamTrackStats expected_local_video_track( 1517 RTCMediaStreamTrackStats expected_local_video_track(
1417 "RTCMediaStreamTrack_LocalVideoTrackID", report->timestamp_us()); 1518 "RTCMediaStreamTrack_local_LocalVideoTrackID", report->timestamp_us());
1418 expected_local_video_track.track_identifier = local_video_track->id(); 1519 expected_local_video_track.track_identifier = local_video_track->id();
1419 expected_local_video_track.remote_source = false; 1520 expected_local_video_track.remote_source = false;
1420 expected_local_video_track.ended = false; 1521 expected_local_video_track.ended = false;
1421 expected_local_video_track.detached = false; 1522 expected_local_video_track.detached = false;
1422 expected_local_video_track.frame_width = 1234; 1523 expected_local_video_track.frame_width = 1234;
1423 expected_local_video_track.frame_height = 4321; 1524 expected_local_video_track.frame_height = 4321;
1424 ASSERT_TRUE(report->Get(expected_local_video_track.id())); 1525 ASSERT_TRUE(report->Get(expected_local_video_track.id()));
1425 EXPECT_EQ(expected_local_video_track, 1526 EXPECT_EQ(expected_local_video_track,
1426 report->Get(expected_local_video_track.id())->cast_to< 1527 report->Get(expected_local_video_track.id())->cast_to<
1427 RTCMediaStreamTrackStats>()); 1528 RTCMediaStreamTrackStats>());
1428 1529
1429 RTCMediaStreamTrackStats expected_remote_video_track( 1530 RTCMediaStreamTrackStats expected_remote_video_track(
1430 "RTCMediaStreamTrack_RemoteVideoTrackID", report->timestamp_us()); 1531 "RTCMediaStreamTrack_remote_RemoteVideoTrackID", report->timestamp_us());
1431 expected_remote_video_track.track_identifier = remote_video_track->id(); 1532 expected_remote_video_track.track_identifier = remote_video_track->id();
1432 expected_remote_video_track.remote_source = true; 1533 expected_remote_video_track.remote_source = true;
1433 expected_remote_video_track.ended = true; 1534 expected_remote_video_track.ended = true;
1434 expected_remote_video_track.detached = false; 1535 expected_remote_video_track.detached = false;
1435 expected_remote_video_track.frame_width = 1234; 1536 expected_remote_video_track.frame_width = 1234;
1436 expected_remote_video_track.frame_height = 4321; 1537 expected_remote_video_track.frame_height = 4321;
1437 ASSERT_TRUE(report->Get(expected_remote_video_track.id())); 1538 ASSERT_TRUE(report->Get(expected_remote_video_track.id()));
1438 EXPECT_EQ(expected_remote_video_track, 1539 EXPECT_EQ(expected_remote_video_track,
1439 report->Get(expected_remote_video_track.id())->cast_to< 1540 report->Get(expected_remote_video_track.id())->cast_to<
1440 RTCMediaStreamTrackStats>()); 1541 RTCMediaStreamTrackStats>());
1441 } 1542 }
1442 1543
1443 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { 1544 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) {
1444 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1545 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1445 cricket::VoiceChannel voice_channel( 1546 cricket::VoiceChannel voice_channel(
1446 test_->worker_thread(), test_->network_thread(), test_->media_engine(), 1547 test_->worker_thread(), test_->network_thread(), test_->media_engine(),
1447 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled, 1548 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled,
1448 kDefaultSrtpRequired); 1549 kDefaultSrtpRequired);
1449 1550
1551 test_->SetupRemoteTrackAndReceiver(
1552 cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", 1);
1553
1450 cricket::VoiceMediaInfo voice_media_info; 1554 cricket::VoiceMediaInfo voice_media_info;
1451 1555
1452 voice_media_info.receivers.push_back(cricket::VoiceReceiverInfo()); 1556 voice_media_info.receivers.push_back(cricket::VoiceReceiverInfo());
1453 voice_media_info.receivers[0].local_stats.push_back( 1557 voice_media_info.receivers[0].local_stats.push_back(
1454 cricket::SsrcReceiverInfo()); 1558 cricket::SsrcReceiverInfo());
1455 voice_media_info.receivers[0].local_stats[0].ssrc = 1; 1559 voice_media_info.receivers[0].local_stats[0].ssrc = 1;
1456 voice_media_info.receivers[0].packets_lost = 42; 1560 voice_media_info.receivers[0].packets_lost = 42;
1457 voice_media_info.receivers[0].packets_rcvd = 2; 1561 voice_media_info.receivers[0].packets_rcvd = 2;
1458 voice_media_info.receivers[0].bytes_rcvd = 3; 1562 voice_media_info.receivers[0].bytes_rcvd = 3;
1459 voice_media_info.receivers[0].codec_payload_type = rtc::Optional<int>(42); 1563 voice_media_info.receivers[0].codec_payload_type = rtc::Optional<int>(42);
(...skipping 28 matching lines...) Expand all
1488 EXPECT_CALL(test_->session(), voice_channel()) 1592 EXPECT_CALL(test_->session(), voice_channel())
1489 .WillRepeatedly(Return(&voice_channel)); 1593 .WillRepeatedly(Return(&voice_channel));
1490 1594
1491 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1595 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1492 1596
1493 RTCInboundRTPStreamStats expected_audio( 1597 RTCInboundRTPStreamStats expected_audio(
1494 "RTCInboundRTPAudioStream_1", report->timestamp_us()); 1598 "RTCInboundRTPAudioStream_1", report->timestamp_us());
1495 expected_audio.ssrc = "1"; 1599 expected_audio.ssrc = "1";
1496 expected_audio.is_remote = false; 1600 expected_audio.is_remote = false;
1497 expected_audio.media_type = "audio"; 1601 expected_audio.media_type = "audio";
1602 expected_audio.media_track_id =
1603 "RTCMediaStreamTrack_remote_RemoteAudioTrackID";
1498 expected_audio.transport_id = "RTCTransport_TransportName_" + 1604 expected_audio.transport_id = "RTCTransport_TransportName_" +
1499 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1605 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1500 expected_audio.codec_id = "RTCCodec_InboundAudio_42"; 1606 expected_audio.codec_id = "RTCCodec_InboundAudio_42";
1501 expected_audio.packets_received = 2; 1607 expected_audio.packets_received = 2;
1502 expected_audio.bytes_received = 3; 1608 expected_audio.bytes_received = 3;
1503 expected_audio.packets_lost = 42; 1609 expected_audio.packets_lost = 42;
1504 expected_audio.jitter = 4.5; 1610 expected_audio.jitter = 4.5;
1505 expected_audio.fraction_lost = 5.5; 1611 expected_audio.fraction_lost = 5.5;
1506 1612
1507 ASSERT(report->Get(expected_audio.id())); 1613 ASSERT(report->Get(expected_audio.id()));
1508 const RTCInboundRTPStreamStats& audio = report->Get( 1614 const RTCInboundRTPStreamStats& audio = report->Get(
1509 expected_audio.id())->cast_to<RTCInboundRTPStreamStats>(); 1615 expected_audio.id())->cast_to<RTCInboundRTPStreamStats>();
1510 EXPECT_EQ(audio, expected_audio); 1616 EXPECT_EQ(audio, expected_audio);
1511 1617
1512 ASSERT_TRUE(report->Get(*expected_audio.transport_id)); 1618 EXPECT_TRUE(report->Get(*expected_audio.media_track_id));
1513 ASSERT_TRUE(report->Get(*expected_audio.codec_id)); 1619 EXPECT_TRUE(report->Get(*expected_audio.transport_id));
1620 EXPECT_TRUE(report->Get(*expected_audio.codec_id));
1514 } 1621 }
1515 1622
1516 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { 1623 TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) {
1517 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1624 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1518 cricket::VideoChannel video_channel( 1625 cricket::VideoChannel video_channel(
1519 test_->worker_thread(), test_->network_thread(), video_media_channel, 1626 test_->worker_thread(), test_->network_thread(), video_media_channel,
1520 nullptr, "VideoContentName", kDefaultRtcpEnabled, kDefaultSrtpRequired); 1627 nullptr, "VideoContentName", kDefaultRtcpEnabled, kDefaultSrtpRequired);
1521 1628
1629 test_->SetupRemoteTrackAndReceiver(
1630 cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", 1);
1631
1522 cricket::VideoMediaInfo video_media_info; 1632 cricket::VideoMediaInfo video_media_info;
1523 1633
1524 video_media_info.receivers.push_back(cricket::VideoReceiverInfo()); 1634 video_media_info.receivers.push_back(cricket::VideoReceiverInfo());
1525 video_media_info.receivers[0].local_stats.push_back( 1635 video_media_info.receivers[0].local_stats.push_back(
1526 cricket::SsrcReceiverInfo()); 1636 cricket::SsrcReceiverInfo());
1527 video_media_info.receivers[0].local_stats[0].ssrc = 1; 1637 video_media_info.receivers[0].local_stats[0].ssrc = 1;
1528 video_media_info.receivers[0].packets_rcvd = 2; 1638 video_media_info.receivers[0].packets_rcvd = 2;
1529 video_media_info.receivers[0].packets_lost = 42; 1639 video_media_info.receivers[0].packets_lost = 42;
1530 video_media_info.receivers[0].bytes_rcvd = 3; 1640 video_media_info.receivers[0].bytes_rcvd = 3;
1531 video_media_info.receivers[0].fraction_lost = 4.5f; 1641 video_media_info.receivers[0].fraction_lost = 4.5f;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 EXPECT_CALL(test_->session(), video_channel()) 1673 EXPECT_CALL(test_->session(), video_channel())
1564 .WillRepeatedly(Return(&video_channel)); 1674 .WillRepeatedly(Return(&video_channel));
1565 1675
1566 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1676 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1567 1677
1568 RTCInboundRTPStreamStats expected_video( 1678 RTCInboundRTPStreamStats expected_video(
1569 "RTCInboundRTPVideoStream_1", report->timestamp_us()); 1679 "RTCInboundRTPVideoStream_1", report->timestamp_us());
1570 expected_video.ssrc = "1"; 1680 expected_video.ssrc = "1";
1571 expected_video.is_remote = false; 1681 expected_video.is_remote = false;
1572 expected_video.media_type = "video"; 1682 expected_video.media_type = "video";
1683 expected_video.media_track_id =
1684 "RTCMediaStreamTrack_remote_RemoteVideoTrackID";
1573 expected_video.transport_id = "RTCTransport_TransportName_" + 1685 expected_video.transport_id = "RTCTransport_TransportName_" +
1574 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1686 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1575 expected_video.codec_id = "RTCCodec_InboundVideo_42"; 1687 expected_video.codec_id = "RTCCodec_InboundVideo_42";
1576 expected_video.fir_count = 5; 1688 expected_video.fir_count = 5;
1577 expected_video.pli_count = 6; 1689 expected_video.pli_count = 6;
1578 expected_video.nack_count = 7; 1690 expected_video.nack_count = 7;
1579 expected_video.packets_received = 2; 1691 expected_video.packets_received = 2;
1580 expected_video.bytes_received = 3; 1692 expected_video.bytes_received = 3;
1581 expected_video.packets_lost = 42; 1693 expected_video.packets_lost = 42;
1582 expected_video.fraction_lost = 4.5; 1694 expected_video.fraction_lost = 4.5;
1583 expected_video.frames_decoded = 8; 1695 expected_video.frames_decoded = 8;
1584 1696
1585 ASSERT(report->Get(expected_video.id())); 1697 ASSERT(report->Get(expected_video.id()));
1586 const RTCInboundRTPStreamStats& video = report->Get( 1698 const RTCInboundRTPStreamStats& video = report->Get(
1587 expected_video.id())->cast_to<RTCInboundRTPStreamStats>(); 1699 expected_video.id())->cast_to<RTCInboundRTPStreamStats>();
1588 EXPECT_EQ(video, expected_video); 1700 EXPECT_EQ(video, expected_video);
1589 1701
1590 ASSERT_TRUE(report->Get(*expected_video.transport_id)); 1702 EXPECT_TRUE(report->Get(*expected_video.media_track_id));
1591 ASSERT_TRUE(report->Get(*video.codec_id)); 1703 EXPECT_TRUE(report->Get(*expected_video.transport_id));
1704 EXPECT_TRUE(report->Get(*video.codec_id));
1592 } 1705 }
1593 1706
1594 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { 1707 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) {
1595 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1708 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1596 cricket::VoiceChannel voice_channel( 1709 cricket::VoiceChannel voice_channel(
1597 test_->worker_thread(), test_->network_thread(), test_->media_engine(), 1710 test_->worker_thread(), test_->network_thread(), test_->media_engine(),
1598 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled, 1711 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled,
1599 kDefaultSrtpRequired); 1712 kDefaultSrtpRequired);
1600 1713
1714 test_->SetupLocalTrackAndSender(
1715 cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID", 1);
1716
1601 cricket::VoiceMediaInfo voice_media_info; 1717 cricket::VoiceMediaInfo voice_media_info;
1602 1718
1603 voice_media_info.senders.push_back(cricket::VoiceSenderInfo()); 1719 voice_media_info.senders.push_back(cricket::VoiceSenderInfo());
1604 voice_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo()); 1720 voice_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo());
1605 voice_media_info.senders[0].local_stats[0].ssrc = 1; 1721 voice_media_info.senders[0].local_stats[0].ssrc = 1;
1606 voice_media_info.senders[0].packets_sent = 2; 1722 voice_media_info.senders[0].packets_sent = 2;
1607 voice_media_info.senders[0].bytes_sent = 3; 1723 voice_media_info.senders[0].bytes_sent = 3;
1608 voice_media_info.senders[0].rtt_ms = 4500; 1724 voice_media_info.senders[0].rtt_ms = 4500;
1609 voice_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42); 1725 voice_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42);
1610 1726
(...skipping 25 matching lines...) Expand all
1636 EXPECT_CALL(test_->session(), voice_channel()) 1752 EXPECT_CALL(test_->session(), voice_channel())
1637 .WillRepeatedly(Return(&voice_channel)); 1753 .WillRepeatedly(Return(&voice_channel));
1638 1754
1639 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1755 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1640 1756
1641 RTCOutboundRTPStreamStats expected_audio( 1757 RTCOutboundRTPStreamStats expected_audio(
1642 "RTCOutboundRTPAudioStream_1", report->timestamp_us()); 1758 "RTCOutboundRTPAudioStream_1", report->timestamp_us());
1643 expected_audio.ssrc = "1"; 1759 expected_audio.ssrc = "1";
1644 expected_audio.is_remote = false; 1760 expected_audio.is_remote = false;
1645 expected_audio.media_type = "audio"; 1761 expected_audio.media_type = "audio";
1762 expected_audio.media_track_id = "RTCMediaStreamTrack_local_LocalAudioTrackID";
1646 expected_audio.transport_id = "RTCTransport_TransportName_" + 1763 expected_audio.transport_id = "RTCTransport_TransportName_" +
1647 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1764 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1648 expected_audio.codec_id = "RTCCodec_OutboundAudio_42"; 1765 expected_audio.codec_id = "RTCCodec_OutboundAudio_42";
1649 expected_audio.packets_sent = 2; 1766 expected_audio.packets_sent = 2;
1650 expected_audio.bytes_sent = 3; 1767 expected_audio.bytes_sent = 3;
1651 expected_audio.round_trip_time = 4.5; 1768 expected_audio.round_trip_time = 4.5;
1652 1769
1653 ASSERT(report->Get(expected_audio.id())); 1770 ASSERT(report->Get(expected_audio.id()));
1654 const RTCOutboundRTPStreamStats& audio = report->Get( 1771 const RTCOutboundRTPStreamStats& audio = report->Get(
1655 expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>(); 1772 expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>();
1656 EXPECT_EQ(audio, expected_audio); 1773 EXPECT_EQ(audio, expected_audio);
1657 1774
1658 ASSERT_TRUE(report->Get(*expected_audio.transport_id)); 1775 EXPECT_TRUE(report->Get(*expected_audio.media_track_id));
1659 ASSERT_TRUE(report->Get(*expected_audio.codec_id)); 1776 EXPECT_TRUE(report->Get(*expected_audio.transport_id));
1777 EXPECT_TRUE(report->Get(*expected_audio.codec_id));
1660 } 1778 }
1661 1779
1662 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { 1780 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
1663 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1781 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1664 cricket::VideoChannel video_channel( 1782 cricket::VideoChannel video_channel(
1665 test_->worker_thread(), test_->network_thread(), video_media_channel, 1783 test_->worker_thread(), test_->network_thread(), video_media_channel,
1666 nullptr, "VideoContentName", kDefaultRtcpEnabled, kDefaultSrtpRequired); 1784 nullptr, "VideoContentName", kDefaultRtcpEnabled, kDefaultSrtpRequired);
1667 1785
1786 test_->SetupLocalTrackAndSender(
1787 cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID", 1);
1788
1668 cricket::VideoMediaInfo video_media_info; 1789 cricket::VideoMediaInfo video_media_info;
1669 1790
1670 video_media_info.senders.push_back(cricket::VideoSenderInfo()); 1791 video_media_info.senders.push_back(cricket::VideoSenderInfo());
1671 video_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo()); 1792 video_media_info.senders[0].local_stats.push_back(cricket::SsrcSenderInfo());
1672 video_media_info.senders[0].local_stats[0].ssrc = 1; 1793 video_media_info.senders[0].local_stats[0].ssrc = 1;
1673 video_media_info.senders[0].firs_rcvd = 2; 1794 video_media_info.senders[0].firs_rcvd = 2;
1674 video_media_info.senders[0].plis_rcvd = 3; 1795 video_media_info.senders[0].plis_rcvd = 3;
1675 video_media_info.senders[0].nacks_rcvd = 4; 1796 video_media_info.senders[0].nacks_rcvd = 4;
1676 video_media_info.senders[0].packets_sent = 5; 1797 video_media_info.senders[0].packets_sent = 5;
1677 video_media_info.senders[0].bytes_sent = 6; 1798 video_media_info.senders[0].bytes_sent = 6;
(...skipping 30 matching lines...) Expand all
1708 EXPECT_CALL(test_->session(), video_channel()) 1829 EXPECT_CALL(test_->session(), video_channel())
1709 .WillRepeatedly(Return(&video_channel)); 1830 .WillRepeatedly(Return(&video_channel));
1710 1831
1711 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport(); 1832 rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
1712 1833
1713 RTCOutboundRTPStreamStats expected_video( 1834 RTCOutboundRTPStreamStats expected_video(
1714 "RTCOutboundRTPVideoStream_1", report->timestamp_us()); 1835 "RTCOutboundRTPVideoStream_1", report->timestamp_us());
1715 expected_video.ssrc = "1"; 1836 expected_video.ssrc = "1";
1716 expected_video.is_remote = false; 1837 expected_video.is_remote = false;
1717 expected_video.media_type = "video"; 1838 expected_video.media_type = "video";
1839 expected_video.media_track_id = "RTCMediaStreamTrack_local_LocalVideoTrackID";
1718 expected_video.transport_id = "RTCTransport_TransportName_" + 1840 expected_video.transport_id = "RTCTransport_TransportName_" +
1719 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP); 1841 rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
1720 expected_video.codec_id = "RTCCodec_OutboundVideo_42"; 1842 expected_video.codec_id = "RTCCodec_OutboundVideo_42";
1721 expected_video.fir_count = 2; 1843 expected_video.fir_count = 2;
1722 expected_video.pli_count = 3; 1844 expected_video.pli_count = 3;
1723 expected_video.nack_count = 4; 1845 expected_video.nack_count = 4;
1724 expected_video.packets_sent = 5; 1846 expected_video.packets_sent = 5;
1725 expected_video.bytes_sent = 6; 1847 expected_video.bytes_sent = 6;
1726 expected_video.round_trip_time = 7.5; 1848 expected_video.round_trip_time = 7.5;
1727 expected_video.frames_encoded = 8; 1849 expected_video.frames_encoded = 8;
1728 expected_video.qp_sum = 16; 1850 expected_video.qp_sum = 16;
1729 1851
1730 ASSERT(report->Get(expected_video.id())); 1852 ASSERT(report->Get(expected_video.id()));
1731 const RTCOutboundRTPStreamStats& video = report->Get( 1853 const RTCOutboundRTPStreamStats& video = report->Get(
1732 expected_video.id())->cast_to<RTCOutboundRTPStreamStats>(); 1854 expected_video.id())->cast_to<RTCOutboundRTPStreamStats>();
1733 EXPECT_EQ(video, expected_video); 1855 EXPECT_EQ(video, expected_video);
1734 1856
1735 ASSERT_TRUE(report->Get(*expected_video.transport_id)); 1857 EXPECT_TRUE(report->Get(*expected_video.media_track_id));
1736 ASSERT_TRUE(report->Get(*expected_video.codec_id)); 1858 EXPECT_TRUE(report->Get(*expected_video.transport_id));
1859 EXPECT_TRUE(report->Get(*expected_video.codec_id));
1737 } 1860 }
1738 1861
1739 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Default) { 1862 TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Default) {
1740 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); 1863 MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel();
1741 cricket::VoiceChannel voice_channel( 1864 cricket::VoiceChannel voice_channel(
1742 test_->worker_thread(), test_->network_thread(), test_->media_engine(), 1865 test_->worker_thread(), test_->network_thread(), test_->media_engine(),
1743 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled, 1866 voice_media_channel, nullptr, "VoiceContentName", kDefaultRtcpEnabled,
1744 kDefaultSrtpRequired); 1867 kDefaultSrtpRequired);
1745 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); 1868 MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel();
1746 cricket::VideoChannel video_channel( 1869 cricket::VideoChannel video_channel(
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; 2130 rtc::scoped_refptr<FakeRTCStatsCollector> collector_;
2008 }; 2131 };
2009 2132
2010 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { 2133 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) {
2011 collector_->VerifyThreadUsageAndResultsMerging(); 2134 collector_->VerifyThreadUsageAndResultsMerging();
2012 } 2135 }
2013 2136
2014 } // namespace 2137 } // namespace
2015 2138
2016 } // namespace webrtc 2139 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698