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

Side by Side Diff: talk/app/webrtc/peerconnection_unittest.cc

Issue 1156143005: Report metrics about negotiated ciphers. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Renamed properties and provide accessors. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 15 matching lines...) Expand all
26 */ 26 */
27 27
28 #include <stdio.h> 28 #include <stdio.h>
29 29
30 #include <algorithm> 30 #include <algorithm>
31 #include <list> 31 #include <list>
32 #include <map> 32 #include <map>
33 #include <vector> 33 #include <vector>
34 34
35 #include "talk/app/webrtc/dtmfsender.h" 35 #include "talk/app/webrtc/dtmfsender.h"
36 #include "talk/app/webrtc/fakemetricsobserver.h"
36 #include "talk/app/webrtc/fakeportallocatorfactory.h" 37 #include "talk/app/webrtc/fakeportallocatorfactory.h"
37 #include "talk/app/webrtc/localaudiosource.h" 38 #include "talk/app/webrtc/localaudiosource.h"
38 #include "talk/app/webrtc/mediastreaminterface.h" 39 #include "talk/app/webrtc/mediastreaminterface.h"
39 #include "talk/app/webrtc/peerconnectionfactory.h" 40 #include "talk/app/webrtc/peerconnectionfactory.h"
40 #include "talk/app/webrtc/peerconnectioninterface.h" 41 #include "talk/app/webrtc/peerconnectioninterface.h"
41 #include "talk/app/webrtc/test/fakeaudiocapturemodule.h" 42 #include "talk/app/webrtc/test/fakeaudiocapturemodule.h"
42 #include "talk/app/webrtc/test/fakeconstraints.h" 43 #include "talk/app/webrtc/test/fakeconstraints.h"
43 #include "talk/app/webrtc/test/fakedtlsidentityservice.h" 44 #include "talk/app/webrtc/test/fakedtlsidentityservice.h"
44 #include "talk/app/webrtc/test/fakeperiodicvideocapturer.h" 45 #include "talk/app/webrtc/test/fakeperiodicvideocapturer.h"
45 #include "talk/app/webrtc/test/fakevideotrackrenderer.h" 46 #include "talk/app/webrtc/test/fakevideotrackrenderer.h"
(...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 kMaxWaitForStatsMs); 1330 kMaxWaitForStatsMs);
1330 } 1331 }
1331 1332
1332 // Test that DTLS 1.0 is used if both sides only support DTLS 1.0. 1333 // Test that DTLS 1.0 is used if both sides only support DTLS 1.0.
1333 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12None) { 1334 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12None) {
1334 PeerConnectionFactory::Options init_options; 1335 PeerConnectionFactory::Options init_options;
1335 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1336 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1336 PeerConnectionFactory::Options recv_options; 1337 PeerConnectionFactory::Options recv_options;
1337 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1338 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1338 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); 1339 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options));
1340 webrtc::FakeMetricsObserver init_observer;
1341 initializing_client()->pc()->RegisterUMAObserver(&init_observer);
1339 LocalP2PTest(); 1342 LocalP2PTest();
1340 1343
1341 EXPECT_EQ_WAIT( 1344 EXPECT_EQ_WAIT(
1342 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), 1345 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1343 initializing_client()->GetDtlsCipherStats(), 1346 initializing_client()->GetDtlsCipherStats(),
1344 kMaxWaitForStatsMs); 1347 kMaxWaitForStatsMs);
1348 EXPECT_EQ(
1349 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1350 init_observer.GetStringHistogramSample(webrtc::kAudioSslCipher));
1345 1351
1346 EXPECT_EQ_WAIT( 1352 EXPECT_EQ_WAIT(
1347 kDefaultSrtpCipher, 1353 kDefaultSrtpCipher,
1348 initializing_client()->GetSrtpCipherStats(), 1354 initializing_client()->GetSrtpCipherStats(),
1349 kMaxWaitForStatsMs); 1355 kMaxWaitForStatsMs);
1356 EXPECT_EQ(
1357 kDefaultSrtpCipher,
1358 init_observer.GetStringHistogramSample(webrtc::kAudioSrtpCipher));
1350 } 1359 }
1351 1360
1352 // Test that DTLS 1.2 is used if both ends support it. 1361 // Test that DTLS 1.2 is used if both ends support it.
1353 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) { 1362 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) {
1354 PeerConnectionFactory::Options init_options; 1363 PeerConnectionFactory::Options init_options;
1355 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1364 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1356 PeerConnectionFactory::Options recv_options; 1365 PeerConnectionFactory::Options recv_options;
1357 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1366 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1358 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); 1367 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options));
1368 webrtc::FakeMetricsObserver init_observer;
1369 initializing_client()->pc()->RegisterUMAObserver(&init_observer);
1359 LocalP2PTest(); 1370 LocalP2PTest();
1360 1371
1361 EXPECT_EQ_WAIT( 1372 EXPECT_EQ_WAIT(
1362 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_12), 1373 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_12),
1363 initializing_client()->GetDtlsCipherStats(), 1374 initializing_client()->GetDtlsCipherStats(),
1364 kMaxWaitForStatsMs); 1375 kMaxWaitForStatsMs);
1376 EXPECT_EQ(
1377 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_12),
1378 init_observer.GetStringHistogramSample(webrtc::kAudioSslCipher));
1365 1379
1366 EXPECT_EQ_WAIT( 1380 EXPECT_EQ_WAIT(
1367 kDefaultSrtpCipher, 1381 kDefaultSrtpCipher,
1368 initializing_client()->GetSrtpCipherStats(), 1382 initializing_client()->GetSrtpCipherStats(),
1369 kMaxWaitForStatsMs); 1383 kMaxWaitForStatsMs);
1384 EXPECT_EQ(
1385 kDefaultSrtpCipher,
1386 init_observer.GetStringHistogramSample(webrtc::kAudioSrtpCipher));
1370 } 1387 }
1371 1388
1372 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the 1389 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the
1373 // received supports 1.0. 1390 // received supports 1.0.
1374 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) { 1391 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) {
1375 PeerConnectionFactory::Options init_options; 1392 PeerConnectionFactory::Options init_options;
1376 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1393 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1377 PeerConnectionFactory::Options recv_options; 1394 PeerConnectionFactory::Options recv_options;
1378 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1395 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1379 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); 1396 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options));
1397 webrtc::FakeMetricsObserver init_observer;
1398 initializing_client()->pc()->RegisterUMAObserver(&init_observer);
1380 LocalP2PTest(); 1399 LocalP2PTest();
1381 1400
1382 EXPECT_EQ_WAIT( 1401 EXPECT_EQ_WAIT(
1383 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), 1402 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1384 initializing_client()->GetDtlsCipherStats(), 1403 initializing_client()->GetDtlsCipherStats(),
1385 kMaxWaitForStatsMs); 1404 kMaxWaitForStatsMs);
1405 EXPECT_EQ(
1406 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1407 init_observer.GetStringHistogramSample(webrtc::kAudioSslCipher));
1386 1408
1387 EXPECT_EQ_WAIT( 1409 EXPECT_EQ_WAIT(
1388 kDefaultSrtpCipher, 1410 kDefaultSrtpCipher,
1389 initializing_client()->GetSrtpCipherStats(), 1411 initializing_client()->GetSrtpCipherStats(),
1390 kMaxWaitForStatsMs); 1412 kMaxWaitForStatsMs);
1413 EXPECT_EQ(
1414 kDefaultSrtpCipher,
1415 init_observer.GetStringHistogramSample(webrtc::kAudioSrtpCipher));
1391 } 1416 }
1392 1417
1393 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the 1418 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the
1394 // received supports 1.2. 1419 // received supports 1.2.
1395 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) { 1420 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) {
1396 PeerConnectionFactory::Options init_options; 1421 PeerConnectionFactory::Options init_options;
1397 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1422 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1398 PeerConnectionFactory::Options recv_options; 1423 PeerConnectionFactory::Options recv_options;
1399 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1424 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1400 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); 1425 ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options));
1426 webrtc::FakeMetricsObserver init_observer;
1427 initializing_client()->pc()->RegisterUMAObserver(&init_observer);
1401 LocalP2PTest(); 1428 LocalP2PTest();
1402 1429
1403 EXPECT_EQ_WAIT( 1430 EXPECT_EQ_WAIT(
1404 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), 1431 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1405 initializing_client()->GetDtlsCipherStats(), 1432 initializing_client()->GetDtlsCipherStats(),
1406 kMaxWaitForStatsMs); 1433 kMaxWaitForStatsMs);
1434 EXPECT_EQ(
1435 rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10),
1436 init_observer.GetStringHistogramSample(webrtc::kAudioSslCipher));
1407 1437
1408 EXPECT_EQ_WAIT( 1438 EXPECT_EQ_WAIT(
1409 kDefaultSrtpCipher, 1439 kDefaultSrtpCipher,
1410 initializing_client()->GetSrtpCipherStats(), 1440 initializing_client()->GetSrtpCipherStats(),
1411 kMaxWaitForStatsMs); 1441 kMaxWaitForStatsMs);
1442 EXPECT_EQ(
1443 kDefaultSrtpCipher,
1444 init_observer.GetStringHistogramSample(webrtc::kAudioSrtpCipher));
1412 } 1445 }
1413 1446
1414 // This test sets up a call between two parties with audio, video and data. 1447 // This test sets up a call between two parties with audio, video and data.
1415 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) { 1448 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) {
1416 FakeConstraints setup_constraints; 1449 FakeConstraints setup_constraints;
1417 setup_constraints.SetAllowRtpDataChannels(); 1450 setup_constraints.SetAllowRtpDataChannels();
1418 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); 1451 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints));
1419 initializing_client()->CreateDataChannel(); 1452 initializing_client()->CreateDataChannel();
1420 LocalP2PTest(); 1453 LocalP2PTest();
1421 ASSERT_TRUE(initializing_client()->data_channel() != NULL); 1454 ASSERT_TRUE(initializing_client()->data_channel() != NULL);
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 // TODO(holmer): Disabled due to sometimes crashing on buildbots. 1616 // TODO(holmer): Disabled due to sometimes crashing on buildbots.
1584 // See issue webrtc/2378. 1617 // See issue webrtc/2378.
1585 TEST_F(JsepPeerConnectionP2PTestClient, 1618 TEST_F(JsepPeerConnectionP2PTestClient,
1586 DISABLED_LocalP2PTestWithVideoDecoderFactory) { 1619 DISABLED_LocalP2PTestWithVideoDecoderFactory) {
1587 ASSERT_TRUE(CreateTestClients()); 1620 ASSERT_TRUE(CreateTestClients());
1588 EnableVideoDecoderFactory(); 1621 EnableVideoDecoderFactory();
1589 LocalP2PTest(); 1622 LocalP2PTest();
1590 } 1623 }
1591 1624
1592 #endif // if !defined(THREAD_SANITIZER) 1625 #endif // if !defined(THREAD_SANITIZER)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698