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

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

Issue 1397973002: Merging BaseSession code into WebRtcSession. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Merging with master (MediaStreamSignaling removal affected WebRtcSession). Created 5 years, 2 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
« no previous file with comments | « talk/app/webrtc/webrtcsession.cc ('k') | talk/app/webrtc/webrtcsessiondescriptionfactory.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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 #include "webrtc/base/stringutils.h" 63 #include "webrtc/base/stringutils.h"
64 #include "webrtc/base/thread.h" 64 #include "webrtc/base/thread.h"
65 #include "webrtc/base/virtualsocketserver.h" 65 #include "webrtc/base/virtualsocketserver.h"
66 66
67 #define MAYBE_SKIP_TEST(feature) \ 67 #define MAYBE_SKIP_TEST(feature) \
68 if (!(feature())) { \ 68 if (!(feature())) { \
69 LOG(LS_INFO) << "Feature disabled... skipping"; \ 69 LOG(LS_INFO) << "Feature disabled... skipping"; \
70 return; \ 70 return; \
71 } 71 }
72 72
73 using cricket::BaseSession;
74 using cricket::DF_PLAY; 73 using cricket::DF_PLAY;
75 using cricket::DF_SEND; 74 using cricket::DF_SEND;
76 using cricket::FakeVoiceMediaChannel; 75 using cricket::FakeVoiceMediaChannel;
77 using cricket::TransportInfo; 76 using cricket::TransportInfo;
78 using rtc::SocketAddress; 77 using rtc::SocketAddress;
79 using rtc::scoped_ptr; 78 using rtc::scoped_ptr;
80 using rtc::Thread; 79 using rtc::Thread;
81 using webrtc::CreateSessionDescription; 80 using webrtc::CreateSessionDescription;
82 using webrtc::CreateSessionDescriptionObserver; 81 using webrtc::CreateSessionDescriptionObserver;
83 using webrtc::CreateSessionDescriptionRequest; 82 using webrtc::CreateSessionDescriptionRequest;
84 using webrtc::DataChannel; 83 using webrtc::DataChannel;
85 using webrtc::DtlsIdentityStoreInterface; 84 using webrtc::DtlsIdentityStoreInterface;
86 using webrtc::FakeConstraints; 85 using webrtc::FakeConstraints;
87 using webrtc::FakeMetricsObserver; 86 using webrtc::FakeMetricsObserver;
88 using webrtc::IceCandidateCollection; 87 using webrtc::IceCandidateCollection;
89 using webrtc::InternalDataChannelInit; 88 using webrtc::InternalDataChannelInit;
90 using webrtc::JsepIceCandidate; 89 using webrtc::JsepIceCandidate;
91 using webrtc::JsepSessionDescription; 90 using webrtc::JsepSessionDescription;
92 using webrtc::PeerConnectionFactoryInterface; 91 using webrtc::PeerConnectionFactoryInterface;
93 using webrtc::PeerConnectionInterface; 92 using webrtc::PeerConnectionInterface;
94 using webrtc::SessionDescriptionInterface; 93 using webrtc::SessionDescriptionInterface;
94 using webrtc::SessionStats;
95 using webrtc::StreamCollection; 95 using webrtc::StreamCollection;
96 using webrtc::WebRtcSession; 96 using webrtc::WebRtcSession;
97 using webrtc::kBundleWithoutRtcpMux; 97 using webrtc::kBundleWithoutRtcpMux;
98 using webrtc::kCreateChannelFailed; 98 using webrtc::kCreateChannelFailed;
99 using webrtc::kInvalidSdp; 99 using webrtc::kInvalidSdp;
100 using webrtc::kMlineMismatch; 100 using webrtc::kMlineMismatch;
101 using webrtc::kPushDownTDFailed; 101 using webrtc::kPushDownTDFailed;
102 using webrtc::kSdpWithoutIceUfragPwd; 102 using webrtc::kSdpWithoutIceUfragPwd;
103 using webrtc::kSdpWithoutDtlsFingerprint; 103 using webrtc::kSdpWithoutDtlsFingerprint;
104 using webrtc::kSdpWithoutSdesCrypto; 104 using webrtc::kSdpWithoutSdesCrypto;
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 SessionDescriptionInterface* offer = CreateRemoteOffer(); 850 SessionDescriptionInterface* offer = CreateRemoteOffer();
851 SetRemoteDescriptionWithoutError(offer); 851 SetRemoteDescriptionWithoutError(offer);
852 SessionDescriptionInterface* answer = CreateAnswer(NULL); 852 SessionDescriptionInterface* answer = CreateAnswer(NULL);
853 SetLocalDescriptionWithoutError(answer); 853 SetLocalDescriptionWithoutError(answer);
854 } 854 }
855 void SetLocalDescriptionWithoutError(SessionDescriptionInterface* desc) { 855 void SetLocalDescriptionWithoutError(SessionDescriptionInterface* desc) {
856 EXPECT_TRUE(session_->SetLocalDescription(desc, NULL)); 856 EXPECT_TRUE(session_->SetLocalDescription(desc, NULL));
857 session_->MaybeStartGathering(); 857 session_->MaybeStartGathering();
858 } 858 }
859 void SetLocalDescriptionExpectState(SessionDescriptionInterface* desc, 859 void SetLocalDescriptionExpectState(SessionDescriptionInterface* desc,
860 BaseSession::State expected_state) { 860 WebRtcSession::State expected_state) {
861 SetLocalDescriptionWithoutError(desc); 861 SetLocalDescriptionWithoutError(desc);
862 EXPECT_EQ(expected_state, session_->state()); 862 EXPECT_EQ(expected_state, session_->state());
863 } 863 }
864 void SetLocalDescriptionExpectError(const std::string& action, 864 void SetLocalDescriptionExpectError(const std::string& action,
865 const std::string& expected_error, 865 const std::string& expected_error,
866 SessionDescriptionInterface* desc) { 866 SessionDescriptionInterface* desc) {
867 std::string error; 867 std::string error;
868 EXPECT_FALSE(session_->SetLocalDescription(desc, &error)); 868 EXPECT_FALSE(session_->SetLocalDescription(desc, &error));
869 std::string sdp_type = "local "; 869 std::string sdp_type = "local ";
870 sdp_type.append(action); 870 sdp_type.append(action);
871 EXPECT_NE(std::string::npos, error.find(sdp_type)); 871 EXPECT_NE(std::string::npos, error.find(sdp_type));
872 EXPECT_NE(std::string::npos, error.find(expected_error)); 872 EXPECT_NE(std::string::npos, error.find(expected_error));
873 } 873 }
874 void SetLocalDescriptionOfferExpectError(const std::string& expected_error, 874 void SetLocalDescriptionOfferExpectError(const std::string& expected_error,
875 SessionDescriptionInterface* desc) { 875 SessionDescriptionInterface* desc) {
876 SetLocalDescriptionExpectError(SessionDescriptionInterface::kOffer, 876 SetLocalDescriptionExpectError(SessionDescriptionInterface::kOffer,
877 expected_error, desc); 877 expected_error, desc);
878 } 878 }
879 void SetLocalDescriptionAnswerExpectError(const std::string& expected_error, 879 void SetLocalDescriptionAnswerExpectError(const std::string& expected_error,
880 SessionDescriptionInterface* desc) { 880 SessionDescriptionInterface* desc) {
881 SetLocalDescriptionExpectError(SessionDescriptionInterface::kAnswer, 881 SetLocalDescriptionExpectError(SessionDescriptionInterface::kAnswer,
882 expected_error, desc); 882 expected_error, desc);
883 } 883 }
884 void SetRemoteDescriptionWithoutError(SessionDescriptionInterface* desc) { 884 void SetRemoteDescriptionWithoutError(SessionDescriptionInterface* desc) {
885 EXPECT_TRUE(session_->SetRemoteDescription(desc, NULL)); 885 EXPECT_TRUE(session_->SetRemoteDescription(desc, NULL));
886 } 886 }
887 void SetRemoteDescriptionExpectState(SessionDescriptionInterface* desc, 887 void SetRemoteDescriptionExpectState(SessionDescriptionInterface* desc,
888 BaseSession::State expected_state) { 888 WebRtcSession::State expected_state) {
889 SetRemoteDescriptionWithoutError(desc); 889 SetRemoteDescriptionWithoutError(desc);
890 EXPECT_EQ(expected_state, session_->state()); 890 EXPECT_EQ(expected_state, session_->state());
891 } 891 }
892 void SetRemoteDescriptionExpectError(const std::string& action, 892 void SetRemoteDescriptionExpectError(const std::string& action,
893 const std::string& expected_error, 893 const std::string& expected_error,
894 SessionDescriptionInterface* desc) { 894 SessionDescriptionInterface* desc) {
895 std::string error; 895 std::string error;
896 EXPECT_FALSE(session_->SetRemoteDescription(desc, &error)); 896 EXPECT_FALSE(session_->SetRemoteDescription(desc, &error));
897 std::string sdp_type = "remote "; 897 std::string sdp_type = "remote ";
898 sdp_type.append(action); 898 sdp_type.append(action);
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after
1939 SessionDescriptionInterface* offer2 = CreateOffer(); 1939 SessionDescriptionInterface* offer2 = CreateOffer();
1940 SetRemoteDescriptionWithoutError(offer2); 1940 SetRemoteDescriptionWithoutError(offer2);
1941 } 1941 }
1942 1942
1943 TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteOffer) { 1943 TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteOffer) {
1944 Init(); 1944 Init();
1945 SendNothing(); 1945 SendNothing();
1946 SessionDescriptionInterface* offer = CreateOffer(); 1946 SessionDescriptionInterface* offer = CreateOffer();
1947 SetLocalDescriptionWithoutError(offer); 1947 SetLocalDescriptionWithoutError(offer);
1948 offer = CreateOffer(); 1948 offer = CreateOffer();
1949 SetRemoteDescriptionOfferExpectError( 1949 SetRemoteDescriptionOfferExpectError("Called in wrong state: STATE_SENTOFFER",
1950 "Called in wrong state: STATE_SENTINITIATE", offer); 1950 offer);
1951 } 1951 }
1952 1952
1953 TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) { 1953 TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) {
1954 Init(); 1954 Init();
1955 SendNothing(); 1955 SendNothing();
1956 SessionDescriptionInterface* offer = CreateOffer(); 1956 SessionDescriptionInterface* offer = CreateOffer();
1957 SetRemoteDescriptionWithoutError(offer); 1957 SetRemoteDescriptionWithoutError(offer);
1958 offer = CreateOffer(); 1958 offer = CreateOffer();
1959 SetLocalDescriptionOfferExpectError( 1959 SetLocalDescriptionOfferExpectError(
1960 "Called in wrong state: STATE_RECEIVEDINITIATE", offer); 1960 "Called in wrong state: STATE_RECEIVEDOFFER", offer);
1961 } 1961 }
1962 1962
1963 TEST_F(WebRtcSessionTest, TestSetLocalPrAnswer) { 1963 TEST_F(WebRtcSessionTest, TestSetLocalPrAnswer) {
1964 Init(); 1964 Init();
1965 SendNothing(); 1965 SendNothing();
1966 SessionDescriptionInterface* offer = CreateRemoteOffer(); 1966 SessionDescriptionInterface* offer = CreateRemoteOffer();
1967 SetRemoteDescriptionExpectState(offer, BaseSession::STATE_RECEIVEDINITIATE); 1967 SetRemoteDescriptionExpectState(offer, WebRtcSession::STATE_RECEIVEDOFFER);
1968 1968
1969 JsepSessionDescription* pranswer = static_cast<JsepSessionDescription*>( 1969 JsepSessionDescription* pranswer = static_cast<JsepSessionDescription*>(
1970 CreateAnswer(NULL)); 1970 CreateAnswer(NULL));
1971 pranswer->set_type(SessionDescriptionInterface::kPrAnswer); 1971 pranswer->set_type(SessionDescriptionInterface::kPrAnswer);
1972 SetLocalDescriptionExpectState(pranswer, BaseSession::STATE_SENTPRACCEPT); 1972 SetLocalDescriptionExpectState(pranswer, WebRtcSession::STATE_SENTPRANSWER);
1973 1973
1974 SendAudioVideoStream1(); 1974 SendAudioVideoStream1();
1975 JsepSessionDescription* pranswer2 = static_cast<JsepSessionDescription*>( 1975 JsepSessionDescription* pranswer2 = static_cast<JsepSessionDescription*>(
1976 CreateAnswer(NULL)); 1976 CreateAnswer(NULL));
1977 pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); 1977 pranswer2->set_type(SessionDescriptionInterface::kPrAnswer);
1978 1978
1979 SetLocalDescriptionExpectState(pranswer2, BaseSession::STATE_SENTPRACCEPT); 1979 SetLocalDescriptionExpectState(pranswer2, WebRtcSession::STATE_SENTPRANSWER);
1980 1980
1981 SendAudioVideoStream2(); 1981 SendAudioVideoStream2();
1982 SessionDescriptionInterface* answer = CreateAnswer(NULL); 1982 SessionDescriptionInterface* answer = CreateAnswer(NULL);
1983 SetLocalDescriptionExpectState(answer, BaseSession::STATE_SENTACCEPT); 1983 SetLocalDescriptionExpectState(answer, WebRtcSession::STATE_INPROGRESS);
1984 } 1984 }
1985 1985
1986 TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { 1986 TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) {
1987 Init(); 1987 Init();
1988 SendNothing(); 1988 SendNothing();
1989 SessionDescriptionInterface* offer = CreateOffer(); 1989 SessionDescriptionInterface* offer = CreateOffer();
1990 SetLocalDescriptionExpectState(offer, BaseSession::STATE_SENTINITIATE); 1990 SetLocalDescriptionExpectState(offer, WebRtcSession::STATE_SENTOFFER);
1991 1991
1992 JsepSessionDescription* pranswer = 1992 JsepSessionDescription* pranswer =
1993 CreateRemoteAnswer(session_->local_description()); 1993 CreateRemoteAnswer(session_->local_description());
1994 pranswer->set_type(SessionDescriptionInterface::kPrAnswer); 1994 pranswer->set_type(SessionDescriptionInterface::kPrAnswer);
1995 1995
1996 SetRemoteDescriptionExpectState(pranswer, 1996 SetRemoteDescriptionExpectState(pranswer,
1997 BaseSession::STATE_RECEIVEDPRACCEPT); 1997 WebRtcSession::STATE_RECEIVEDPRANSWER);
1998 1998
1999 SendAudioVideoStream1(); 1999 SendAudioVideoStream1();
2000 JsepSessionDescription* pranswer2 = 2000 JsepSessionDescription* pranswer2 =
2001 CreateRemoteAnswer(session_->local_description()); 2001 CreateRemoteAnswer(session_->local_description());
2002 pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); 2002 pranswer2->set_type(SessionDescriptionInterface::kPrAnswer);
2003 2003
2004 SetRemoteDescriptionExpectState(pranswer2, 2004 SetRemoteDescriptionExpectState(pranswer2,
2005 BaseSession::STATE_RECEIVEDPRACCEPT); 2005 WebRtcSession::STATE_RECEIVEDPRANSWER);
2006 2006
2007 SendAudioVideoStream2(); 2007 SendAudioVideoStream2();
2008 SessionDescriptionInterface* answer = 2008 SessionDescriptionInterface* answer =
2009 CreateRemoteAnswer(session_->local_description()); 2009 CreateRemoteAnswer(session_->local_description());
2010 SetRemoteDescriptionExpectState(answer, BaseSession::STATE_RECEIVEDACCEPT); 2010 SetRemoteDescriptionExpectState(answer, WebRtcSession::STATE_INPROGRESS);
2011 } 2011 }
2012 2012
2013 TEST_F(WebRtcSessionTest, TestSetLocalAnswerWithoutOffer) { 2013 TEST_F(WebRtcSessionTest, TestSetLocalAnswerWithoutOffer) {
2014 Init(); 2014 Init();
2015 SendNothing(); 2015 SendNothing();
2016 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); 2016 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
2017 2017
2018 SessionDescriptionInterface* answer = 2018 SessionDescriptionInterface* answer =
2019 CreateRemoteAnswer(offer.get()); 2019 CreateRemoteAnswer(offer.get());
2020 SetLocalDescriptionAnswerExpectError("Called in wrong state: STATE_INIT", 2020 SetLocalDescriptionAnswerExpectError("Called in wrong state: STATE_INIT",
(...skipping 12 matching lines...) Expand all
2033 } 2033 }
2034 2034
2035 TEST_F(WebRtcSessionTest, TestAddRemoteCandidate) { 2035 TEST_F(WebRtcSessionTest, TestAddRemoteCandidate) {
2036 Init(); 2036 Init();
2037 SendAudioVideoStream1(); 2037 SendAudioVideoStream1();
2038 2038
2039 cricket::Candidate candidate; 2039 cricket::Candidate candidate;
2040 candidate.set_component(1); 2040 candidate.set_component(1);
2041 JsepIceCandidate ice_candidate1(kMediaContentName0, 0, candidate); 2041 JsepIceCandidate ice_candidate1(kMediaContentName0, 0, candidate);
2042 2042
2043 // Fail since we have not set a offer description. 2043 // Fail since we have not set a remote description.
2044 EXPECT_FALSE(session_->ProcessIceMessage(&ice_candidate1)); 2044 EXPECT_FALSE(session_->ProcessIceMessage(&ice_candidate1));
2045 2045
2046 SessionDescriptionInterface* offer = CreateOffer(); 2046 SessionDescriptionInterface* offer = CreateOffer();
2047 SetLocalDescriptionWithoutError(offer); 2047 SetLocalDescriptionWithoutError(offer);
2048 // Candidate should be allowed to add before remote description. 2048
2049 // Fail since we have not set a remote description.
2050 EXPECT_FALSE(session_->ProcessIceMessage(&ice_candidate1));
2051
2052 SessionDescriptionInterface* answer = CreateRemoteAnswer(
2053 session_->local_description());
2054 SetRemoteDescriptionWithoutError(answer);
2055
2049 EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate1)); 2056 EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate1));
2050 candidate.set_component(2); 2057 candidate.set_component(2);
2051 JsepIceCandidate ice_candidate2(kMediaContentName0, 0, candidate); 2058 JsepIceCandidate ice_candidate2(kMediaContentName0, 0, candidate);
2052 EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate2)); 2059 EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate2));
2053 2060
2054 SessionDescriptionInterface* answer = CreateRemoteAnswer(
2055 session_->local_description());
2056 SetRemoteDescriptionWithoutError(answer);
2057
2058 // Verifying the candidates are copied properly from internal vector. 2061 // Verifying the candidates are copied properly from internal vector.
2059 const SessionDescriptionInterface* remote_desc = 2062 const SessionDescriptionInterface* remote_desc =
2060 session_->remote_description(); 2063 session_->remote_description();
2061 ASSERT_TRUE(remote_desc != NULL); 2064 ASSERT_TRUE(remote_desc != NULL);
2062 ASSERT_EQ(2u, remote_desc->number_of_mediasections()); 2065 ASSERT_EQ(2u, remote_desc->number_of_mediasections());
2063 const IceCandidateCollection* candidates = 2066 const IceCandidateCollection* candidates =
2064 remote_desc->candidates(kMediaContentIndex0); 2067 remote_desc->candidates(kMediaContentIndex0);
2065 ASSERT_EQ(2u, candidates->count()); 2068 ASSERT_EQ(2u, candidates->count());
2066 EXPECT_EQ(kMediaContentIndex0, candidates->at(0)->sdp_mline_index()); 2069 EXPECT_EQ(kMediaContentIndex0, candidates->at(0)->sdp_mline_index());
2067 EXPECT_EQ(kMediaContentName0, candidates->at(0)->sdp_mid()); 2070 EXPECT_EQ(kMediaContentName0, candidates->at(0)->sdp_mid());
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
2224 } 2227 }
2225 2228
2226 // Verifies TransportProxy and media channels are created with content names 2229 // Verifies TransportProxy and media channels are created with content names
2227 // present in the SessionDescription. 2230 // present in the SessionDescription.
2228 TEST_F(WebRtcSessionTest, TestChannelCreationsWithContentNames) { 2231 TEST_F(WebRtcSessionTest, TestChannelCreationsWithContentNames) {
2229 Init(); 2232 Init();
2230 SendAudioVideoStream1(); 2233 SendAudioVideoStream1();
2231 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); 2234 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
2232 2235
2233 // CreateOffer creates session description with the content names "audio" and 2236 // CreateOffer creates session description with the content names "audio" and
2234 // "video". Goal is to modify these content names and verify transport channel 2237 // "video". Goal is to modify these content names and verify transport
2235 // proxy in the BaseSession, as proxies are created with the content names 2238 // channels
2239 // in the WebRtcSession, as channels are created with the content names
2236 // present in SDP. 2240 // present in SDP.
2237 std::string sdp; 2241 std::string sdp;
2238 EXPECT_TRUE(offer->ToString(&sdp)); 2242 EXPECT_TRUE(offer->ToString(&sdp));
2239 const std::string kAudioMid = "a=mid:audio"; 2243 const std::string kAudioMid = "a=mid:audio";
2240 const std::string kAudioMidReplaceStr = "a=mid:audio_content_name"; 2244 const std::string kAudioMidReplaceStr = "a=mid:audio_content_name";
2241 const std::string kVideoMid = "a=mid:video"; 2245 const std::string kVideoMid = "a=mid:video";
2242 const std::string kVideoMidReplaceStr = "a=mid:video_content_name"; 2246 const std::string kVideoMidReplaceStr = "a=mid:video_content_name";
2243 2247
2244 // Replacing |audio| with |audio_content_name|. 2248 // Replacing |audio| with |audio_content_name|.
2245 rtc::replace_substrs(kAudioMid.c_str(), kAudioMid.length(), 2249 rtc::replace_substrs(kAudioMid.c_str(), kAudioMid.length(),
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
2805 sdp.clear(); 2809 sdp.clear();
2806 ModifyIceUfragPwdLines(offer.get(), "0123456789012444", 2810 ModifyIceUfragPwdLines(offer.get(), "0123456789012444",
2807 "abcdefghijklmnopqrstuvyz", &sdp); 2811 "abcdefghijklmnopqrstuvyz", &sdp);
2808 SessionDescriptionInterface* offer4 = 2812 SessionDescriptionInterface* offer4 =
2809 CreateSessionDescription(JsepSessionDescription::kOffer, sdp, NULL); 2813 CreateSessionDescription(JsepSessionDescription::kOffer, sdp, NULL);
2810 SetRemoteDescriptionWithoutError(offer4); 2814 SetRemoteDescriptionWithoutError(offer4);
2811 EXPECT_EQ(0, session_->remote_description()->candidates(0)->count()); 2815 EXPECT_EQ(0, session_->remote_description()->candidates(0)->count());
2812 } 2816 }
2813 2817
2814 // Test that candidates sent to the "video" transport do not get pushed down to 2818 // Test that candidates sent to the "video" transport do not get pushed down to
2815 // the "audio" transport channel when bundling using TransportProxy. 2819 // the "audio" transport channel when bundling.
2816 TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) { 2820 TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) {
2817 AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); 2821 AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort));
2818 2822
2819 InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced); 2823 InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced);
2820 SendAudioVideoStream1(); 2824 SendAudioVideoStream1();
2821 2825
2822 PeerConnectionInterface::RTCOfferAnswerOptions options; 2826 PeerConnectionInterface::RTCOfferAnswerOptions options;
2823 options.use_rtp_mux = true; 2827 options.use_rtp_mux = true;
2824 2828
2825 SessionDescriptionInterface* offer = CreateRemoteOffer(); 2829 SessionDescriptionInterface* offer = CreateRemoteOffer();
2826 SetRemoteDescriptionWithoutError(offer); 2830 SetRemoteDescriptionWithoutError(offer);
2827 2831
2828 SessionDescriptionInterface* answer = CreateAnswer(NULL); 2832 SessionDescriptionInterface* answer = CreateAnswer(NULL);
2829 SetLocalDescriptionWithoutError(answer); 2833 SetLocalDescriptionWithoutError(answer);
2830 2834
2831 EXPECT_EQ(session_->voice_rtp_transport_channel(), 2835 EXPECT_EQ(session_->voice_rtp_transport_channel(),
2832 session_->video_rtp_transport_channel()); 2836 session_->video_rtp_transport_channel());
2833 2837
2834 cricket::BaseChannel* voice_channel = session_->voice_channel(); 2838 cricket::BaseChannel* voice_channel = session_->voice_channel();
2835 ASSERT(voice_channel != NULL); 2839 ASSERT(voice_channel != NULL);
2836 2840
2837 // Checks if one of the transport channels contains a connection using a given 2841 // Checks if one of the transport channels contains a connection using a given
2838 // port. 2842 // port.
2839 auto connection_with_remote_port = [this, voice_channel](int port) { 2843 auto connection_with_remote_port = [this, voice_channel](int port) {
2840 cricket::SessionStats stats; 2844 SessionStats stats;
2841 session_->GetChannelTransportStats(voice_channel, &stats); 2845 session_->GetChannelTransportStats(voice_channel, &stats);
2842 for (auto& kv : stats.transport_stats) { 2846 for (auto& kv : stats.transport_stats) {
2843 for (auto& chan_stat : kv.second.channel_stats) { 2847 for (auto& chan_stat : kv.second.channel_stats) {
2844 for (auto& conn_info : chan_stat.connection_infos) { 2848 for (auto& conn_info : chan_stat.connection_infos) {
2845 if (conn_info.remote_candidate.address().port() == port) { 2849 if (conn_info.remote_candidate.address().port() == port) {
2846 return true; 2850 return true;
2847 } 2851 }
2848 } 2852 }
2849 } 2853 }
2850 } 2854 }
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2989 session_->video_rtp_transport_channel()); 2993 session_->video_rtp_transport_channel());
2990 2994
2991 SendAudioVideoStream2(); 2995 SendAudioVideoStream2();
2992 cricket::MediaSessionOptions recv_options; 2996 cricket::MediaSessionOptions recv_options;
2993 recv_options.recv_audio = false; 2997 recv_options.recv_audio = false;
2994 recv_options.recv_video = true; 2998 recv_options.recv_video = true;
2995 SessionDescriptionInterface* answer = 2999 SessionDescriptionInterface* answer =
2996 CreateRemoteAnswer(session_->local_description(), recv_options); 3000 CreateRemoteAnswer(session_->local_description(), recv_options);
2997 SetRemoteDescriptionWithoutError(answer); 3001 SetRemoteDescriptionWithoutError(answer);
2998 3002
2999 EXPECT_TRUE(NULL == session_->voice_channel()); 3003 EXPECT_TRUE(nullptr == session_->voice_channel());
3000 EXPECT_TRUE(NULL != session_->video_rtp_transport_channel()); 3004 EXPECT_TRUE(nullptr != session_->video_rtp_transport_channel());
3001 3005
3002 session_->Terminate(); 3006 session_->Close();
3003 EXPECT_TRUE(NULL == session_->voice_rtp_transport_channel()); 3007 EXPECT_TRUE(nullptr == session_->voice_rtp_transport_channel());
3004 EXPECT_TRUE(NULL == session_->voice_rtcp_transport_channel()); 3008 EXPECT_TRUE(nullptr == session_->voice_rtcp_transport_channel());
3005 EXPECT_TRUE(NULL == session_->video_rtp_transport_channel()); 3009 EXPECT_TRUE(nullptr == session_->video_rtp_transport_channel());
3006 EXPECT_TRUE(NULL == session_->video_rtcp_transport_channel()); 3010 EXPECT_TRUE(nullptr == session_->video_rtcp_transport_channel());
3007 } 3011 }
3008 3012
3009 // kBundlePolicyMaxBundle policy but no BUNDLE in the answer. 3013 // kBundlePolicyMaxBundle policy but no BUNDLE in the answer.
3010 TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInAnswer) { 3014 TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInAnswer) {
3011 InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); 3015 InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle);
3012 SendAudioVideoStream1(); 3016 SendAudioVideoStream1();
3013 3017
3014 PeerConnectionInterface::RTCOfferAnswerOptions options; 3018 PeerConnectionInterface::RTCOfferAnswerOptions options;
3015 options.use_rtp_mux = true; 3019 options.use_rtp_mux = true;
3016 3020
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
3342 ASSERT_EQ(3U, channel->dtmf_info_queue().size()); 3346 ASSERT_EQ(3U, channel->dtmf_info_queue().size());
3343 const uint32_t send_ssrc = channel->send_streams()[0].first_ssrc(); 3347 const uint32_t send_ssrc = channel->send_streams()[0].first_ssrc();
3344 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[0], send_ssrc, 0, 3348 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[0], send_ssrc, 0,
3345 expected_duration, expected_flags)); 3349 expected_duration, expected_flags));
3346 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[1], send_ssrc, 1, 3350 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[1], send_ssrc, 1,
3347 expected_duration, expected_flags)); 3351 expected_duration, expected_flags));
3348 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[2], send_ssrc, 2, 3352 EXPECT_TRUE(CompareDtmfInfo(channel->dtmf_info_queue()[2], send_ssrc, 2,
3349 expected_duration, expected_flags)); 3353 expected_duration, expected_flags));
3350 } 3354 }
3351 3355
3352 // This test verifies the |initiator| flag when session initiates the call. 3356 // This test verifies the |initial_offerer| flag when session initiates the
3357 // call.
3353 TEST_F(WebRtcSessionTest, TestInitiatorFlagAsOriginator) { 3358 TEST_F(WebRtcSessionTest, TestInitiatorFlagAsOriginator) {
3354 Init(); 3359 Init();
3355 EXPECT_FALSE(session_->initiator()); 3360 EXPECT_FALSE(session_->initial_offerer());
3356 SessionDescriptionInterface* offer = CreateOffer(); 3361 SessionDescriptionInterface* offer = CreateOffer();
3357 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); 3362 SessionDescriptionInterface* answer = CreateRemoteAnswer(offer);
3358 SetLocalDescriptionWithoutError(offer); 3363 SetLocalDescriptionWithoutError(offer);
3359 EXPECT_TRUE(session_->initiator()); 3364 EXPECT_TRUE(session_->initial_offerer());
3360 SetRemoteDescriptionWithoutError(answer); 3365 SetRemoteDescriptionWithoutError(answer);
3361 EXPECT_TRUE(session_->initiator()); 3366 EXPECT_TRUE(session_->initial_offerer());
3362 } 3367 }
3363 3368
3364 // This test verifies the |initiator| flag when session receives the call. 3369 // This test verifies the |initial_offerer| flag when session receives the call.
3365 TEST_F(WebRtcSessionTest, TestInitiatorFlagAsReceiver) { 3370 TEST_F(WebRtcSessionTest, TestInitiatorFlagAsReceiver) {
3366 Init(); 3371 Init();
3367 EXPECT_FALSE(session_->initiator()); 3372 EXPECT_FALSE(session_->initial_offerer());
3368 SessionDescriptionInterface* offer = CreateRemoteOffer(); 3373 SessionDescriptionInterface* offer = CreateRemoteOffer();
3369 SetRemoteDescriptionWithoutError(offer); 3374 SetRemoteDescriptionWithoutError(offer);
3370 SessionDescriptionInterface* answer = CreateAnswer(NULL); 3375 SessionDescriptionInterface* answer = CreateAnswer(NULL);
3371 3376
3372 EXPECT_FALSE(session_->initiator()); 3377 EXPECT_FALSE(session_->initial_offerer());
3373 SetLocalDescriptionWithoutError(answer); 3378 SetLocalDescriptionWithoutError(answer);
3374 EXPECT_FALSE(session_->initiator()); 3379 EXPECT_FALSE(session_->initial_offerer());
3375 } 3380 }
3376 3381
3377 // Verifing local offer and remote answer have matching m-lines as per RFC 3264. 3382 // Verifing local offer and remote answer have matching m-lines as per RFC 3264.
3378 TEST_F(WebRtcSessionTest, TestIncorrectMLinesInRemoteAnswer) { 3383 TEST_F(WebRtcSessionTest, TestIncorrectMLinesInRemoteAnswer) {
3379 Init(); 3384 Init();
3380 SendAudioVideoStream1(); 3385 SendAudioVideoStream1();
3381 SessionDescriptionInterface* offer = CreateOffer(); 3386 SessionDescriptionInterface* offer = CreateOffer();
3382 SetLocalDescriptionWithoutError(offer); 3387 SetLocalDescriptionWithoutError(offer);
3383 rtc::scoped_ptr<SessionDescriptionInterface> answer( 3388 rtc::scoped_ptr<SessionDescriptionInterface> answer(
3384 CreateRemoteAnswer(session_->local_description())); 3389 CreateRemoteAnswer(session_->local_description()));
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
3576 Init(); 3581 Init();
3577 SendAudioVideoStream1(); 3582 SendAudioVideoStream1();
3578 SessionDescriptionInterface* offer = CreateOffer(); 3583 SessionDescriptionInterface* offer = CreateOffer();
3579 const std::string session_id_orig = offer->session_id(); 3584 const std::string session_id_orig = offer->session_id();
3580 const std::string session_version_orig = offer->session_version(); 3585 const std::string session_version_orig = offer->session_version();
3581 SetLocalDescriptionWithoutError(offer); 3586 SetLocalDescriptionWithoutError(offer);
3582 3587
3583 video_channel_ = media_engine_->GetVideoChannel(0); 3588 video_channel_ = media_engine_->GetVideoChannel(0);
3584 video_channel_->set_fail_set_send_codecs(true); 3589 video_channel_->set_fail_set_send_codecs(true);
3585 3590
3586 SendAudioVideoStream2();
3587 SessionDescriptionInterface* answer = 3591 SessionDescriptionInterface* answer =
3588 CreateRemoteAnswer(session_->local_description()); 3592 CreateRemoteAnswer(session_->local_description());
3589 SetRemoteDescriptionAnswerExpectError("ERROR_CONTENT", answer); 3593 SetRemoteDescriptionAnswerExpectError("ERROR_CONTENT", answer);
3594
3595 // Test that after a content error, setting any description will
3596 // result in an error.
3597 video_channel_->set_fail_set_send_codecs(false);
3598 answer = CreateRemoteAnswer(session_->local_description());
3599 SetRemoteDescriptionExpectError("", "ERROR_CONTENT", answer);
3600 offer = CreateRemoteOffer();
3601 SetLocalDescriptionExpectError("", "ERROR_CONTENT", offer);
3590 } 3602 }
3591 3603
3592 // Runs the loopback call test with BUNDLE and STUN disabled. 3604 // Runs the loopback call test with BUNDLE and STUN disabled.
3593 TEST_F(WebRtcSessionTest, TestIceStatesBasic) { 3605 TEST_F(WebRtcSessionTest, TestIceStatesBasic) {
3594 // Lets try with only UDP ports. 3606 // Lets try with only UDP ports.
3595 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP | 3607 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
3596 cricket::PORTALLOCATOR_DISABLE_STUN | 3608 cricket::PORTALLOCATOR_DISABLE_STUN |
3597 cricket::PORTALLOCATOR_DISABLE_RELAY); 3609 cricket::PORTALLOCATOR_DISABLE_RELAY);
3598 TestLoopbackCall(); 3610 TestLoopbackCall();
3599 } 3611 }
(...skipping 13 matching lines...) Expand all
3613 TestLoopbackCall(config); 3625 TestLoopbackCall(config);
3614 } 3626 }
3615 3627
3616 // Runs the loopback call test with BUNDLE and STUN enabled. 3628 // Runs the loopback call test with BUNDLE and STUN enabled.
3617 TEST_F(WebRtcSessionTest, TestIceStatesBundle) { 3629 TEST_F(WebRtcSessionTest, TestIceStatesBundle) {
3618 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP | 3630 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
3619 cricket::PORTALLOCATOR_DISABLE_RELAY); 3631 cricket::PORTALLOCATOR_DISABLE_RELAY);
3620 TestLoopbackCall(); 3632 TestLoopbackCall();
3621 } 3633 }
3622 3634
3623 TEST_F(WebRtcSessionTest, SetSdpFailedOnSessionError) {
3624 Init();
3625 cricket::MediaSessionOptions options;
3626 options.recv_video = true;
3627
3628 cricket::BaseSession::Error error_code = cricket::BaseSession::ERROR_CONTENT;
3629 std::string error_code_str = "ERROR_CONTENT";
3630 std::string error_desc = "Fake session error description.";
3631 session_->SetError(error_code, error_desc);
3632
3633 SessionDescriptionInterface* offer = CreateRemoteOffer(options);
3634 SessionDescriptionInterface* answer =
3635 CreateRemoteAnswer(offer, options);
3636
3637 std::string action;
3638 std::ostringstream session_error_msg;
3639 session_error_msg << kSessionError << error_code_str << ". ";
3640 session_error_msg << kSessionErrorDesc << error_desc << ".";
3641 SetRemoteDescriptionExpectError(action, session_error_msg.str(), offer);
3642 SetLocalDescriptionExpectError(action, session_error_msg.str(), answer);
3643 }
3644
3645 TEST_F(WebRtcSessionTest, TestRtpDataChannel) { 3635 TEST_F(WebRtcSessionTest, TestRtpDataChannel) {
3646 constraints_.reset(new FakeConstraints()); 3636 constraints_.reset(new FakeConstraints());
3647 constraints_->AddOptional( 3637 constraints_->AddOptional(
3648 webrtc::MediaConstraintsInterface::kEnableRtpDataChannels, true); 3638 webrtc::MediaConstraintsInterface::kEnableRtpDataChannels, true);
3649 Init(); 3639 Init();
3650 3640
3651 SetLocalDescriptionWithDataChannel(); 3641 SetLocalDescriptionWithDataChannel();
3652 EXPECT_EQ(cricket::DCT_RTP, data_engine_->last_channel_type()); 3642 EXPECT_EQ(cricket::DCT_RTP, data_engine_->last_channel_type());
3653 } 3643 }
3654 3644
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
4165 } 4155 }
4166 4156
4167 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test 4157 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test
4168 // currently fails because upon disconnection and reconnection OnIceComplete is 4158 // currently fails because upon disconnection and reconnection OnIceComplete is
4169 // called more than once without returning to IceGatheringGathering. 4159 // called more than once without returning to IceGatheringGathering.
4170 4160
4171 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, 4161 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests,
4172 WebRtcSessionTest, 4162 WebRtcSessionTest,
4173 testing::Values(ALREADY_GENERATED, 4163 testing::Values(ALREADY_GENERATED,
4174 DTLS_IDENTITY_STORE)); 4164 DTLS_IDENTITY_STORE));
OLDNEW
« no previous file with comments | « talk/app/webrtc/webrtcsession.cc ('k') | talk/app/webrtc/webrtcsessiondescriptionfactory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698