OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |