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

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

Issue 1458023002: Reland Convert internal representation of Srtp cryptos from string to int (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | talk/app/webrtc/statscollector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 static const char kVideoTrackLabelBase[] = "video_track"; 106 static const char kVideoTrackLabelBase[] = "video_track";
107 static const char kAudioTrackLabelBase[] = "audio_track"; 107 static const char kAudioTrackLabelBase[] = "audio_track";
108 static const char kDataChannelLabel[] = "data_channel"; 108 static const char kDataChannelLabel[] = "data_channel";
109 109
110 // Disable for TSan v2, see 110 // Disable for TSan v2, see
111 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details. 111 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details.
112 // This declaration is also #ifdef'd as it causes unused-variable errors. 112 // This declaration is also #ifdef'd as it causes unused-variable errors.
113 #if !defined(THREAD_SANITIZER) 113 #if !defined(THREAD_SANITIZER)
114 // SRTP cipher name negotiated by the tests. This must be updated if the 114 // SRTP cipher name negotiated by the tests. This must be updated if the
115 // default changes. 115 // default changes.
116 static const char kDefaultSrtpCipher[] = "AES_CM_128_HMAC_SHA1_32"; 116 static const int kDefaultSrtpCryptoSuite = rtc::SRTP_AES128_CM_SHA1_32;
117 #endif 117 #endif
118 118
119 static void RemoveLinesFromSdp(const std::string& line_start, 119 static void RemoveLinesFromSdp(const std::string& line_start,
120 std::string* sdp) { 120 std::string* sdp) {
121 const char kSdpLineEnd[] = "\r\n"; 121 const char kSdpLineEnd[] = "\r\n";
122 size_t ssrc_pos = 0; 122 size_t ssrc_pos = 0;
123 while ((ssrc_pos = sdp->find(line_start, ssrc_pos)) != 123 while ((ssrc_pos = sdp->find(line_start, ssrc_pos)) !=
124 std::string::npos) { 124 std::string::npos) {
125 size_t end_ssrc = sdp->find(kSdpLineEnd, ssrc_pos); 125 size_t end_ssrc = sdp->find(kSdpLineEnd, ssrc_pos);
126 sdp->erase(ssrc_pos, end_ssrc - ssrc_pos + strlen(kSdpLineEnd)); 126 sdp->erase(ssrc_pos, end_ssrc - ssrc_pos + strlen(kSdpLineEnd));
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1320 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1321 PeerConnectionFactory::Options recv_options; 1321 PeerConnectionFactory::Options recv_options;
1322 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1322 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1323 ASSERT_TRUE( 1323 ASSERT_TRUE(
1324 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); 1324 CreateTestClients(nullptr, &init_options, nullptr, &recv_options));
1325 rtc::scoped_refptr<webrtc::FakeMetricsObserver> 1325 rtc::scoped_refptr<webrtc::FakeMetricsObserver>
1326 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); 1326 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
1327 initializing_client()->pc()->RegisterUMAObserver(init_observer); 1327 initializing_client()->pc()->RegisterUMAObserver(init_observer);
1328 LocalP2PTest(); 1328 LocalP2PTest();
1329 1329
1330 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( 1330 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName(
1331 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1331 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1332 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), 1332 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)),
1333 initializing_client()->GetDtlsCipherStats(), 1333 initializing_client()->GetDtlsCipherStats(),
1334 kMaxWaitForStatsMs); 1334 kMaxWaitForStatsMs);
1335 EXPECT_EQ(1, init_observer->GetEnumCounter( 1335 EXPECT_EQ(1, init_observer->GetEnumCounter(
1336 webrtc::kEnumCounterAudioSslCipher, 1336 webrtc::kEnumCounterAudioSslCipher,
1337 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1337 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1338 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); 1338 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)));
1339 1339
1340 EXPECT_EQ_WAIT(kDefaultSrtpCipher, 1340 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite),
1341 initializing_client()->GetSrtpCipherStats(), 1341 initializing_client()->GetSrtpCipherStats(),
1342 kMaxWaitForStatsMs); 1342 kMaxWaitForStatsMs);
1343 EXPECT_EQ(1, init_observer->GetEnumCounter( 1343 EXPECT_EQ(1,
1344 webrtc::kEnumCounterAudioSrtpCipher, 1344 init_observer->GetEnumCounter(webrtc::kEnumCounterAudioSrtpCipher,
1345 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); 1345 kDefaultSrtpCryptoSuite));
1346 } 1346 }
1347 1347
1348 // Test that DTLS 1.2 is used if both ends support it. 1348 // Test that DTLS 1.2 is used if both ends support it.
1349 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) { 1349 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) {
1350 PeerConnectionFactory::Options init_options; 1350 PeerConnectionFactory::Options init_options;
1351 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1351 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1352 PeerConnectionFactory::Options recv_options; 1352 PeerConnectionFactory::Options recv_options;
1353 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1353 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1354 ASSERT_TRUE( 1354 ASSERT_TRUE(
1355 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); 1355 CreateTestClients(nullptr, &init_options, nullptr, &recv_options));
1356 rtc::scoped_refptr<webrtc::FakeMetricsObserver> 1356 rtc::scoped_refptr<webrtc::FakeMetricsObserver>
1357 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); 1357 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
1358 initializing_client()->pc()->RegisterUMAObserver(init_observer); 1358 initializing_client()->pc()->RegisterUMAObserver(init_observer);
1359 LocalP2PTest(); 1359 LocalP2PTest();
1360 1360
1361 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( 1361 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName(
1362 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1362 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1363 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT)), 1363 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT)),
1364 initializing_client()->GetDtlsCipherStats(), 1364 initializing_client()->GetDtlsCipherStats(),
1365 kMaxWaitForStatsMs); 1365 kMaxWaitForStatsMs);
1366 EXPECT_EQ(1, init_observer->GetEnumCounter( 1366 EXPECT_EQ(1, init_observer->GetEnumCounter(
1367 webrtc::kEnumCounterAudioSslCipher, 1367 webrtc::kEnumCounterAudioSslCipher,
1368 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1368 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1369 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT))); 1369 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT)));
1370 1370
1371 EXPECT_EQ_WAIT(kDefaultSrtpCipher, 1371 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite),
1372 initializing_client()->GetSrtpCipherStats(), 1372 initializing_client()->GetSrtpCipherStats(),
1373 kMaxWaitForStatsMs); 1373 kMaxWaitForStatsMs);
1374 EXPECT_EQ(1, init_observer->GetEnumCounter( 1374 EXPECT_EQ(1,
1375 webrtc::kEnumCounterAudioSrtpCipher, 1375 init_observer->GetEnumCounter(webrtc::kEnumCounterAudioSrtpCipher,
1376 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); 1376 kDefaultSrtpCryptoSuite));
1377 } 1377 }
1378 1378
1379 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the 1379 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the
1380 // received supports 1.0. 1380 // received supports 1.0.
1381 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) { 1381 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) {
1382 PeerConnectionFactory::Options init_options; 1382 PeerConnectionFactory::Options init_options;
1383 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1383 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1384 PeerConnectionFactory::Options recv_options; 1384 PeerConnectionFactory::Options recv_options;
1385 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1385 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1386 ASSERT_TRUE( 1386 ASSERT_TRUE(
1387 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); 1387 CreateTestClients(nullptr, &init_options, nullptr, &recv_options));
1388 rtc::scoped_refptr<webrtc::FakeMetricsObserver> 1388 rtc::scoped_refptr<webrtc::FakeMetricsObserver>
1389 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); 1389 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
1390 initializing_client()->pc()->RegisterUMAObserver(init_observer); 1390 initializing_client()->pc()->RegisterUMAObserver(init_observer);
1391 LocalP2PTest(); 1391 LocalP2PTest();
1392 1392
1393 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( 1393 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName(
1394 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1394 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1395 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), 1395 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)),
1396 initializing_client()->GetDtlsCipherStats(), 1396 initializing_client()->GetDtlsCipherStats(),
1397 kMaxWaitForStatsMs); 1397 kMaxWaitForStatsMs);
1398 EXPECT_EQ(1, init_observer->GetEnumCounter( 1398 EXPECT_EQ(1, init_observer->GetEnumCounter(
1399 webrtc::kEnumCounterAudioSslCipher, 1399 webrtc::kEnumCounterAudioSslCipher,
1400 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1400 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1401 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); 1401 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)));
1402 1402
1403 EXPECT_EQ_WAIT(kDefaultSrtpCipher, 1403 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite),
1404 initializing_client()->GetSrtpCipherStats(), 1404 initializing_client()->GetSrtpCipherStats(),
1405 kMaxWaitForStatsMs); 1405 kMaxWaitForStatsMs);
1406 EXPECT_EQ(1, init_observer->GetEnumCounter( 1406 EXPECT_EQ(1,
1407 webrtc::kEnumCounterAudioSrtpCipher, 1407 init_observer->GetEnumCounter(webrtc::kEnumCounterAudioSrtpCipher,
1408 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); 1408 kDefaultSrtpCryptoSuite));
1409 } 1409 }
1410 1410
1411 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the 1411 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the
1412 // received supports 1.2. 1412 // received supports 1.2.
1413 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) { 1413 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) {
1414 PeerConnectionFactory::Options init_options; 1414 PeerConnectionFactory::Options init_options;
1415 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; 1415 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10;
1416 PeerConnectionFactory::Options recv_options; 1416 PeerConnectionFactory::Options recv_options;
1417 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; 1417 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
1418 ASSERT_TRUE( 1418 ASSERT_TRUE(
1419 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); 1419 CreateTestClients(nullptr, &init_options, nullptr, &recv_options));
1420 rtc::scoped_refptr<webrtc::FakeMetricsObserver> 1420 rtc::scoped_refptr<webrtc::FakeMetricsObserver>
1421 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); 1421 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
1422 initializing_client()->pc()->RegisterUMAObserver(init_observer); 1422 initializing_client()->pc()->RegisterUMAObserver(init_observer);
1423 LocalP2PTest(); 1423 LocalP2PTest();
1424 1424
1425 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( 1425 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName(
1426 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1426 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1427 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), 1427 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)),
1428 initializing_client()->GetDtlsCipherStats(), 1428 initializing_client()->GetDtlsCipherStats(),
1429 kMaxWaitForStatsMs); 1429 kMaxWaitForStatsMs);
1430 EXPECT_EQ(1, init_observer->GetEnumCounter( 1430 EXPECT_EQ(1, init_observer->GetEnumCounter(
1431 webrtc::kEnumCounterAudioSslCipher, 1431 webrtc::kEnumCounterAudioSslCipher,
1432 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1432 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1433 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); 1433 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)));
1434 1434
1435 EXPECT_EQ_WAIT(kDefaultSrtpCipher, 1435 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite),
1436 initializing_client()->GetSrtpCipherStats(), 1436 initializing_client()->GetSrtpCipherStats(),
1437 kMaxWaitForStatsMs); 1437 kMaxWaitForStatsMs);
1438 EXPECT_EQ(1, init_observer->GetEnumCounter( 1438 EXPECT_EQ(1,
1439 webrtc::kEnumCounterAudioSrtpCipher, 1439 init_observer->GetEnumCounter(webrtc::kEnumCounterAudioSrtpCipher,
1440 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); 1440 kDefaultSrtpCryptoSuite));
1441 } 1441 }
1442 1442
1443 // This test sets up a call between two parties with audio, video and data. 1443 // This test sets up a call between two parties with audio, video and data.
1444 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) { 1444 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) {
1445 FakeConstraints setup_constraints; 1445 FakeConstraints setup_constraints;
1446 setup_constraints.SetAllowRtpDataChannels(); 1446 setup_constraints.SetAllowRtpDataChannels();
1447 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); 1447 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints));
1448 initializing_client()->CreateDataChannel(); 1448 initializing_client()->CreateDataChannel();
1449 LocalP2PTest(); 1449 LocalP2PTest();
1450 ASSERT_TRUE(initializing_client()->data_channel() != nullptr); 1450 ASSERT_TRUE(initializing_client()->data_channel() != nullptr);
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1811 server.urls.push_back("stun:hostname"); 1811 server.urls.push_back("stun:hostname");
1812 server.urls.push_back("turn:hostname"); 1812 server.urls.push_back("turn:hostname");
1813 servers.push_back(server); 1813 servers.push_back(server);
1814 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_, 1814 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_,
1815 &turn_configurations_)); 1815 &turn_configurations_));
1816 EXPECT_EQ(1U, stun_configurations_.size()); 1816 EXPECT_EQ(1U, stun_configurations_.size());
1817 EXPECT_EQ(1U, turn_configurations_.size()); 1817 EXPECT_EQ(1U, turn_configurations_.size());
1818 } 1818 }
1819 1819
1820 #endif // if !defined(THREAD_SANITIZER) 1820 #endif // if !defined(THREAD_SANITIZER)
OLDNEW
« no previous file with comments | « no previous file | talk/app/webrtc/statscollector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698