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 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |