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

Side by Side Diff: webrtc/api/webrtcsession_unittest.cc

Issue 2640513002: Relanding: Removing #defines previously used for building without BoringSSL/OpenSSL. (Closed)
Patch Set: Created 3 years, 11 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "webrtc/media/sctp/sctptransportinternal.h" 44 #include "webrtc/media/sctp/sctptransportinternal.h"
45 #include "webrtc/p2p/base/packettransportinterface.h" 45 #include "webrtc/p2p/base/packettransportinterface.h"
46 #include "webrtc/p2p/base/stunserver.h" 46 #include "webrtc/p2p/base/stunserver.h"
47 #include "webrtc/p2p/base/teststunserver.h" 47 #include "webrtc/p2p/base/teststunserver.h"
48 #include "webrtc/p2p/base/testturnserver.h" 48 #include "webrtc/p2p/base/testturnserver.h"
49 #include "webrtc/p2p/base/transportchannel.h" 49 #include "webrtc/p2p/base/transportchannel.h"
50 #include "webrtc/p2p/client/basicportallocator.h" 50 #include "webrtc/p2p/client/basicportallocator.h"
51 #include "webrtc/pc/channelmanager.h" 51 #include "webrtc/pc/channelmanager.h"
52 #include "webrtc/pc/mediasession.h" 52 #include "webrtc/pc/mediasession.h"
53 53
54 #define MAYBE_SKIP_TEST(feature) \
55 if (!(feature())) { \
56 LOG(LS_INFO) << "Feature disabled... skipping"; \
57 return; \
58 }
59
60 using cricket::FakeVoiceMediaChannel; 54 using cricket::FakeVoiceMediaChannel;
61 using cricket::TransportInfo; 55 using cricket::TransportInfo;
62 using rtc::SocketAddress; 56 using rtc::SocketAddress;
63 using rtc::Thread; 57 using rtc::Thread;
64 using webrtc::CreateSessionDescription; 58 using webrtc::CreateSessionDescription;
65 using webrtc::CreateSessionDescriptionObserver; 59 using webrtc::CreateSessionDescriptionObserver;
66 using webrtc::CreateSessionDescriptionRequest; 60 using webrtc::CreateSessionDescriptionRequest;
67 using webrtc::DataChannel; 61 using webrtc::DataChannel;
68 using webrtc::FakeMetricsObserver; 62 using webrtc::FakeMetricsObserver;
69 using webrtc::IceCandidateCollection; 63 using webrtc::IceCandidateCollection;
(...skipping 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after
1844 CreateCryptoOfferAndNonCryptoAnswer(&offer, &answer); 1838 CreateCryptoOfferAndNonCryptoAnswer(&offer, &answer);
1845 // SetRemoteDescription and SetLocalDescription will take the ownership of 1839 // SetRemoteDescription and SetLocalDescription will take the ownership of
1846 // the offer. 1840 // the offer.
1847 SetLocalDescriptionWithoutError(offer); 1841 SetLocalDescriptionWithoutError(offer);
1848 SetRemoteDescriptionAnswerExpectError(kSdpWithoutSdesCrypto, answer); 1842 SetRemoteDescriptionAnswerExpectError(kSdpWithoutSdesCrypto, answer);
1849 } 1843 }
1850 1844
1851 // Test that we accept an offer with a DTLS fingerprint when DTLS is on 1845 // Test that we accept an offer with a DTLS fingerprint when DTLS is on
1852 // and that we return an answer with a DTLS fingerprint. 1846 // and that we return an answer with a DTLS fingerprint.
1853 TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { 1847 TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) {
1854 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
1855 SendAudioVideoStream1(); 1848 SendAudioVideoStream1();
1856 InitWithDtls(GetParam()); 1849 InitWithDtls(GetParam());
1857 SetFactoryDtlsSrtp(); 1850 SetFactoryDtlsSrtp();
1858 cricket::MediaSessionOptions options; 1851 cricket::MediaSessionOptions options;
1859 options.recv_video = true; 1852 options.recv_video = true;
1860 JsepSessionDescription* offer = 1853 JsepSessionDescription* offer =
1861 CreateRemoteOffer(options, cricket::SEC_DISABLED); 1854 CreateRemoteOffer(options, cricket::SEC_DISABLED);
1862 ASSERT_TRUE(offer != NULL); 1855 ASSERT_TRUE(offer != NULL);
1863 VerifyFingerprintStatus(offer->description(), true); 1856 VerifyFingerprintStatus(offer->description(), true);
1864 VerifyNoCryptoParams(offer->description(), true); 1857 VerifyNoCryptoParams(offer->description(), true);
1865 1858
1866 // SetRemoteDescription will take the ownership of the offer. 1859 // SetRemoteDescription will take the ownership of the offer.
1867 SetRemoteDescriptionWithoutError(offer); 1860 SetRemoteDescriptionWithoutError(offer);
1868 1861
1869 // Verify that we get a crypto fingerprint in the answer. 1862 // Verify that we get a crypto fingerprint in the answer.
1870 SessionDescriptionInterface* answer = CreateAnswer(); 1863 SessionDescriptionInterface* answer = CreateAnswer();
1871 ASSERT_TRUE(answer != NULL); 1864 ASSERT_TRUE(answer != NULL);
1872 VerifyFingerprintStatus(answer->description(), true); 1865 VerifyFingerprintStatus(answer->description(), true);
1873 // Check that we don't have an a=crypto line in the answer. 1866 // Check that we don't have an a=crypto line in the answer.
1874 VerifyNoCryptoParams(answer->description(), true); 1867 VerifyNoCryptoParams(answer->description(), true);
1875 1868
1876 // Now set the local description, which should work, even without a=crypto. 1869 // Now set the local description, which should work, even without a=crypto.
1877 SetLocalDescriptionWithoutError(answer); 1870 SetLocalDescriptionWithoutError(answer);
1878 } 1871 }
1879 1872
1880 // Test that we set a local offer with a DTLS fingerprint when DTLS is on 1873 // Test that we set a local offer with a DTLS fingerprint when DTLS is on
1881 // and then we accept a remote answer with a DTLS fingerprint successfully. 1874 // and then we accept a remote answer with a DTLS fingerprint successfully.
1882 TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { 1875 TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) {
1883 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
1884 SendAudioVideoStream1(); 1876 SendAudioVideoStream1();
1885 InitWithDtls(GetParam()); 1877 InitWithDtls(GetParam());
1886 SetFactoryDtlsSrtp(); 1878 SetFactoryDtlsSrtp();
1887 1879
1888 // Verify that we get a crypto fingerprint in the answer. 1880 // Verify that we get a crypto fingerprint in the answer.
1889 SessionDescriptionInterface* offer = CreateOffer(); 1881 SessionDescriptionInterface* offer = CreateOffer();
1890 ASSERT_TRUE(offer != NULL); 1882 ASSERT_TRUE(offer != NULL);
1891 VerifyFingerprintStatus(offer->description(), true); 1883 VerifyFingerprintStatus(offer->description(), true);
1892 // Check that we don't have an a=crypto line in the offer. 1884 // Check that we don't have an a=crypto line in the offer.
1893 VerifyNoCryptoParams(offer->description(), true); 1885 VerifyNoCryptoParams(offer->description(), true);
1894 1886
1895 // Now set the local description, which should work, even without a=crypto. 1887 // Now set the local description, which should work, even without a=crypto.
1896 SetLocalDescriptionWithoutError(offer); 1888 SetLocalDescriptionWithoutError(offer);
1897 1889
1898 cricket::MediaSessionOptions options; 1890 cricket::MediaSessionOptions options;
1899 options.recv_video = true; 1891 options.recv_video = true;
1900 JsepSessionDescription* answer = 1892 JsepSessionDescription* answer =
1901 CreateRemoteAnswer(offer, options, cricket::SEC_DISABLED); 1893 CreateRemoteAnswer(offer, options, cricket::SEC_DISABLED);
1902 ASSERT_TRUE(answer != NULL); 1894 ASSERT_TRUE(answer != NULL);
1903 VerifyFingerprintStatus(answer->description(), true); 1895 VerifyFingerprintStatus(answer->description(), true);
1904 VerifyNoCryptoParams(answer->description(), true); 1896 VerifyNoCryptoParams(answer->description(), true);
1905 1897
1906 // SetRemoteDescription will take the ownership of the answer. 1898 // SetRemoteDescription will take the ownership of the answer.
1907 SetRemoteDescriptionWithoutError(answer); 1899 SetRemoteDescriptionWithoutError(answer);
1908 } 1900 }
1909 1901
1910 // Test that if we support DTLS and the other side didn't offer a fingerprint, 1902 // Test that if we support DTLS and the other side didn't offer a fingerprint,
1911 // we will fail to set the remote description. 1903 // we will fail to set the remote description.
1912 TEST_P(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { 1904 TEST_P(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) {
1913 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
1914 InitWithDtls(GetParam()); 1905 InitWithDtls(GetParam());
1915 cricket::MediaSessionOptions options; 1906 cricket::MediaSessionOptions options;
1916 options.recv_video = true; 1907 options.recv_video = true;
1917 options.bundle_enabled = true; 1908 options.bundle_enabled = true;
1918 JsepSessionDescription* offer = CreateRemoteOffer( 1909 JsepSessionDescription* offer = CreateRemoteOffer(
1919 options, cricket::SEC_REQUIRED); 1910 options, cricket::SEC_REQUIRED);
1920 ASSERT_TRUE(offer != NULL); 1911 ASSERT_TRUE(offer != NULL);
1921 VerifyFingerprintStatus(offer->description(), false); 1912 VerifyFingerprintStatus(offer->description(), false);
1922 VerifyCryptoParams(offer->description()); 1913 VerifyCryptoParams(offer->description());
1923 1914
1924 // SetRemoteDescription will take the ownership of the offer. 1915 // SetRemoteDescription will take the ownership of the offer.
1925 SetRemoteDescriptionOfferExpectError( 1916 SetRemoteDescriptionOfferExpectError(
1926 kSdpWithoutDtlsFingerprint, offer); 1917 kSdpWithoutDtlsFingerprint, offer);
1927 1918
1928 offer = CreateRemoteOffer(options, cricket::SEC_REQUIRED); 1919 offer = CreateRemoteOffer(options, cricket::SEC_REQUIRED);
1929 // SetLocalDescription will take the ownership of the offer. 1920 // SetLocalDescription will take the ownership of the offer.
1930 SetLocalDescriptionOfferExpectError( 1921 SetLocalDescriptionOfferExpectError(
1931 kSdpWithoutDtlsFingerprint, offer); 1922 kSdpWithoutDtlsFingerprint, offer);
1932 } 1923 }
1933 1924
1934 // Test that we return a failure when applying a local answer that doesn't have 1925 // Test that we return a failure when applying a local answer that doesn't have
1935 // a DTLS fingerprint when DTLS is required. 1926 // a DTLS fingerprint when DTLS is required.
1936 TEST_P(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { 1927 TEST_P(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) {
1937 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
1938 InitWithDtls(GetParam()); 1928 InitWithDtls(GetParam());
1939 SessionDescriptionInterface* offer = NULL; 1929 SessionDescriptionInterface* offer = NULL;
1940 SessionDescriptionInterface* answer = NULL; 1930 SessionDescriptionInterface* answer = NULL;
1941 CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer); 1931 CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer);
1942 1932
1943 // SetRemoteDescription and SetLocalDescription will take the ownership of 1933 // SetRemoteDescription and SetLocalDescription will take the ownership of
1944 // the offer and answer. 1934 // the offer and answer.
1945 SetRemoteDescriptionWithoutError(offer); 1935 SetRemoteDescriptionWithoutError(offer);
1946 SetLocalDescriptionAnswerExpectError( 1936 SetLocalDescriptionAnswerExpectError(
1947 kSdpWithoutDtlsFingerprint, answer); 1937 kSdpWithoutDtlsFingerprint, answer);
1948 } 1938 }
1949 1939
1950 // Test that we return a failure when applying a remote answer that doesn't have 1940 // Test that we return a failure when applying a remote answer that doesn't have
1951 // a DTLS fingerprint when DTLS is required. 1941 // a DTLS fingerprint when DTLS is required.
1952 TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { 1942 TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) {
1953 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
1954 InitWithDtls(GetParam()); 1943 InitWithDtls(GetParam());
1955 SessionDescriptionInterface* offer = CreateOffer(); 1944 SessionDescriptionInterface* offer = CreateOffer();
1956 cricket::MediaSessionOptions options; 1945 cricket::MediaSessionOptions options;
1957 options.recv_video = true; 1946 options.recv_video = true;
1958 std::unique_ptr<SessionDescriptionInterface> temp_offer( 1947 std::unique_ptr<SessionDescriptionInterface> temp_offer(
1959 CreateRemoteOffer(options, cricket::SEC_ENABLED)); 1948 CreateRemoteOffer(options, cricket::SEC_ENABLED));
1960 JsepSessionDescription* answer = 1949 JsepSessionDescription* answer =
1961 CreateRemoteAnswer(temp_offer.get(), options, cricket::SEC_ENABLED); 1950 CreateRemoteAnswer(temp_offer.get(), options, cricket::SEC_ENABLED);
1962 1951
1963 // SetRemoteDescription and SetLocalDescription will take the ownership of 1952 // SetRemoteDescription and SetLocalDescription will take the ownership of
(...skipping 1956 matching lines...) Expand 10 before | Expand all | Expand 10 after
3920 3909
3921 TEST_F(WebRtcSessionTest, TestRtpDataChannel) { 3910 TEST_F(WebRtcSessionTest, TestRtpDataChannel) {
3922 configuration_.enable_rtp_data_channel = true; 3911 configuration_.enable_rtp_data_channel = true;
3923 Init(); 3912 Init();
3924 SetLocalDescriptionWithDataChannel(); 3913 SetLocalDescriptionWithDataChannel();
3925 ASSERT_TRUE(data_engine_); 3914 ASSERT_TRUE(data_engine_);
3926 EXPECT_NE(nullptr, data_engine_->GetChannel(0)); 3915 EXPECT_NE(nullptr, data_engine_->GetChannel(0));
3927 } 3916 }
3928 3917
3929 TEST_P(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { 3918 TEST_P(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) {
3930 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3931
3932 configuration_.enable_rtp_data_channel = true; 3919 configuration_.enable_rtp_data_channel = true;
3933 options_.disable_sctp_data_channels = false; 3920 options_.disable_sctp_data_channels = false;
3934 3921
3935 InitWithDtls(GetParam()); 3922 InitWithDtls(GetParam());
3936 3923
3937 SetLocalDescriptionWithDataChannel(); 3924 SetLocalDescriptionWithDataChannel();
3938 EXPECT_NE(nullptr, data_engine_->GetChannel(0)); 3925 EXPECT_NE(nullptr, data_engine_->GetChannel(0));
3939 } 3926 }
3940 3927
3941 // Test that sctp_content_name/sctp_transport_name (used for stats) are correct 3928 // Test that sctp_content_name/sctp_transport_name (used for stats) are correct
3942 // before and after BUNDLE is negotiated. 3929 // before and after BUNDLE is negotiated.
3943 TEST_P(WebRtcSessionTest, SctpContentAndTransportName) { 3930 TEST_P(WebRtcSessionTest, SctpContentAndTransportName) {
3944 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3945 SetFactoryDtlsSrtp(); 3931 SetFactoryDtlsSrtp();
3946 InitWithDtls(GetParam()); 3932 InitWithDtls(GetParam());
3947 3933
3948 // Initially these fields should be empty. 3934 // Initially these fields should be empty.
3949 EXPECT_FALSE(session_->sctp_content_name()); 3935 EXPECT_FALSE(session_->sctp_content_name());
3950 EXPECT_FALSE(session_->sctp_transport_name()); 3936 EXPECT_FALSE(session_->sctp_transport_name());
3951 3937
3952 // Create offer with audio/video/data. 3938 // Create offer with audio/video/data.
3953 // Default bundle policy is "balanced", so data should be using its own 3939 // Default bundle policy is "balanced", so data should be using its own
3954 // transport. 3940 // transport.
(...skipping 13 matching lines...) Expand all
3968 answer_options.data_channel_type = cricket::DCT_SCTP; 3954 answer_options.data_channel_type = cricket::DCT_SCTP;
3969 SetRemoteDescriptionWithoutError(CreateRemoteAnswer( 3955 SetRemoteDescriptionWithoutError(CreateRemoteAnswer(
3970 session_->local_description(), answer_options, cricket::SEC_DISABLED)); 3956 session_->local_description(), answer_options, cricket::SEC_DISABLED));
3971 ASSERT_TRUE(session_->sctp_content_name()); 3957 ASSERT_TRUE(session_->sctp_content_name());
3972 ASSERT_TRUE(session_->sctp_transport_name()); 3958 ASSERT_TRUE(session_->sctp_transport_name());
3973 EXPECT_EQ("data", *session_->sctp_content_name()); 3959 EXPECT_EQ("data", *session_->sctp_content_name());
3974 EXPECT_EQ("audio", *session_->sctp_transport_name()); 3960 EXPECT_EQ("audio", *session_->sctp_transport_name());
3975 } 3961 }
3976 3962
3977 TEST_P(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) { 3963 TEST_P(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) {
3978 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3979
3980 InitWithDtls(GetParam()); 3964 InitWithDtls(GetParam());
3981 3965
3982 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); 3966 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer());
3983 EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL); 3967 EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL);
3984 EXPECT_TRUE(offer->description()->GetTransportInfoByName("data") == NULL); 3968 EXPECT_TRUE(offer->description()->GetTransportInfoByName("data") == NULL);
3985 } 3969 }
3986 3970
3987 TEST_P(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { 3971 TEST_P(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) {
3988 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3989 SetFactoryDtlsSrtp(); 3972 SetFactoryDtlsSrtp();
3990 InitWithDtls(GetParam()); 3973 InitWithDtls(GetParam());
3991 3974
3992 // Create remote offer with SCTP. 3975 // Create remote offer with SCTP.
3993 cricket::MediaSessionOptions options; 3976 cricket::MediaSessionOptions options;
3994 options.data_channel_type = cricket::DCT_SCTP; 3977 options.data_channel_type = cricket::DCT_SCTP;
3995 JsepSessionDescription* offer = 3978 JsepSessionDescription* offer =
3996 CreateRemoteOffer(options, cricket::SEC_DISABLED); 3979 CreateRemoteOffer(options, cricket::SEC_DISABLED);
3997 SetRemoteDescriptionWithoutError(offer); 3980 SetRemoteDescriptionWithoutError(offer);
3998 3981
(...skipping 11 matching lines...) Expand all
4010 InitWithDtls(GetParam()); 3993 InitWithDtls(GetParam());
4011 3994
4012 SetLocalDescriptionWithDataChannel(); 3995 SetLocalDescriptionWithDataChannel();
4013 EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); 3996 EXPECT_EQ(nullptr, data_engine_->GetChannel(0));
4014 EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); 3997 EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport());
4015 } 3998 }
4016 3999
4017 // Test that if DTLS is enabled, we end up with an SctpTransport created 4000 // Test that if DTLS is enabled, we end up with an SctpTransport created
4018 // (and not an RtpDataChannel). 4001 // (and not an RtpDataChannel).
4019 TEST_P(WebRtcSessionTest, TestSctpDataChannelWithDtls) { 4002 TEST_P(WebRtcSessionTest, TestSctpDataChannelWithDtls) {
4020 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4021
4022 InitWithDtls(GetParam()); 4003 InitWithDtls(GetParam());
4023 4004
4024 SetLocalDescriptionWithDataChannel(); 4005 SetLocalDescriptionWithDataChannel();
4025 EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); 4006 EXPECT_EQ(nullptr, data_engine_->GetChannel(0));
4026 EXPECT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); 4007 EXPECT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport());
4027 } 4008 }
4028 4009
4029 // Test that if SCTP is disabled, we don't end up with an SctpTransport 4010 // Test that if SCTP is disabled, we don't end up with an SctpTransport
4030 // created (or an RtpDataChannel). 4011 // created (or an RtpDataChannel).
4031 TEST_P(WebRtcSessionTest, TestDisableSctpDataChannels) { 4012 TEST_P(WebRtcSessionTest, TestDisableSctpDataChannels) {
4032 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4033 options_.disable_sctp_data_channels = true; 4013 options_.disable_sctp_data_channels = true;
4034 InitWithDtls(GetParam()); 4014 InitWithDtls(GetParam());
4035 4015
4036 SetLocalDescriptionWithDataChannel(); 4016 SetLocalDescriptionWithDataChannel();
4037 EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); 4017 EXPECT_EQ(nullptr, data_engine_->GetChannel(0));
4038 EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); 4018 EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport());
4039 } 4019 }
4040 4020
4041 TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { 4021 TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) {
4042 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4043 const int new_send_port = 9998; 4022 const int new_send_port = 9998;
4044 const int new_recv_port = 7775; 4023 const int new_recv_port = 7775;
4045 4024
4046 InitWithDtls(GetParam()); 4025 InitWithDtls(GetParam());
4047 SetFactoryDtlsSrtp(); 4026 SetFactoryDtlsSrtp();
4048 4027
4049 // By default, don't actually add the codecs to desc_factory_; they don't 4028 // By default, don't actually add the codecs to desc_factory_; they don't
4050 // actually get serialized for SCTP in BuildMediaDescription(). Instead, 4029 // actually get serialized for SCTP in BuildMediaDescription(). Instead,
4051 // let the session description get parsed. That'll get the proper codecs 4030 // let the session description get parsed. That'll get the proper codecs
4052 // into the stream. 4031 // into the stream.
(...skipping 21 matching lines...) Expand all
4074 fake_sctp_transport_factory_->last_fake_sctp_transport()->local_port()); 4053 fake_sctp_transport_factory_->last_fake_sctp_transport()->local_port());
4075 EXPECT_EQ( 4054 EXPECT_EQ(
4076 new_send_port, 4055 new_send_port,
4077 fake_sctp_transport_factory_->last_fake_sctp_transport()->remote_port()); 4056 fake_sctp_transport_factory_->last_fake_sctp_transport()->remote_port());
4078 } 4057 }
4079 4058
4080 // Verifies that when a session's SctpTransport receives an OPEN message, 4059 // Verifies that when a session's SctpTransport receives an OPEN message,
4081 // WebRtcSession signals the SctpTransport creation request with the expected 4060 // WebRtcSession signals the SctpTransport creation request with the expected
4082 // config. 4061 // config.
4083 TEST_P(WebRtcSessionTest, TestSctpDataChannelOpenMessage) { 4062 TEST_P(WebRtcSessionTest, TestSctpDataChannelOpenMessage) {
4084 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4085
4086 InitWithDtls(GetParam()); 4063 InitWithDtls(GetParam());
4087 4064
4088 SetLocalDescriptionWithDataChannel(); 4065 SetLocalDescriptionWithDataChannel();
4089 EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); 4066 EXPECT_EQ(nullptr, data_engine_->GetChannel(0));
4090 ASSERT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); 4067 ASSERT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport());
4091 4068
4092 // Make the fake SCTP transport pretend it received an OPEN message. 4069 // Make the fake SCTP transport pretend it received an OPEN message.
4093 webrtc::DataChannelInit config; 4070 webrtc::DataChannelInit config;
4094 config.id = 1; 4071 config.id = 1;
4095 rtc::CopyOnWriteBuffer payload; 4072 rtc::CopyOnWriteBuffer payload;
(...skipping 19 matching lines...) Expand all
4115 Init(); 4092 Init();
4116 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); 4093 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000);
4117 4094
4118 EXPECT_EQ(session_->certificate_for_testing(), certificate); 4095 EXPECT_EQ(session_->certificate_for_testing(), certificate);
4119 } 4096 }
4120 4097
4121 // Verifies that CreateOffer succeeds when CreateOffer is called before async 4098 // Verifies that CreateOffer succeeds when CreateOffer is called before async
4122 // identity generation is finished (even if a certificate is provided this is 4099 // identity generation is finished (even if a certificate is provided this is
4123 // an async op). 4100 // an async op).
4124 TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { 4101 TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) {
4125 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4126 InitWithDtls(GetParam()); 4102 InitWithDtls(GetParam());
4127 4103
4128 EXPECT_TRUE(session_->waiting_for_certificate_for_testing()); 4104 EXPECT_TRUE(session_->waiting_for_certificate_for_testing());
4129 SendAudioVideoStream1(); 4105 SendAudioVideoStream1();
4130 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); 4106 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer());
4131 4107
4132 EXPECT_TRUE(offer != NULL); 4108 EXPECT_TRUE(offer != NULL);
4133 VerifyNoCryptoParams(offer->description(), true); 4109 VerifyNoCryptoParams(offer->description(), true);
4134 VerifyFingerprintStatus(offer->description(), true); 4110 VerifyFingerprintStatus(offer->description(), true);
4135 } 4111 }
4136 4112
4137 // Verifies that CreateAnswer succeeds when CreateOffer is called before async 4113 // Verifies that CreateAnswer succeeds when CreateOffer is called before async
4138 // identity generation is finished (even if a certificate is provided this is 4114 // identity generation is finished (even if a certificate is provided this is
4139 // an async op). 4115 // an async op).
4140 TEST_P(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { 4116 TEST_P(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) {
4141 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4142 InitWithDtls(GetParam()); 4117 InitWithDtls(GetParam());
4143 SetFactoryDtlsSrtp(); 4118 SetFactoryDtlsSrtp();
4144 4119
4145 cricket::MediaSessionOptions options; 4120 cricket::MediaSessionOptions options;
4146 options.recv_video = true; 4121 options.recv_video = true;
4147 std::unique_ptr<JsepSessionDescription> offer( 4122 std::unique_ptr<JsepSessionDescription> offer(
4148 CreateRemoteOffer(options, cricket::SEC_DISABLED)); 4123 CreateRemoteOffer(options, cricket::SEC_DISABLED));
4149 ASSERT_TRUE(offer.get() != NULL); 4124 ASSERT_TRUE(offer.get() != NULL);
4150 SetRemoteDescriptionWithoutError(offer.release()); 4125 SetRemoteDescriptionWithoutError(offer.release());
4151 4126
4152 std::unique_ptr<SessionDescriptionInterface> answer(CreateAnswer()); 4127 std::unique_ptr<SessionDescriptionInterface> answer(CreateAnswer());
4153 EXPECT_TRUE(answer != NULL); 4128 EXPECT_TRUE(answer != NULL);
4154 VerifyNoCryptoParams(answer->description(), true); 4129 VerifyNoCryptoParams(answer->description(), true);
4155 VerifyFingerprintStatus(answer->description(), true); 4130 VerifyFingerprintStatus(answer->description(), true);
4156 } 4131 }
4157 4132
4158 // Verifies that CreateOffer succeeds when CreateOffer is called after async 4133 // Verifies that CreateOffer succeeds when CreateOffer is called after async
4159 // identity generation is finished (even if a certificate is provided this is 4134 // identity generation is finished (even if a certificate is provided this is
4160 // an async op). 4135 // an async op).
4161 TEST_P(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { 4136 TEST_P(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) {
4162 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4163 InitWithDtls(GetParam()); 4137 InitWithDtls(GetParam());
4164 4138
4165 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); 4139 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000);
4166 4140
4167 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); 4141 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer());
4168 EXPECT_TRUE(offer != NULL); 4142 EXPECT_TRUE(offer != NULL);
4169 } 4143 }
4170 4144
4171 // Verifies that CreateOffer fails when CreateOffer is called after async 4145 // Verifies that CreateOffer fails when CreateOffer is called after async
4172 // identity generation fails. 4146 // identity generation fails.
4173 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { 4147 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) {
4174 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4175 InitWithDtlsIdentityGenFail(); 4148 InitWithDtlsIdentityGenFail();
4176 4149
4177 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); 4150 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000);
4178 4151
4179 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); 4152 std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer());
4180 EXPECT_TRUE(offer == NULL); 4153 EXPECT_TRUE(offer == NULL);
4181 } 4154 }
4182 4155
4183 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made 4156 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made
4184 // before async identity generation is finished. 4157 // before async identity generation is finished.
4185 TEST_P(WebRtcSessionTest, 4158 TEST_P(WebRtcSessionTest,
4186 TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) { 4159 TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) {
4187 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4188 VerifyMultipleAsyncCreateDescription(GetParam(), 4160 VerifyMultipleAsyncCreateDescription(GetParam(),
4189 CreateSessionDescriptionRequest::kOffer); 4161 CreateSessionDescriptionRequest::kOffer);
4190 } 4162 }
4191 4163
4192 // Verifies that CreateOffer fails when Multiple CreateOffer calls are made 4164 // Verifies that CreateOffer fails when Multiple CreateOffer calls are made
4193 // before async identity generation fails. 4165 // before async identity generation fails.
4194 TEST_F(WebRtcSessionTest, 4166 TEST_F(WebRtcSessionTest,
4195 TestMultipleCreateOfferBeforeIdentityRequestReturnFailure) { 4167 TestMultipleCreateOfferBeforeIdentityRequestReturnFailure) {
4196 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4197 VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( 4168 VerifyMultipleAsyncCreateDescriptionIdentityGenFailure(
4198 CreateSessionDescriptionRequest::kOffer); 4169 CreateSessionDescriptionRequest::kOffer);
4199 } 4170 }
4200 4171
4201 // Verifies that CreateAnswer succeeds when Multiple CreateAnswer calls are made 4172 // Verifies that CreateAnswer succeeds when Multiple CreateAnswer calls are made
4202 // before async identity generation is finished. 4173 // before async identity generation is finished.
4203 TEST_P(WebRtcSessionTest, 4174 TEST_P(WebRtcSessionTest,
4204 TestMultipleCreateAnswerBeforeIdentityRequestReturnSuccess) { 4175 TestMultipleCreateAnswerBeforeIdentityRequestReturnSuccess) {
4205 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4206 VerifyMultipleAsyncCreateDescription( 4176 VerifyMultipleAsyncCreateDescription(
4207 GetParam(), CreateSessionDescriptionRequest::kAnswer); 4177 GetParam(), CreateSessionDescriptionRequest::kAnswer);
4208 } 4178 }
4209 4179
4210 // Verifies that CreateAnswer fails when Multiple CreateAnswer calls are made 4180 // Verifies that CreateAnswer fails when Multiple CreateAnswer calls are made
4211 // before async identity generation fails. 4181 // before async identity generation fails.
4212 TEST_F(WebRtcSessionTest, 4182 TEST_F(WebRtcSessionTest,
4213 TestMultipleCreateAnswerBeforeIdentityRequestReturnFailure) { 4183 TestMultipleCreateAnswerBeforeIdentityRequestReturnFailure) {
4214 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4215 VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( 4184 VerifyMultipleAsyncCreateDescriptionIdentityGenFailure(
4216 CreateSessionDescriptionRequest::kAnswer); 4185 CreateSessionDescriptionRequest::kAnswer);
4217 } 4186 }
4218 4187
4219 // Verifies that setRemoteDescription fails when DTLS is disabled and the remote 4188 // Verifies that setRemoteDescription fails when DTLS is disabled and the remote
4220 // offer has no SDES crypto but only DTLS fingerprint. 4189 // offer has no SDES crypto but only DTLS fingerprint.
4221 TEST_F(WebRtcSessionTest, TestSetRemoteOfferFailIfDtlsDisabledAndNoCrypto) { 4190 TEST_F(WebRtcSessionTest, TestSetRemoteOfferFailIfDtlsDisabledAndNoCrypto) {
4222 // Init without DTLS. 4191 // Init without DTLS.
4223 Init(); 4192 Init();
4224 // Create a remote offer with secured transport disabled. 4193 // Create a remote offer with secured transport disabled.
(...skipping 23 matching lines...) Expand all
4248 voice_channel_ = media_engine_->GetVoiceChannel(0); 4217 voice_channel_ = media_engine_->GetVoiceChannel(0);
4249 4218
4250 ASSERT_TRUE(voice_channel_ != NULL); 4219 ASSERT_TRUE(voice_channel_ != NULL);
4251 const cricket::AudioOptions& audio_options = voice_channel_->options(); 4220 const cricket::AudioOptions& audio_options = voice_channel_->options();
4252 EXPECT_EQ(rtc::Optional<bool>(true), audio_options.combined_audio_video_bwe); 4221 EXPECT_EQ(rtc::Optional<bool>(true), audio_options.combined_audio_video_bwe);
4253 } 4222 }
4254 4223
4255 // Tests that we can renegotiate new media content with ICE candidates in the 4224 // Tests that we can renegotiate new media content with ICE candidates in the
4256 // new remote SDP. 4225 // new remote SDP.
4257 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { 4226 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) {
4258 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4259 InitWithDtls(GetParam()); 4227 InitWithDtls(GetParam());
4260 SetFactoryDtlsSrtp(); 4228 SetFactoryDtlsSrtp();
4261 4229
4262 SendAudioOnlyStream2(); 4230 SendAudioOnlyStream2();
4263 SessionDescriptionInterface* offer = CreateOffer(); 4231 SessionDescriptionInterface* offer = CreateOffer();
4264 SetLocalDescriptionWithoutError(offer); 4232 SetLocalDescriptionWithoutError(offer);
4265 4233
4266 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); 4234 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer);
4267 SetRemoteDescriptionWithoutError(answer); 4235 SetRemoteDescriptionWithoutError(answer);
4268 4236
4269 cricket::MediaSessionOptions options; 4237 cricket::MediaSessionOptions options;
4270 options.recv_video = true; 4238 options.recv_video = true;
4271 offer = CreateRemoteOffer(options, cricket::SEC_DISABLED); 4239 offer = CreateRemoteOffer(options, cricket::SEC_DISABLED);
4272 4240
4273 cricket::Candidate candidate1; 4241 cricket::Candidate candidate1;
4274 candidate1.set_address(rtc::SocketAddress("1.1.1.1", 5000)); 4242 candidate1.set_address(rtc::SocketAddress("1.1.1.1", 5000));
4275 candidate1.set_component(1); 4243 candidate1.set_component(1);
4276 JsepIceCandidate ice_candidate(kMediaContentName1, kMediaContentIndex1, 4244 JsepIceCandidate ice_candidate(kMediaContentName1, kMediaContentIndex1,
4277 candidate1); 4245 candidate1);
4278 EXPECT_TRUE(offer->AddCandidate(&ice_candidate)); 4246 EXPECT_TRUE(offer->AddCandidate(&ice_candidate));
4279 SetRemoteDescriptionWithoutError(offer); 4247 SetRemoteDescriptionWithoutError(offer);
4280 4248
4281 answer = CreateAnswer(); 4249 answer = CreateAnswer();
4282 SetLocalDescriptionWithoutError(answer); 4250 SetLocalDescriptionWithoutError(answer);
4283 } 4251 }
4284 4252
4285 // Tests that we can renegotiate new media content with ICE candidates separated 4253 // Tests that we can renegotiate new media content with ICE candidates separated
4286 // from the remote SDP. 4254 // from the remote SDP.
4287 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { 4255 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) {
4288 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
4289 InitWithDtls(GetParam()); 4256 InitWithDtls(GetParam());
4290 SetFactoryDtlsSrtp(); 4257 SetFactoryDtlsSrtp();
4291 4258
4292 SendAudioOnlyStream2(); 4259 SendAudioOnlyStream2();
4293 SessionDescriptionInterface* offer = CreateOffer(); 4260 SessionDescriptionInterface* offer = CreateOffer();
4294 SetLocalDescriptionWithoutError(offer); 4261 SetLocalDescriptionWithoutError(offer);
4295 4262
4296 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); 4263 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer);
4297 SetRemoteDescriptionWithoutError(answer); 4264 SetRemoteDescriptionWithoutError(answer);
4298 4265
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
4443 } 4410 }
4444 4411
4445 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test 4412 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test
4446 // currently fails because upon disconnection and reconnection OnIceComplete is 4413 // currently fails because upon disconnection and reconnection OnIceComplete is
4447 // called more than once without returning to IceGatheringGathering. 4414 // called more than once without returning to IceGatheringGathering.
4448 4415
4449 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, 4416 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests,
4450 WebRtcSessionTest, 4417 WebRtcSessionTest,
4451 testing::Values(ALREADY_GENERATED, 4418 testing::Values(ALREADY_GENERATED,
4452 DTLS_IDENTITY_STORE)); 4419 DTLS_IDENTITY_STORE));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698