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

Side by Side Diff: webrtc/pc/peerconnection_integrationtest.cc

Issue 2815513012: Negotiate the same SRTP crypto suites for every DTLS association formed. (Closed)
Patch Set: Prefer 32-bit HMAC by default. Also cleaning up some things. Created 3 years, 8 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 * Copyright 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2012 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
(...skipping 2002 matching lines...) Expand 10 before | Expand all | Expand 10 after
2013 // Test that GCM isn't used if only the answerer supports it. 2013 // Test that GCM isn't used if only the answerer supports it.
2014 TEST_F(PeerConnectionIntegrationTest, 2014 TEST_F(PeerConnectionIntegrationTest,
2015 NonGcmCipherUsedWhenOnlyCalleeSupportsGcm) { 2015 NonGcmCipherUsedWhenOnlyCalleeSupportsGcm) {
2016 bool local_gcm_enabled = false; 2016 bool local_gcm_enabled = false;
2017 bool remote_gcm_enabled = true; 2017 bool remote_gcm_enabled = true;
2018 int expected_cipher_suite = kDefaultSrtpCryptoSuite; 2018 int expected_cipher_suite = kDefaultSrtpCryptoSuite;
2019 TestGcmNegotiationUsesCipherSuite(local_gcm_enabled, remote_gcm_enabled, 2019 TestGcmNegotiationUsesCipherSuite(local_gcm_enabled, remote_gcm_enabled,
2020 expected_cipher_suite); 2020 expected_cipher_suite);
2021 } 2021 }
2022 2022
2023 // Verify that media can be transmitted end-to-end when GCM crypto suites are
2024 // enabled. Note that the above tests, such as GcmCipherUsedWhenGcmSupported,
2025 // only verify that a GCM cipher is negotiated, and not necessarily that SRTP
2026 // works with it.
2027 TEST_F(PeerConnectionIntegrationTest, EndToEndCallWithGcmCipher) {
2028 PeerConnectionFactory::Options gcm_options;
2029 gcm_options.crypto_options.enable_gcm_crypto_suites = true;
2030 ASSERT_TRUE(
2031 CreatePeerConnectionWrappersWithOptions(gcm_options, gcm_options));
2032 ConnectFakeSignaling();
2033 // Do normal offer/answer and wait for some frames to be received in each
2034 // direction.
2035 caller()->AddAudioVideoMediaStream();
2036 callee()->AddAudioVideoMediaStream();
2037 caller()->CreateAndSetAndSignalOffer();
2038 ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
2039 ExpectNewFramesReceivedWithWait(
2040 kDefaultExpectedAudioFrameCount, kDefaultExpectedVideoFrameCount,
2041 kDefaultExpectedAudioFrameCount, kDefaultExpectedVideoFrameCount,
2042 kMaxWaitForFramesMs);
2043 }
2044
2023 // This test sets up a call between two parties with audio, video and an RTP 2045 // This test sets up a call between two parties with audio, video and an RTP
2024 // data channel. 2046 // data channel.
2025 TEST_F(PeerConnectionIntegrationTest, EndToEndCallWithRtpDataChannel) { 2047 TEST_F(PeerConnectionIntegrationTest, EndToEndCallWithRtpDataChannel) {
2026 FakeConstraints setup_constraints; 2048 FakeConstraints setup_constraints;
2027 setup_constraints.SetAllowRtpDataChannels(); 2049 setup_constraints.SetAllowRtpDataChannels();
2028 ASSERT_TRUE(CreatePeerConnectionWrappersWithConstraints(&setup_constraints, 2050 ASSERT_TRUE(CreatePeerConnectionWrappersWithConstraints(&setup_constraints,
2029 &setup_constraints)); 2051 &setup_constraints));
2030 ConnectFakeSignaling(); 2052 ConnectFakeSignaling();
2031 // Expect that data channel created on caller side will show up for callee as 2053 // Expect that data channel created on caller side will show up for callee as
2032 // well. 2054 // well.
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2329 // Ensure data can be sent in both directions. 2351 // Ensure data can be sent in both directions.
2330 std::string data = "hello world"; 2352 std::string data = "hello world";
2331 caller()->data_channel()->Send(DataBuffer(data)); 2353 caller()->data_channel()->Send(DataBuffer(data));
2332 EXPECT_EQ_WAIT(data, callee()->data_observer()->last_message(), 2354 EXPECT_EQ_WAIT(data, callee()->data_observer()->last_message(),
2333 kDefaultTimeout); 2355 kDefaultTimeout);
2334 callee()->data_channel()->Send(DataBuffer(data)); 2356 callee()->data_channel()->Send(DataBuffer(data));
2335 EXPECT_EQ_WAIT(data, caller()->data_observer()->last_message(), 2357 EXPECT_EQ_WAIT(data, caller()->data_observer()->last_message(),
2336 kDefaultTimeout); 2358 kDefaultTimeout);
2337 } 2359 }
2338 2360
2361 // Set up a connection initially just using SCTP data channels, later upgrading
2362 // to audio/video, ensuring frames are received end-to-end. Effectively the
2363 // inverse of the test above.
2364 // This was broken in M57; see https://crbug.com/711243
2365 TEST_F(PeerConnectionIntegrationTest, SctpDataChannelToAudioVideoUpgrade) {
2366 ASSERT_TRUE(CreatePeerConnectionWrappers());
2367 ConnectFakeSignaling();
2368 // Do initial offer/answer with just data channel.
2369 caller()->CreateDataChannel();
2370 caller()->CreateAndSetAndSignalOffer();
2371 ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
2372 // Wait until data can be sent over the data channel.
2373 ASSERT_TRUE_WAIT(callee()->data_channel() != nullptr, kDefaultTimeout);
2374 ASSERT_TRUE_WAIT(caller()->data_observer()->IsOpen(), kDefaultTimeout);
2375 ASSERT_TRUE_WAIT(callee()->data_observer()->IsOpen(), kDefaultTimeout);
2376
2377 // Do subsequent offer/answer with two-way audio and video. Audio and video
2378 // should end up bundled on the DTLS/ICE transport already used for data.
2379 caller()->AddAudioVideoMediaStream();
2380 callee()->AddAudioVideoMediaStream();
2381 caller()->CreateAndSetAndSignalOffer();
2382 ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
2383 ExpectNewFramesReceivedWithWait(
2384 kDefaultExpectedAudioFrameCount, kDefaultExpectedVideoFrameCount,
2385 kDefaultExpectedAudioFrameCount, kDefaultExpectedVideoFrameCount,
2386 kMaxWaitForFramesMs);
2387 }
2388
2339 #endif // HAVE_SCTP 2389 #endif // HAVE_SCTP
2340 2390
2341 // Test that the ICE connection and gathering states eventually reach 2391 // Test that the ICE connection and gathering states eventually reach
2342 // "complete". 2392 // "complete".
2343 TEST_F(PeerConnectionIntegrationTest, IceStatesReachCompletion) { 2393 TEST_F(PeerConnectionIntegrationTest, IceStatesReachCompletion) {
2344 ASSERT_TRUE(CreatePeerConnectionWrappers()); 2394 ASSERT_TRUE(CreatePeerConnectionWrappers());
2345 ConnectFakeSignaling(); 2395 ConnectFakeSignaling();
2346 // Do normal offer/answer. 2396 // Do normal offer/answer.
2347 caller()->AddAudioVideoMediaStream(); 2397 caller()->AddAudioVideoMediaStream();
2348 callee()->AddAudioVideoMediaStream(); 2398 callee()->AddAudioVideoMediaStream();
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
2769 2819
2770 auto contributing_sources = receiver->GetSources(); 2820 auto contributing_sources = receiver->GetSources();
2771 ASSERT_GT(receiver->GetParameters().encodings.size(), 0u); 2821 ASSERT_GT(receiver->GetParameters().encodings.size(), 0u);
2772 EXPECT_EQ(receiver->GetParameters().encodings[0].ssrc, 2822 EXPECT_EQ(receiver->GetParameters().encodings[0].ssrc,
2773 contributing_sources[0].source_id()); 2823 contributing_sources[0].source_id());
2774 } 2824 }
2775 2825
2776 } // namespace 2826 } // namespace
2777 2827
2778 #endif // if !defined(THREAD_SANITIZER) 2828 #endif // if !defined(THREAD_SANITIZER)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698