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

Unified Diff: webrtc/base/nat_unittest.cc

Issue 1215713003: Ensuring that UDP TURN servers are always used as STUN servers. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing compiler warning from size_t->int cast Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/base/natserver.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/nat_unittest.cc
diff --git a/webrtc/base/nat_unittest.cc b/webrtc/base/nat_unittest.cc
index 36b93274178de78e92de9c8e9c4114d22e880606..af691e40bdda79ba4b33a7daae5c2869ddba1bad 100644
--- a/webrtc/base/nat_unittest.cc
+++ b/webrtc/base/nat_unittest.cc
@@ -18,6 +18,7 @@
#include "webrtc/base/network.h"
#include "webrtc/base/physicalsocketserver.h"
#include "webrtc/base/testclient.h"
+#include "webrtc/base/asynctcpsocket.h"
#include "webrtc/base/virtualsocketserver.h"
#include "webrtc/test/testsupport/gtest_disable.h"
@@ -36,6 +37,11 @@ TestClient* CreateTestClient(
return new TestClient(socket);
}
+TestClient* CreateTCPTestClient(AsyncSocket* socket) {
+ AsyncTCPSocket* packet_socket = new AsyncTCPSocket(socket, false);
+ return new TestClient(packet_socket);
+}
+
// Tests that when sending from internal_addr to external_addrs through the
// NAT type specified by nat_type, all external addrs receive the sent packet
// and, if exp_same is true, all use the same mapped-address on the NAT.
@@ -48,10 +54,11 @@ void TestSend(
SocketAddress server_addr = internal_addr;
server_addr.SetPort(0); // Auto-select a port
- NATServer* nat = new NATServer(
- nat_type, internal, server_addr, external, external_addrs[0]);
+ NATServer* nat = new NATServer(nat_type, internal, server_addr, server_addr,
+ external, external_addrs[0]);
NATSocketFactory* natsf = new NATSocketFactory(internal,
- nat->internal_address());
+ nat->internal_udp_address(),
+ nat->internal_tcp_address());
TestClient* in = CreateTestClient(natsf, internal_addr);
TestClient* out[4];
@@ -99,10 +106,11 @@ void TestRecv(
SocketAddress server_addr = internal_addr;
server_addr.SetPort(0); // Auto-select a port
- NATServer* nat = new NATServer(
- nat_type, internal, server_addr, external, external_addrs[0]);
+ NATServer* nat = new NATServer(nat_type, internal, server_addr, server_addr,
+ external, external_addrs[0]);
NATSocketFactory* natsf = new NATSocketFactory(internal,
- nat->internal_address());
+ nat->internal_udp_address(),
+ nat->internal_tcp_address());
TestClient* in = CreateTestClient(natsf, internal_addr);
TestClient* out[4];
@@ -295,56 +303,86 @@ TEST(NatTest, TestVirtualIPv6) {
}
}
-// TODO: Finish this test
class NatTcpTest : public testing::Test, public sigslot::has_slots<> {
public:
- NatTcpTest() : connected_(false) {}
- virtual void SetUp() {
- int_vss_ = new TestVirtualSocketServer(new PhysicalSocketServer());
- ext_vss_ = new TestVirtualSocketServer(new PhysicalSocketServer());
- nat_ = new NATServer(NAT_OPEN_CONE, int_vss_, SocketAddress(),
- ext_vss_, SocketAddress());
- natsf_ = new NATSocketFactory(int_vss_, nat_->internal_address());
+ NatTcpTest()
+ : int_addr_("192.168.0.1", 0),
+ ext_addr_("10.0.0.1", 0),
+ connected_(false),
+ int_pss_(new PhysicalSocketServer()),
+ ext_pss_(new PhysicalSocketServer()),
+ int_vss_(new TestVirtualSocketServer(int_pss_)),
+ ext_vss_(new TestVirtualSocketServer(ext_pss_)),
+ int_thread_(new Thread(int_vss_.get())),
+ ext_thread_(new Thread(ext_vss_.get())),
+ nat_(new NATServer(NAT_OPEN_CONE, int_vss_.get(), int_addr_, int_addr_,
+ ext_vss_.get(), ext_addr_)),
+ natsf_(new NATSocketFactory(int_vss_.get(),
+ nat_->internal_udp_address(),
+ nat_->internal_tcp_address())) {
+ int_thread_->Start();
+ ext_thread_->Start();
}
+
void OnConnectEvent(AsyncSocket* socket) {
connected_ = true;
}
+
void OnAcceptEvent(AsyncSocket* socket) {
- accepted_ = server_->Accept(NULL);
+ accepted_.reset(server_->Accept(NULL));
}
+
void OnCloseEvent(AsyncSocket* socket, int error) {
}
+
void ConnectEvents() {
server_->SignalReadEvent.connect(this, &NatTcpTest::OnAcceptEvent);
client_->SignalConnectEvent.connect(this, &NatTcpTest::OnConnectEvent);
}
- TestVirtualSocketServer* int_vss_;
- TestVirtualSocketServer* ext_vss_;
- NATServer* nat_;
- NATSocketFactory* natsf_;
- AsyncSocket* client_;
- AsyncSocket* server_;
- AsyncSocket* accepted_;
+
+ SocketAddress int_addr_;
+ SocketAddress ext_addr_;
bool connected_;
+ PhysicalSocketServer* int_pss_;
+ PhysicalSocketServer* ext_pss_;
+ rtc::scoped_ptr<TestVirtualSocketServer> int_vss_;
+ rtc::scoped_ptr<TestVirtualSocketServer> ext_vss_;
+ rtc::scoped_ptr<Thread> int_thread_;
+ rtc::scoped_ptr<Thread> ext_thread_;
+ rtc::scoped_ptr<NATServer> nat_;
+ rtc::scoped_ptr<NATSocketFactory> natsf_;
+ rtc::scoped_ptr<AsyncSocket> client_;
+ rtc::scoped_ptr<AsyncSocket> server_;
+ rtc::scoped_ptr<AsyncSocket> accepted_;
};
-TEST_F(NatTcpTest, DISABLED_TestConnectOut) {
- server_ = ext_vss_->CreateAsyncSocket(SOCK_STREAM);
- server_->Bind(SocketAddress());
+TEST_F(NatTcpTest, TestConnectOut) {
+ server_.reset(ext_vss_->CreateAsyncSocket(SOCK_STREAM));
+ server_->Bind(ext_addr_);
server_->Listen(5);
- client_ = int_vss_->CreateAsyncSocket(SOCK_STREAM);
- EXPECT_GE(0, client_->Bind(SocketAddress()));
+ client_.reset(natsf_->CreateAsyncSocket(SOCK_STREAM));
+ EXPECT_GE(0, client_->Bind(int_addr_));
EXPECT_GE(0, client_->Connect(server_->GetLocalAddress()));
-
ConnectEvents();
EXPECT_TRUE_WAIT(connected_, 1000);
EXPECT_EQ(client_->GetRemoteAddress(), server_->GetLocalAddress());
- EXPECT_EQ(client_->GetRemoteAddress(), accepted_->GetLocalAddress());
- EXPECT_EQ(client_->GetLocalAddress(), accepted_->GetRemoteAddress());
+ EXPECT_EQ(accepted_->GetRemoteAddress().ipaddr(), ext_addr_.ipaddr());
+
+ rtc::scoped_ptr<rtc::TestClient> in(CreateTCPTestClient(client_.release()));
+ rtc::scoped_ptr<rtc::TestClient> out(
+ CreateTCPTestClient(accepted_.release()));
+
+ const char* buf = "test_packet";
+ size_t len = strlen(buf);
+
+ in->Send(buf, len);
+ SocketAddress trans_addr;
+ EXPECT_TRUE(out->CheckNextPacket(buf, len, &trans_addr));
- client_->Close();
+ out->Send(buf, len);
+ EXPECT_TRUE(in->CheckNextPacket(buf, len, &trans_addr));
}
-//#endif
+// #endif
« no previous file with comments | « no previous file | webrtc/base/natserver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698