OLD | NEW |
---|---|
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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
104 static const char kVideoTrackLabelBase[] = "video_track"; | 104 static const char kVideoTrackLabelBase[] = "video_track"; |
105 static const char kAudioTrackLabelBase[] = "audio_track"; | 105 static const char kAudioTrackLabelBase[] = "audio_track"; |
106 static const char kDataChannelLabel[] = "data_channel"; | 106 static const char kDataChannelLabel[] = "data_channel"; |
107 | 107 |
108 // Disable for TSan v2, see | 108 // Disable for TSan v2, see |
109 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details. | 109 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details. |
110 // This declaration is also #ifdef'd as it causes unused-variable errors. | 110 // This declaration is also #ifdef'd as it causes unused-variable errors. |
111 #if !defined(THREAD_SANITIZER) | 111 #if !defined(THREAD_SANITIZER) |
112 // SRTP cipher name negotiated by the tests. This must be updated if the | 112 // SRTP cipher name negotiated by the tests. This must be updated if the |
113 // default changes. | 113 // default changes. |
114 static const char kDefaultSrtpCipher[] = "AES_CM_128_HMAC_SHA1_32"; | 114 static const int kDefaultSrtpCipher = rtc::SRTP_AES128_CM_SHA1_32; |
pthatcher1
2015/11/11 19:59:40
Should we rename this to kDefaultSrtpCryptoSuite?
guoweis_webrtc
2015/11/17 01:21:15
Done.
| |
115 #endif | 115 #endif |
116 | 116 |
117 static void RemoveLinesFromSdp(const std::string& line_start, | 117 static void RemoveLinesFromSdp(const std::string& line_start, |
118 std::string* sdp) { | 118 std::string* sdp) { |
119 const char kSdpLineEnd[] = "\r\n"; | 119 const char kSdpLineEnd[] = "\r\n"; |
120 size_t ssrc_pos = 0; | 120 size_t ssrc_pos = 0; |
121 while ((ssrc_pos = sdp->find(line_start, ssrc_pos)) != | 121 while ((ssrc_pos = sdp->find(line_start, ssrc_pos)) != |
122 std::string::npos) { | 122 std::string::npos) { |
123 size_t end_ssrc = sdp->find(kSdpLineEnd, ssrc_pos); | 123 size_t end_ssrc = sdp->find(kSdpLineEnd, ssrc_pos); |
124 sdp->erase(ssrc_pos, end_ssrc - ssrc_pos + strlen(kSdpLineEnd)); | 124 sdp->erase(ssrc_pos, end_ssrc - ssrc_pos + strlen(kSdpLineEnd)); |
(...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1275 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; | 1275 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; |
1276 PeerConnectionFactory::Options recv_options; | 1276 PeerConnectionFactory::Options recv_options; |
1277 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; | 1277 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; |
1278 ASSERT_TRUE( | 1278 ASSERT_TRUE( |
1279 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); | 1279 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); |
1280 rtc::scoped_refptr<webrtc::FakeMetricsObserver> | 1280 rtc::scoped_refptr<webrtc::FakeMetricsObserver> |
1281 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); | 1281 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); |
1282 initializing_client()->pc()->RegisterUMAObserver(init_observer); | 1282 initializing_client()->pc()->RegisterUMAObserver(init_observer); |
1283 LocalP2PTest(); | 1283 LocalP2PTest(); |
1284 | 1284 |
1285 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( | 1285 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName( |
1286 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1286 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1287 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), | 1287 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), |
1288 initializing_client()->GetDtlsCipherStats(), | 1288 initializing_client()->GetDtlsCipherStats(), |
1289 kMaxWaitForStatsMs); | 1289 kMaxWaitForStatsMs); |
1290 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1290 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1291 webrtc::kEnumCounterAudioSslCipher, | 1291 webrtc::kEnumCounterAudioSslCipher, |
1292 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1292 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1293 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); | 1293 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); |
1294 | 1294 |
1295 EXPECT_EQ_WAIT(kDefaultSrtpCipher, | 1295 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCipher), |
1296 initializing_client()->GetSrtpCipherStats(), | 1296 initializing_client()->GetSrtpCipherStats(), |
1297 kMaxWaitForStatsMs); | 1297 kMaxWaitForStatsMs); |
1298 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1298 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1299 webrtc::kEnumCounterAudioSrtpCipher, | 1299 webrtc::kEnumCounterAudioSrtpCipher, kDefaultSrtpCipher)); |
1300 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); | |
1301 } | 1300 } |
1302 | 1301 |
1303 // Test that DTLS 1.2 is used if both ends support it. | 1302 // Test that DTLS 1.2 is used if both ends support it. |
1304 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) { | 1303 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) { |
1305 PeerConnectionFactory::Options init_options; | 1304 PeerConnectionFactory::Options init_options; |
1306 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; | 1305 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; |
1307 PeerConnectionFactory::Options recv_options; | 1306 PeerConnectionFactory::Options recv_options; |
1308 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; | 1307 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; |
1309 ASSERT_TRUE( | 1308 ASSERT_TRUE( |
1310 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); | 1309 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); |
1311 rtc::scoped_refptr<webrtc::FakeMetricsObserver> | 1310 rtc::scoped_refptr<webrtc::FakeMetricsObserver> |
1312 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); | 1311 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); |
1313 initializing_client()->pc()->RegisterUMAObserver(init_observer); | 1312 initializing_client()->pc()->RegisterUMAObserver(init_observer); |
1314 LocalP2PTest(); | 1313 LocalP2PTest(); |
1315 | 1314 |
1316 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( | 1315 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName( |
1317 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1316 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1318 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT)), | 1317 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT)), |
1319 initializing_client()->GetDtlsCipherStats(), | 1318 initializing_client()->GetDtlsCipherStats(), |
1320 kMaxWaitForStatsMs); | 1319 kMaxWaitForStatsMs); |
1321 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1320 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1322 webrtc::kEnumCounterAudioSslCipher, | 1321 webrtc::kEnumCounterAudioSslCipher, |
1323 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1322 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1324 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT))); | 1323 rtc::SSL_PROTOCOL_DTLS_12, rtc::KT_DEFAULT))); |
1325 | 1324 |
1326 EXPECT_EQ_WAIT(kDefaultSrtpCipher, | 1325 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCipher), |
1327 initializing_client()->GetSrtpCipherStats(), | 1326 initializing_client()->GetSrtpCipherStats(), |
1328 kMaxWaitForStatsMs); | 1327 kMaxWaitForStatsMs); |
1329 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1328 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1330 webrtc::kEnumCounterAudioSrtpCipher, | 1329 webrtc::kEnumCounterAudioSrtpCipher, kDefaultSrtpCipher)); |
1331 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); | |
1332 } | 1330 } |
1333 | 1331 |
1334 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the | 1332 // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the |
1335 // received supports 1.0. | 1333 // received supports 1.0. |
1336 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) { | 1334 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) { |
1337 PeerConnectionFactory::Options init_options; | 1335 PeerConnectionFactory::Options init_options; |
1338 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; | 1336 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; |
1339 PeerConnectionFactory::Options recv_options; | 1337 PeerConnectionFactory::Options recv_options; |
1340 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; | 1338 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; |
1341 ASSERT_TRUE( | 1339 ASSERT_TRUE( |
1342 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); | 1340 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); |
1343 rtc::scoped_refptr<webrtc::FakeMetricsObserver> | 1341 rtc::scoped_refptr<webrtc::FakeMetricsObserver> |
1344 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); | 1342 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); |
1345 initializing_client()->pc()->RegisterUMAObserver(init_observer); | 1343 initializing_client()->pc()->RegisterUMAObserver(init_observer); |
1346 LocalP2PTest(); | 1344 LocalP2PTest(); |
1347 | 1345 |
1348 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( | 1346 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName( |
1349 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1347 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1350 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), | 1348 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), |
1351 initializing_client()->GetDtlsCipherStats(), | 1349 initializing_client()->GetDtlsCipherStats(), |
1352 kMaxWaitForStatsMs); | 1350 kMaxWaitForStatsMs); |
1353 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1351 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1354 webrtc::kEnumCounterAudioSslCipher, | 1352 webrtc::kEnumCounterAudioSslCipher, |
1355 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1353 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1356 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); | 1354 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); |
1357 | 1355 |
1358 EXPECT_EQ_WAIT(kDefaultSrtpCipher, | 1356 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCipher), |
1359 initializing_client()->GetSrtpCipherStats(), | 1357 initializing_client()->GetSrtpCipherStats(), |
1360 kMaxWaitForStatsMs); | 1358 kMaxWaitForStatsMs); |
1361 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1359 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1362 webrtc::kEnumCounterAudioSrtpCipher, | 1360 webrtc::kEnumCounterAudioSrtpCipher, kDefaultSrtpCipher)); |
1363 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); | |
1364 } | 1361 } |
1365 | 1362 |
1366 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the | 1363 // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the |
1367 // received supports 1.2. | 1364 // received supports 1.2. |
1368 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) { | 1365 TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) { |
1369 PeerConnectionFactory::Options init_options; | 1366 PeerConnectionFactory::Options init_options; |
1370 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; | 1367 init_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; |
1371 PeerConnectionFactory::Options recv_options; | 1368 PeerConnectionFactory::Options recv_options; |
1372 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; | 1369 recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; |
1373 ASSERT_TRUE( | 1370 ASSERT_TRUE( |
1374 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); | 1371 CreateTestClients(nullptr, &init_options, nullptr, &recv_options)); |
1375 rtc::scoped_refptr<webrtc::FakeMetricsObserver> | 1372 rtc::scoped_refptr<webrtc::FakeMetricsObserver> |
1376 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); | 1373 init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); |
1377 initializing_client()->pc()->RegisterUMAObserver(init_observer); | 1374 initializing_client()->pc()->RegisterUMAObserver(init_observer); |
1378 LocalP2PTest(); | 1375 LocalP2PTest(); |
1379 | 1376 |
1380 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::GetSslCipherSuiteName( | 1377 EXPECT_EQ_WAIT(rtc::SSLStreamAdapter::SslCipherSuiteToName( |
1381 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1378 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1382 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), | 1379 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT)), |
1383 initializing_client()->GetDtlsCipherStats(), | 1380 initializing_client()->GetDtlsCipherStats(), |
1384 kMaxWaitForStatsMs); | 1381 kMaxWaitForStatsMs); |
1385 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1382 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1386 webrtc::kEnumCounterAudioSslCipher, | 1383 webrtc::kEnumCounterAudioSslCipher, |
1387 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( | 1384 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( |
1388 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); | 1385 rtc::SSL_PROTOCOL_DTLS_10, rtc::KT_DEFAULT))); |
1389 | 1386 |
1390 EXPECT_EQ_WAIT(kDefaultSrtpCipher, | 1387 EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCipher), |
1391 initializing_client()->GetSrtpCipherStats(), | 1388 initializing_client()->GetSrtpCipherStats(), |
1392 kMaxWaitForStatsMs); | 1389 kMaxWaitForStatsMs); |
1393 EXPECT_EQ(1, init_observer->GetEnumCounter( | 1390 EXPECT_EQ(1, init_observer->GetEnumCounter( |
1394 webrtc::kEnumCounterAudioSrtpCipher, | 1391 webrtc::kEnumCounterAudioSrtpCipher, kDefaultSrtpCipher)); |
1395 rtc::GetSrtpCryptoSuiteFromName(kDefaultSrtpCipher))); | |
1396 } | 1392 } |
1397 | 1393 |
1398 // This test sets up a call between two parties with audio, video and data. | 1394 // This test sets up a call between two parties with audio, video and data. |
1399 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) { | 1395 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestDataChannel) { |
1400 FakeConstraints setup_constraints; | 1396 FakeConstraints setup_constraints; |
1401 setup_constraints.SetAllowRtpDataChannels(); | 1397 setup_constraints.SetAllowRtpDataChannels(); |
1402 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); | 1398 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); |
1403 initializing_client()->CreateDataChannel(); | 1399 initializing_client()->CreateDataChannel(); |
1404 LocalP2PTest(); | 1400 LocalP2PTest(); |
1405 ASSERT_TRUE(initializing_client()->data_channel() != nullptr); | 1401 ASSERT_TRUE(initializing_client()->data_channel() != nullptr); |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1743 server.urls.push_back("stun:hostname"); | 1739 server.urls.push_back("stun:hostname"); |
1744 server.urls.push_back("turn:hostname"); | 1740 server.urls.push_back("turn:hostname"); |
1745 servers.push_back(server); | 1741 servers.push_back(server); |
1746 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_, | 1742 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_, |
1747 &turn_configurations_)); | 1743 &turn_configurations_)); |
1748 EXPECT_EQ(1U, stun_configurations_.size()); | 1744 EXPECT_EQ(1U, stun_configurations_.size()); |
1749 EXPECT_EQ(1U, turn_configurations_.size()); | 1745 EXPECT_EQ(1U, turn_configurations_.size()); |
1750 } | 1746 } |
1751 | 1747 |
1752 #endif // if !defined(THREAD_SANITIZER) | 1748 #endif // if !defined(THREAD_SANITIZER) |
OLD | NEW |