Chromium Code Reviews| Index: talk/app/webrtc/webrtcsession_unittest.cc |
| diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc |
| index 06e10b0cbb27c2ad08981f7bd2a5a6ba35d177e2..317862fdff44c588c8fffc616aac230d5df0e76d 100644 |
| --- a/talk/app/webrtc/webrtcsession_unittest.cc |
| +++ b/talk/app/webrtc/webrtcsession_unittest.cc |
| @@ -26,6 +26,7 @@ |
| */ |
| #include "talk/app/webrtc/audiotrack.h" |
| +#include "talk/app/webrtc/dtlscertificate.h" |
| #include "talk/app/webrtc/fakemetricsobserver.h" |
| #include "talk/app/webrtc/jsepicecandidate.h" |
| #include "talk/app/webrtc/jsepsessiondescription.h" |
| @@ -158,6 +159,8 @@ static const char kSdpWithRtx[] = |
| "a=rtpmap:96 rtx/90000\r\n" |
| "a=fmtp:96 apt=0\r\n"; |
| +enum DtlsCertificateGenerationMethod { PRE_GENERATED, DTLS_IDENTITY_STORE }; |
| + |
| // Add some extra |newlines| to the |message| after |line|. |
| static void InjectAfter(const std::string& line, |
| const std::string& newlines, |
| @@ -312,7 +315,8 @@ class FakeAudioRenderer : public cricket::AudioRenderer { |
| cricket::AudioRenderer::Sink* sink_; |
| }; |
| -class WebRtcSessionTest : public testing::Test { |
| +class WebRtcSessionTest |
| + : public testing::TestWithParam<DtlsCertificateGenerationMethod> { |
| protected: |
| // TODO Investigate why ChannelManager crashes, if it's created |
| // after stun_server. |
| @@ -357,8 +361,14 @@ class WebRtcSessionTest : public testing::Test { |
| network_manager_.AddInterface(addr); |
| } |
| + // If |certificate| != null then the certificate is used (DTLS on), otherwise |
| + // |dtls_identity_store| is used (DTLS on) to try to generate a certificate. |
| + // If null then DTLS is off by default, but this could be overwritten by |
| + // RTCConfiguration in which case a certificate is attempted to be generated |
| + // with an unspecified store. |
| void Init( |
| rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store, |
| + const rtc::scoped_refptr<webrtc::DtlsCertificate>& certificate, |
| const PeerConnectionInterface::RTCConfiguration& rtc_configuration) { |
| ASSERT_TRUE(session_.get() == NULL); |
| session_.reset(new WebRtcSessionForTest( |
| @@ -372,44 +382,66 @@ class WebRtcSessionTest : public testing::Test { |
| EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, |
| observer_.ice_gathering_state_); |
| - EXPECT_TRUE(session_->Initialize( |
| - options_, constraints_.get(), dtls_identity_store.Pass(), |
| - rtc_configuration)); |
| + if (!certificate) { |
| + EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), |
| + dtls_identity_store.Pass(), |
| + rtc_configuration)); |
| + } else { |
| + EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), |
| + certificate, rtc_configuration)); |
| + } |
| session_->set_metrics_observer(metrics_observer_); |
| } |
| void Init() { |
| PeerConnectionInterface::RTCConfiguration configuration; |
| - Init(nullptr, configuration); |
| + Init(nullptr, nullptr, configuration); |
| } |
| void InitWithIceTransport( |
| PeerConnectionInterface::IceTransportsType ice_transport_type) { |
| PeerConnectionInterface::RTCConfiguration configuration; |
| configuration.type = ice_transport_type; |
| - Init(nullptr, configuration); |
| + Init(nullptr, nullptr, configuration); |
| } |
| void InitWithBundlePolicy( |
| PeerConnectionInterface::BundlePolicy bundle_policy) { |
| PeerConnectionInterface::RTCConfiguration configuration; |
| configuration.bundle_policy = bundle_policy; |
| - Init(nullptr, configuration); |
| + Init(nullptr, nullptr, configuration); |
| } |
| void InitWithRtcpMuxPolicy( |
| PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) { |
| PeerConnectionInterface::RTCConfiguration configuration; |
| configuration.rtcp_mux_policy = rtcp_mux_policy; |
| - Init(nullptr, configuration); |
| + Init(nullptr, nullptr, configuration); |
| + } |
| + |
| + void InitWithDtlsCertSuccess( |
| + DtlsCertificateGenerationMethod cert_gen_method) { |
| + if (cert_gen_method == PRE_GENERATED) { |
| + PeerConnectionInterface::RTCConfiguration configuration; |
| + Init(nullptr, FakeDtlsIdentityStore::GenerateCertificate(), |
| + configuration); |
| + } else if (cert_gen_method == DTLS_IDENTITY_STORE) { |
| + rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( |
| + new FakeDtlsIdentityStore()); |
| + dtls_identity_store->set_should_fail(false); |
| + PeerConnectionInterface::RTCConfiguration configuration; |
| + Init(dtls_identity_store.Pass(), nullptr, configuration); |
| + } else { |
| + CHECK(false); |
| + } |
| } |
| - void InitWithDtls(bool identity_request_should_fail = false) { |
| + void InitWithDtlsCertGenFailure() { |
| rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( |
| new FakeDtlsIdentityStore()); |
| - dtls_identity_store->set_should_fail(identity_request_should_fail); |
| + dtls_identity_store->set_should_fail(true); |
| PeerConnectionInterface::RTCConfiguration configuration; |
| - Init(dtls_identity_store.Pass(), configuration); |
| + Init(dtls_identity_store.Pass(), nullptr, configuration); |
| } |
| void InitWithDtmfCodec() { |
| @@ -540,8 +572,10 @@ class WebRtcSessionTest : public testing::Test { |
| desc_factory_->set_secure(cricket::SEC_DISABLED); |
| std::string identity_name = "WebRTC" + |
| rtc::ToString(rtc::CreateRandomId()); |
| - identity_.reset(rtc::SSLIdentity::Generate(identity_name)); |
| - tdesc_factory_->set_identity(identity_.get()); |
| + certificate_ = webrtc::DtlsCertificate::Create( |
| + rtc::scoped_ptr<rtc::SSLIdentity>( |
| + rtc::SSLIdentity::Generate(identity_name)).Pass()); |
| + tdesc_factory_->set_certificate(certificate_); |
| tdesc_factory_->set_secure(cricket::SEC_REQUIRED); |
| } |
| @@ -1185,7 +1219,10 @@ class WebRtcSessionTest : public testing::Test { |
| void VerifyMultipleAsyncCreateDescription( |
| bool success, CreateSessionDescriptionRequest::Type type) { |
| - InitWithDtls(!success); |
| + if (success) |
| + InitWithDtlsCertSuccess(DTLS_IDENTITY_STORE); |
| + else |
| + InitWithDtlsCertGenFailure(); |
| SetFactoryDtlsSrtp(); |
| if (type == CreateSessionDescriptionRequest::kAnswer) { |
| cricket::MediaSessionOptions options; |
| @@ -1239,7 +1276,7 @@ class WebRtcSessionTest : public testing::Test { |
| cricket::FakeDeviceManager* device_manager_; |
| rtc::scoped_ptr<cricket::ChannelManager> channel_manager_; |
| rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_; |
| - rtc::scoped_ptr<rtc::SSLIdentity> identity_; |
| + rtc::scoped_refptr<webrtc::DtlsCertificate> certificate_; |
| rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_; |
| rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; |
| rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; |
| @@ -1260,8 +1297,8 @@ class WebRtcSessionTest : public testing::Test { |
| rtc::scoped_refptr<FakeMetricsObserver> metrics_observer_; |
| }; |
| -TEST_F(WebRtcSessionTest, TestInitializeWithDtls) { |
| - InitWithDtls(); |
| +TEST_P(WebRtcSessionTest, TestInitializeWithDtls) { |
| + InitWithDtlsCertSuccess(GetParam()); |
| // SDES is disabled when DTLS is on. |
| EXPECT_EQ(cricket::SEC_DISABLED, session_->SdesPolicy()); |
| } |
| @@ -1568,10 +1605,10 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonSdesAnswerWhenSdesOn) { |
| // Test that we accept an offer with a DTLS fingerprint when DTLS is on |
| // and that we return an answer with a DTLS fingerprint. |
| -TEST_F(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |
| +TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| mediastream_signaling_.SendAudioVideoStream1(); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| cricket::MediaSessionOptions options; |
| options.recv_video = true; |
| @@ -1597,10 +1634,10 @@ TEST_F(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |
| // Test that we set a local offer with a DTLS fingerprint when DTLS is on |
| // and then we accept a remote answer with a DTLS fingerprint successfully. |
| -TEST_F(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { |
| +TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| mediastream_signaling_.SendAudioVideoStream1(); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| // Verify that we get a crypto fingerprint in the answer. |
| @@ -1627,9 +1664,9 @@ TEST_F(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { |
| // Test that if we support DTLS and the other side didn't offer a fingerprint, |
| // we will fail to set the remote description. |
| -TEST_F(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { |
| +TEST_P(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| cricket::MediaSessionOptions options; |
| options.recv_video = true; |
| options.bundle_enabled = true; |
| @@ -1651,9 +1688,9 @@ TEST_F(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { |
| // Test that we return a failure when applying a local answer that doesn't have |
| // a DTLS fingerprint when DTLS is required. |
| -TEST_F(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { |
| +TEST_P(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SessionDescriptionInterface* offer = NULL; |
| SessionDescriptionInterface* answer = NULL; |
| CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer); |
| @@ -1667,11 +1704,11 @@ TEST_F(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { |
| // Test that we return a failure when applying a remote answer that doesn't have |
| // a DTLS fingerprint when DTLS is required. |
| -TEST_F(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { |
| +TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| // Enable both SDES and DTLS, so that offer won't be outright rejected as a |
| // result of using the "UDP/TLS/RTP/SAVPF" profile. |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| session_->SetSdesPolicy(cricket::SEC_ENABLED); |
| SessionDescriptionInterface* offer = CreateOffer(); |
| cricket::MediaSessionOptions options; |
| @@ -1688,10 +1725,10 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { |
| // Test that we create a local offer without SDES or DTLS and accept a remote |
| // answer without SDES or DTLS when encryption is disabled. |
| -TEST_F(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) { |
| +TEST_P(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) { |
| mediastream_signaling_.SendAudioVideoStream1(); |
| options_.disable_encryption = true; |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| // Verify that we get a crypto fingerprint in the answer. |
| SessionDescriptionInterface* offer = CreateOffer(); |
| @@ -1717,9 +1754,9 @@ TEST_F(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) { |
| // Test that we create a local answer without SDES or DTLS and accept a remote |
| // offer without SDES or DTLS when encryption is disabled. |
| -TEST_F(WebRtcSessionTest, TestCreateAnswerReceiveOfferWithoutEncryption) { |
| +TEST_P(WebRtcSessionTest, TestCreateAnswerReceiveOfferWithoutEncryption) { |
| options_.disable_encryption = true; |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| cricket::MediaSessionOptions options; |
| options.recv_video = true; |
| @@ -3469,7 +3506,7 @@ TEST_F(WebRtcSessionTest, TestRtpDataChannel) { |
| EXPECT_EQ(cricket::DCT_RTP, data_engine_->last_channel_type()); |
| } |
| -TEST_F(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { |
| +TEST_P(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| constraints_.reset(new FakeConstraints()); |
| @@ -3477,26 +3514,26 @@ TEST_F(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { |
| webrtc::MediaConstraintsInterface::kEnableRtpDataChannels, true); |
| options_.disable_sctp_data_channels = false; |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetLocalDescriptionWithDataChannel(); |
| EXPECT_EQ(cricket::DCT_RTP, data_engine_->last_channel_type()); |
| } |
| -TEST_F(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) { |
| +TEST_P(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
| EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL); |
| EXPECT_TRUE(offer->description()->GetTransportInfoByName("data") == NULL); |
| } |
| -TEST_F(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { |
| +TEST_P(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| SetFactoryDtlsSrtp(); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| // Create remote offer with SCTP. |
| cricket::MediaSessionOptions options; |
| @@ -3512,40 +3549,40 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { |
| EXPECT_TRUE(answer->description()->GetTransportInfoByName("data") != NULL); |
| } |
| -TEST_F(WebRtcSessionTest, TestSctpDataChannelWithoutDtls) { |
| +TEST_P(WebRtcSessionTest, TestSctpDataChannelWithoutDtls) { |
| constraints_.reset(new FakeConstraints()); |
| constraints_->AddOptional( |
| webrtc::MediaConstraintsInterface::kEnableDtlsSrtp, false); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetLocalDescriptionWithDataChannel(); |
| EXPECT_EQ(cricket::DCT_NONE, data_engine_->last_channel_type()); |
| } |
| -TEST_F(WebRtcSessionTest, TestSctpDataChannelWithDtls) { |
| +TEST_P(WebRtcSessionTest, TestSctpDataChannelWithDtls) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetLocalDescriptionWithDataChannel(); |
| EXPECT_EQ(cricket::DCT_SCTP, data_engine_->last_channel_type()); |
| } |
| -TEST_F(WebRtcSessionTest, TestDisableSctpDataChannels) { |
| +TEST_P(WebRtcSessionTest, TestDisableSctpDataChannels) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| options_.disable_sctp_data_channels = true; |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetLocalDescriptionWithDataChannel(); |
| EXPECT_EQ(cricket::DCT_NONE, data_engine_->last_channel_type()); |
| } |
| -TEST_F(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
| +TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| const int new_send_port = 9998; |
| const int new_recv_port = 7775; |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| // By default, don't actually add the codecs to desc_factory_; they don't |
| @@ -3594,13 +3631,26 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
| EXPECT_EQ(new_recv_port, portnum); |
| } |
| +// Verifies that if a certificate is provided it is the one that will be used. |
| +TEST_F(WebRtcSessionTest, TestUsesProvidedCertificate) { |
| + rtc::scoped_refptr<webrtc::DtlsCertificate> certificate = |
| + FakeDtlsIdentityStore::GenerateCertificate(); |
| + |
| + PeerConnectionInterface::RTCConfiguration configuration; |
| + Init(nullptr, certificate, configuration); |
| + EXPECT_TRUE_WAIT(!session_->IsWaitingForCertificate(), 1000); |
| + |
| + EXPECT_EQ(session_->certificate(), certificate); |
| +} |
| + |
| // Verifies that CreateOffer succeeds when CreateOffer is called before async |
| -// identity generation is finished. |
| -TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |
| +// identity generation is finished (even if a certificate is provided this is |
| +// an async op). |
| +TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| - EXPECT_TRUE(session_->waiting_for_identity()); |
| + EXPECT_TRUE(session_->IsWaitingForCertificate()); |
| mediastream_signaling_.SendAudioVideoStream1(); |
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
| @@ -3610,10 +3660,11 @@ TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |
| } |
| // Verifies that CreateAnswer succeeds when CreateOffer is called before async |
| -// identity generation is finished. |
| -TEST_F(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { |
| +// identity generation is finished (even if a certificate is provided this is |
| +// an async op). |
| +TEST_P(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| cricket::MediaSessionOptions options; |
| @@ -3630,12 +3681,13 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { |
| } |
| // Verifies that CreateOffer succeeds when CreateOffer is called after async |
| -// identity generation is finished. |
| -TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { |
| +// identity generation is finished (even if a certificate is provided this is |
| +// an async op). |
| +TEST_P(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| - EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000); |
| + EXPECT_TRUE_WAIT(!session_->IsWaitingForCertificate(), 1000); |
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
| EXPECT_TRUE(offer != NULL); |
| @@ -3645,9 +3697,9 @@ TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { |
| // identity generation fails. |
| TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(true); |
| + InitWithDtlsCertGenFailure(); |
| - EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000); |
| + EXPECT_TRUE_WAIT(!session_->IsWaitingForCertificate(), 1000); |
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
| EXPECT_TRUE(offer == NULL); |
| @@ -3787,9 +3839,9 @@ TEST_F(WebRtcSessionTest, TestCombinedAudioVideoBweConstraint) { |
| // Tests that we can renegotiate new media content with ICE candidates in the |
| // new remote SDP. |
| -TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { |
| +TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| mediastream_signaling_.UseOptionsAudioOnly(); |
| @@ -3817,9 +3869,9 @@ TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { |
| // Tests that we can renegotiate new media content with ICE candidates separated |
| // from the remote SDP. |
| -TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { |
| +TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { |
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
| - InitWithDtls(); |
| + InitWithDtlsCertSuccess(GetParam()); |
| SetFactoryDtlsSrtp(); |
| mediastream_signaling_.UseOptionsAudioOnly(); |
| @@ -3933,11 +3985,6 @@ TEST_F(WebRtcSessionTest, CreateOffersAndShutdown) { |
| session_.reset(); |
| - // Make sure we process pending messages on the current (signaling) thread |
| - // before checking we we got our callbacks. Quit() will do this and then |
| - // immediately exit. We won't need the queue after this point anyway. |
| - rtc::Thread::Current()->Quit(); |
| - |
|
hbos
2015/08/18 08:56:35
Two things wrong with this, which is why I removed
|
| for (auto& o : observers) { |
| // We expect to have received a notification now even if the session was |
| // terminated. The offer creation may or may not have succeeded, but we |
| @@ -3950,3 +3997,7 @@ TEST_F(WebRtcSessionTest, CreateOffersAndShutdown) { |
| // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test |
| // currently fails because upon disconnection and reconnection OnIceComplete is |
| // called more than once without returning to IceGatheringGathering. |
| + |
| +INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, |
| + WebRtcSessionTest, |
| + testing::Values(PRE_GENERATED, DTLS_IDENTITY_STORE)); |