| Index: webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| diff --git a/webrtc/p2p/base/dtlstransportchannel_unittest.cc b/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| index 10640f99e3c130a73ab1f579a3f053dcaa119e9f..95696e222c500f54cd44b23df3a218b52cf19ad2 100644
|
| --- a/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| +++ b/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| @@ -11,7 +11,7 @@
|
| #include <set>
|
|
|
| #include "webrtc/p2p/base/dtlstransport.h"
|
| -#include "webrtc/p2p/base/fakesession.h"
|
| +#include "webrtc/p2p/base/faketransportcontroller.h"
|
| #include "webrtc/base/common.h"
|
| #include "webrtc/base/dscp.h"
|
| #include "webrtc/base/gunit.h"
|
| @@ -21,7 +21,6 @@
|
| #include "webrtc/base/sslidentity.h"
|
| #include "webrtc/base/sslstreamadapter.h"
|
| #include "webrtc/base/stringutils.h"
|
| -#include "webrtc/base/thread.h"
|
|
|
| #define MAYBE_SKIP_TEST(feature) \
|
| if (!(rtc::SSLStreamAdapter::feature())) { \
|
| @@ -45,19 +44,14 @@ enum Flags { NF_REOFFER = 0x1, NF_EXPECT_FAILURE = 0x2 };
|
|
|
| class DtlsTestClient : public sigslot::has_slots<> {
|
| public:
|
| - DtlsTestClient(const std::string& name,
|
| - rtc::Thread* signaling_thread,
|
| - rtc::Thread* worker_thread) :
|
| - name_(name),
|
| - signaling_thread_(signaling_thread),
|
| - worker_thread_(worker_thread),
|
| - packet_size_(0),
|
| - use_dtls_srtp_(false),
|
| - ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10),
|
| - negotiated_dtls_(false),
|
| - received_dtls_client_hello_(false),
|
| - received_dtls_server_hello_(false) {
|
| - }
|
| + DtlsTestClient(const std::string& name)
|
| + : name_(name),
|
| + packet_size_(0),
|
| + use_dtls_srtp_(false),
|
| + ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10),
|
| + negotiated_dtls_(false),
|
| + received_dtls_client_hello_(false),
|
| + received_dtls_server_hello_(false) {}
|
| void CreateCertificate(rtc::KeyType key_type) {
|
| certificate_ = rtc::RTCCertificate::Create(
|
| rtc::scoped_ptr<rtc::SSLIdentity>(
|
| @@ -71,13 +65,12 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| use_dtls_srtp_ = true;
|
| }
|
| void SetupMaxProtocolVersion(rtc::SSLProtocolVersion version) {
|
| - ASSERT(transport_.get() == NULL);
|
| + ASSERT(!transport_);
|
| ssl_max_version_ = version;
|
| }
|
| void SetupChannels(int count, cricket::IceRole role) {
|
| transport_.reset(new cricket::DtlsTransport<cricket::FakeTransport>(
|
| - signaling_thread_, worker_thread_, "dtls content name", nullptr,
|
| - certificate_));
|
| + "dtls content name", nullptr, certificate_));
|
| transport_->SetAsync(true);
|
| transport_->SetIceRole(role);
|
| transport_->SetIceTiebreaker(
|
| @@ -118,8 +111,8 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| void Negotiate(DtlsTestClient* peer, cricket::ContentAction action,
|
| ConnectionRole local_role, ConnectionRole remote_role,
|
| int flags) {
|
| - Negotiate(certificate_, certificate_ ? peer->certificate_ : nullptr,
|
| - action, local_role, remote_role, flags);
|
| + Negotiate(certificate_, certificate_ ? peer->certificate_ : nullptr, action,
|
| + local_role, remote_role, flags);
|
| }
|
|
|
| // Allow any DTLS configuration to be specified (including invalid ones).
|
| @@ -163,18 +156,18 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| }
|
|
|
| cricket::TransportDescription local_desc(
|
| - std::vector<std::string>(), kIceUfrag1, kIcePwd1,
|
| - cricket::ICEMODE_FULL, local_role,
|
| - // If remote if the offerer and has no DTLS support, answer will be
|
| + std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_FULL,
|
| + local_role,
|
| + // If remote if the offerer and has no DTLS support, answer will be
|
| // without any fingerprint.
|
| - (action == cricket::CA_ANSWER && !remote_cert) ?
|
| - NULL : local_fingerprint.get(),
|
| + (action == cricket::CA_ANSWER && !remote_cert)
|
| + ? nullptr
|
| + : local_fingerprint.get(),
|
| cricket::Candidates());
|
|
|
| cricket::TransportDescription remote_desc(
|
| - std::vector<std::string>(), kIceUfrag1, kIcePwd1,
|
| - cricket::ICEMODE_FULL, remote_role, remote_fingerprint.get(),
|
| - cricket::Candidates());
|
| + std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_FULL,
|
| + remote_role, remote_fingerprint.get(), cricket::Candidates());
|
|
|
| bool expect_success = (flags & NF_EXPECT_FAILURE) ? false : true;
|
| // If |expect_success| is false, expect SRTD or SLTD to fail when
|
| @@ -199,7 +192,9 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| return true;
|
| }
|
|
|
| - bool writable() const { return transport_->writable(); }
|
| + bool all_channels_writable() const {
|
| + return transport_->all_channels_writable();
|
| + }
|
|
|
| void CheckRole(rtc::SSLRole role) {
|
| if (role == rtc::SSL_CLIENT) {
|
| @@ -337,8 +332,8 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| ASSERT_TRUE(VerifyPacket(data, size, &packet_num));
|
| received_.insert(packet_num);
|
| // Only DTLS-SRTP packets should have the bypass flag set.
|
| - int expected_flags = (certificate_ && IsRtpLeadByte(data[0])) ?
|
| - cricket::PF_SRTP_BYPASS : 0;
|
| + int expected_flags =
|
| + (certificate_ && IsRtpLeadByte(data[0])) ? cricket::PF_SRTP_BYPASS : 0;
|
| ASSERT_EQ(expected_flags, flags);
|
| }
|
|
|
| @@ -372,8 +367,6 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
|
|
| private:
|
| std::string name_;
|
| - rtc::Thread* signaling_thread_;
|
| - rtc::Thread* worker_thread_;
|
| rtc::scoped_refptr<rtc::RTCCertificate> certificate_;
|
| rtc::scoped_ptr<cricket::FakeTransport> transport_;
|
| std::vector<cricket::DtlsTransportChannelWrapper*> channels_;
|
| @@ -389,16 +382,13 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
|
|
| class DtlsTransportChannelTest : public testing::Test {
|
| public:
|
| - DtlsTransportChannelTest() :
|
| - client1_("P1", rtc::Thread::Current(),
|
| - rtc::Thread::Current()),
|
| - client2_("P2", rtc::Thread::Current(),
|
| - rtc::Thread::Current()),
|
| - channel_ct_(1),
|
| - use_dtls_(false),
|
| - use_dtls_srtp_(false),
|
| - ssl_expected_version_(rtc::SSL_PROTOCOL_DTLS_10) {
|
| - }
|
| + DtlsTransportChannelTest()
|
| + : client1_("P1"),
|
| + client2_("P2"),
|
| + channel_ct_(1),
|
| + use_dtls_(false),
|
| + use_dtls_srtp_(false),
|
| + ssl_expected_version_(rtc::SSL_PROTOCOL_DTLS_10) {}
|
|
|
| void SetChannelCount(size_t channel_ct) {
|
| channel_ct_ = static_cast<int>(channel_ct);
|
| @@ -440,8 +430,10 @@ class DtlsTransportChannelTest : public testing::Test {
|
| if (!rv)
|
| return false;
|
|
|
| - EXPECT_TRUE_WAIT(client1_.writable() && client2_.writable(), 10000);
|
| - if (!client1_.writable() || !client2_.writable())
|
| + EXPECT_TRUE_WAIT(
|
| + client1_.all_channels_writable() && client2_.all_channels_writable(),
|
| + 10000);
|
| + if (!client1_.all_channels_writable() || !client2_.all_channels_writable())
|
| return false;
|
|
|
| // Check that we used the right roles.
|
| @@ -818,7 +810,9 @@ TEST_F(DtlsTransportChannelTest, TestRenegotiateBeforeConnect) {
|
| cricket::CONNECTIONROLE_ACTIVE, NF_REOFFER);
|
| bool rv = client1_.Connect(&client2_);
|
| EXPECT_TRUE(rv);
|
| - EXPECT_TRUE_WAIT(client1_.writable() && client2_.writable(), 10000);
|
| + EXPECT_TRUE_WAIT(
|
| + client1_.all_channels_writable() && client2_.all_channels_writable(),
|
| + 10000);
|
|
|
| TestTransfer(0, 1000, 100, true);
|
| TestTransfer(1, 1000, 100, true);
|
| @@ -837,8 +831,8 @@ TEST_F(DtlsTransportChannelTest, TestCertificatesBeforeConnect) {
|
|
|
| // After negotiation, each side has a distinct local certificate, but still no
|
| // remote certificate, because connection has not yet occurred.
|
| - ASSERT_TRUE(client1_.transport()->GetCertificate(&certificate1));
|
| - ASSERT_TRUE(client2_.transport()->GetCertificate(&certificate2));
|
| + ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1));
|
| + ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2));
|
| ASSERT_NE(certificate1->ssl_certificate().ToPEMString(),
|
| certificate2->ssl_certificate().ToPEMString());
|
| ASSERT_FALSE(
|
| @@ -861,8 +855,8 @@ TEST_F(DtlsTransportChannelTest, TestCertificatesAfterConnect) {
|
| rtc::scoped_ptr<rtc::SSLCertificate> remote_cert2;
|
|
|
| // After connection, each side has a distinct local certificate.
|
| - ASSERT_TRUE(client1_.transport()->GetCertificate(&certificate1));
|
| - ASSERT_TRUE(client2_.transport()->GetCertificate(&certificate2));
|
| + ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1));
|
| + ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2));
|
| ASSERT_NE(certificate1->ssl_certificate().ToPEMString(),
|
| certificate2->ssl_certificate().ToPEMString());
|
|
|
|
|