Index: webrtc/p2p/base/transport_unittest.cc |
diff --git a/webrtc/p2p/base/transport_unittest.cc b/webrtc/p2p/base/transport_unittest.cc |
index d119e833672ae3fed1d6a6957e98951ff2e14fdc..a79ea52da9b735023b1d23f77d8e4c81d2f59bb6 100644 |
--- a/webrtc/p2p/base/transport_unittest.cc |
+++ b/webrtc/p2p/base/transport_unittest.cc |
@@ -14,7 +14,6 @@ |
#include "webrtc/base/gunit.h" |
#include "webrtc/base/network.h" |
#include "webrtc/p2p/base/faketransportcontroller.h" |
-#include "webrtc/p2p/base/p2ptransport.h" |
using cricket::Transport; |
using cricket::FakeTransport; |
@@ -33,59 +32,40 @@ static const char kIcePwd2[] = "TESTICEPWD00000000000002"; |
class TransportTest : public testing::Test, |
public sigslot::has_slots<> { |
public: |
- TransportTest() |
- : transport_(new FakeTransport("test content name")), channel_(NULL) {} |
- ~TransportTest() { |
- transport_->DestroyAllChannels(); |
- } |
+ TransportTest() : transport_(new Transport("test content name", nullptr)) {} |
bool SetupChannel() { |
- channel_ = CreateChannel(1); |
- return (channel_ != NULL); |
- } |
- FakeTransportChannel* CreateChannel(int component) { |
- return static_cast<FakeTransportChannel*>( |
- transport_->CreateChannel(component)); |
- } |
- void DestroyChannel() { |
- transport_->DestroyChannel(1); |
- channel_ = NULL; |
+ fake_ice_channel_.reset(new FakeTransportChannel(transport_->name(), 1)); |
+ fake_dtls_channel_.reset(new FakeTransportChannel(transport_->name(), 1)); |
+ return transport_->AddChannel(fake_dtls_channel_.get(), |
+ fake_ice_channel_.get(), 1); |
} |
+ void DestroyChannel() { transport_->RemoveChannel(1); } |
protected: |
- std::unique_ptr<FakeTransport> transport_; |
- FakeTransportChannel* channel_; |
+ std::unique_ptr<FakeTransportChannel> fake_dtls_channel_; |
+ std::unique_ptr<FakeTransportChannel> fake_ice_channel_; |
+ std::unique_ptr<Transport> transport_; |
}; |
// This test verifies channels are created with proper ICE |
-// role, tiebreaker and remote ice mode and credentials after offer and |
-// answer negotiations. |
+// ufrag/password after a transport description is applied. |
TEST_F(TransportTest, TestChannelIceParameters) { |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLING); |
- transport_->SetIceTiebreaker(99U); |
cricket::TransportDescription local_desc(kIceUfrag1, kIcePwd1); |
ASSERT_TRUE(transport_->SetLocalTransportDescription(local_desc, |
cricket::CA_OFFER, |
NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
EXPECT_TRUE(SetupChannel()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
- EXPECT_EQ(cricket::ICEMODE_FULL, channel_->remote_ice_mode()); |
- EXPECT_EQ(kIceUfrag1, channel_->ice_ufrag()); |
- EXPECT_EQ(kIcePwd1, channel_->ice_pwd()); |
+ EXPECT_EQ(cricket::ICEMODE_FULL, fake_dtls_channel_->remote_ice_mode()); |
+ EXPECT_EQ(kIceUfrag1, fake_dtls_channel_->ice_ufrag()); |
+ EXPECT_EQ(kIcePwd1, fake_dtls_channel_->ice_pwd()); |
cricket::TransportDescription remote_desc(kIceUfrag1, kIcePwd1); |
ASSERT_TRUE(transport_->SetRemoteTransportDescription(remote_desc, |
cricket::CA_ANSWER, |
NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
- EXPECT_EQ(99U, channel_->IceTiebreaker()); |
- EXPECT_EQ(cricket::ICEMODE_FULL, channel_->remote_ice_mode()); |
- // Changing the transport role from CONTROLLING to CONTROLLED. |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLED); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLED, channel_->GetIceRole()); |
- EXPECT_EQ(cricket::ICEMODE_FULL, channel_->remote_ice_mode()); |
- EXPECT_EQ(kIceUfrag1, channel_->remote_ice_ufrag()); |
- EXPECT_EQ(kIcePwd1, channel_->remote_ice_pwd()); |
+ EXPECT_EQ(cricket::ICEMODE_FULL, fake_dtls_channel_->remote_ice_mode()); |
+ EXPECT_EQ(kIceUfrag1, fake_dtls_channel_->remote_ice_ufrag()); |
+ EXPECT_EQ(kIcePwd1, fake_dtls_channel_->remote_ice_pwd()); |
} |
// Verifies that IceCredentialsChanged returns true when either ufrag or pwd |
@@ -97,133 +77,6 @@ TEST_F(TransportTest, TestIceCredentialsChanged) { |
EXPECT_FALSE(cricket::IceCredentialsChanged("u1", "p1", "u1", "p1")); |
} |
-// This test verifies that the callee's ICE role remains the same when the |
-// callee triggers an ICE restart. |
-// |
-// RFC5245 currently says that the role *should* change on an ICE restart, |
-// but this rule was intended for an ICE restart that occurs when an endpoint |
-// is changing to ICE lite (which we already handle). See discussion here: |
-// https://mailarchive.ietf.org/arch/msg/ice/C0_QRCTNcwtvUF12y28jQicPR10 |
-TEST_F(TransportTest, TestIceControlledToControllingOnIceRestart) { |
- EXPECT_TRUE(SetupChannel()); |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLED); |
- |
- cricket::TransportDescription desc(kIceUfrag1, kIcePwd1); |
- ASSERT_TRUE(transport_->SetRemoteTransportDescription(desc, |
- cricket::CA_OFFER, |
- NULL)); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLED, transport_->ice_role()); |
- |
- cricket::TransportDescription new_local_desc(kIceUfrag2, kIcePwd2); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(new_local_desc, |
- cricket::CA_OFFER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLED, transport_->ice_role()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLED, channel_->GetIceRole()); |
-} |
- |
-// This test verifies that the caller's ICE role remains the same when the |
-// callee triggers an ICE restart. |
-// |
-// RFC5245 currently says that the role *should* change on an ICE restart, |
-// but this rule was intended for an ICE restart that occurs when an endpoint |
-// is changing to ICE lite (which we already handle). See discussion here: |
-// https://mailarchive.ietf.org/arch/msg/ice/C0_QRCTNcwtvUF12y28jQicPR10 |
-TEST_F(TransportTest, TestIceControllingToControlledOnIceRestart) { |
- EXPECT_TRUE(SetupChannel()); |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLING); |
- |
- cricket::TransportDescription desc(kIceUfrag1, kIcePwd1); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(desc, |
- cricket::CA_OFFER, |
- NULL)); |
- ASSERT_TRUE(transport_->SetRemoteTransportDescription(desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- |
- cricket::TransportDescription new_local_desc(kIceUfrag2, kIcePwd2); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(new_local_desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
-} |
- |
-// This test verifies that the caller's ICE role is still controlling after the |
-// callee triggers ICE restart if the callee's ICE mode is LITE. |
-TEST_F(TransportTest, TestIceControllingOnIceRestartIfRemoteIsIceLite) { |
- EXPECT_TRUE(SetupChannel()); |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLING); |
- |
- cricket::TransportDescription desc(kIceUfrag1, kIcePwd1); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(desc, |
- cricket::CA_OFFER, |
- NULL)); |
- |
- cricket::TransportDescription remote_desc( |
- std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_LITE, |
- cricket::CONNECTIONROLE_NONE, NULL); |
- ASSERT_TRUE(transport_->SetRemoteTransportDescription(remote_desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- |
- cricket::TransportDescription new_local_desc(kIceUfrag2, kIcePwd2); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(new_local_desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
-} |
- |
-// Tests channel role is reversed after receiving ice-lite from remote. |
-TEST_F(TransportTest, TestSetRemoteIceLiteInOffer) { |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLED); |
- cricket::TransportDescription remote_desc( |
- std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_LITE, |
- cricket::CONNECTIONROLE_ACTPASS, NULL); |
- ASSERT_TRUE(transport_->SetRemoteTransportDescription(remote_desc, |
- cricket::CA_OFFER, |
- NULL)); |
- cricket::TransportDescription local_desc(kIceUfrag1, kIcePwd1); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(local_desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- EXPECT_TRUE(SetupChannel()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
- EXPECT_EQ(cricket::ICEMODE_LITE, channel_->remote_ice_mode()); |
-} |
- |
-// Tests ice-lite in remote answer. |
-TEST_F(TransportTest, TestSetRemoteIceLiteInAnswer) { |
- transport_->SetIceRole(cricket::ICEROLE_CONTROLLING); |
- cricket::TransportDescription local_desc(kIceUfrag1, kIcePwd1); |
- ASSERT_TRUE(transport_->SetLocalTransportDescription(local_desc, |
- cricket::CA_OFFER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, transport_->ice_role()); |
- EXPECT_TRUE(SetupChannel()); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
- // Channels will be created in ICEFULL_MODE. |
- EXPECT_EQ(cricket::ICEMODE_FULL, channel_->remote_ice_mode()); |
- cricket::TransportDescription remote_desc( |
- std::vector<std::string>(), kIceUfrag1, kIcePwd1, cricket::ICEMODE_LITE, |
- cricket::CONNECTIONROLE_NONE, NULL); |
- ASSERT_TRUE(transport_->SetRemoteTransportDescription(remote_desc, |
- cricket::CA_ANSWER, |
- NULL)); |
- EXPECT_EQ(cricket::ICEROLE_CONTROLLING, channel_->GetIceRole()); |
- // After receiving remote description with ICEMODE_LITE, channel should |
- // have mode set to ICEMODE_LITE. |
- EXPECT_EQ(cricket::ICEMODE_LITE, channel_->remote_ice_mode()); |
-} |
- |
TEST_F(TransportTest, TestGetStats) { |
EXPECT_TRUE(SetupChannel()); |
cricket::TransportStats stats; |