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

Unified Diff: ppapi/tests/test_tcp_server_socket_private.cc

Issue 9568007: Added CPP wrapper for PPB_TCPServerSocket_Private. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: TCPSocketPrivate constructor from PP_Resource marked as 'explicit', deleted unused inclusions. Created 8 years, 10 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
Index: ppapi/tests/test_tcp_server_socket_private.cc
diff --git a/ppapi/tests/test_tcp_server_socket_private.cc b/ppapi/tests/test_tcp_server_socket_private.cc
index 47edda972cdd2986e46d8a9c56c7a94524f8bcf8..6f4a05d0e80295ce96790783bb00b7ea61b16c18 100644
--- a/ppapi/tests/test_tcp_server_socket_private.cc
+++ b/ppapi/tests/test_tcp_server_socket_private.cc
@@ -4,12 +4,11 @@
#include "ppapi/tests/test_tcp_server_socket_private.h"
-#include <cstddef>
-#include <cstring>
#include <vector>
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/private/net_address_private.h"
+#include "ppapi/cpp/private/tcp_server_socket_private.h"
#include "ppapi/cpp/private/tcp_socket_private.h"
#include "ppapi/tests/test_utils.h"
#include "ppapi/tests/testing_instance.h"
@@ -19,6 +18,7 @@
return (error_message);
using pp::NetAddressPrivate;
+using pp::TCPServerSocketPrivate;
using pp::TCPSocketPrivate;
namespace {
@@ -31,35 +31,17 @@ const uint16_t kPortScanTo = 4096;
REGISTER_TEST_CASE(TCPServerSocketPrivate);
TestTCPServerSocketPrivate::TestTCPServerSocketPrivate(
- TestingInstance* instance)
- : TestCase(instance),
- core_interface_(NULL),
- tcp_server_socket_private_interface_(NULL),
- tcp_socket_private_interface_(NULL),
- port_(0) {
+ TestingInstance* instance) : TestCase(instance) {
}
bool TestTCPServerSocketPrivate::Init() {
- core_interface_ = static_cast<const PPB_Core*>(
- pp::Module::Get()->GetBrowserInterface(PPB_CORE_INTERFACE));
- if (!core_interface_)
- instance_->AppendError("PPB_Core interface not available");
- tcp_server_socket_private_interface_ =
- static_cast<const PPB_TCPServerSocket_Private*>(
- pp::Module::Get()->GetBrowserInterface(
- PPB_TCPSERVERSOCKET_PRIVATE_INTERFACE));
- if (!tcp_server_socket_private_interface_) {
+ bool tcp_server_socket_private_is_available =
+ TCPServerSocketPrivate::IsAvailable();
+ if (!tcp_server_socket_private_is_available) {
instance_->AppendError(
"PPB_TCPServerSocket_Private interface not available");
}
- tcp_socket_private_interface_ =
- static_cast<const PPB_TCPSocket_Private*>(
- pp::Module::Get()->GetBrowserInterface(
- PPB_TCPSOCKET_PRIVATE_INTERFACE));
- if (!tcp_socket_private_interface_)
- instance_->AppendError("PPB_TCPSocket_Private interface not available");
-
bool tcp_socket_private_is_available = TCPSocketPrivate::IsAvailable();
if (!tcp_socket_private_is_available)
instance_->AppendError("PPB_TCPSocket_Private interface not available");
@@ -68,136 +50,96 @@ bool TestTCPServerSocketPrivate::Init() {
if (!net_address_private_is_available)
instance_->AppendError("PPB_NetAddress_Private interface not available");
- bool init_host_port = GetLocalHostPort(
- instance_->pp_instance(), &host_, &port_);
- if (!init_host_port)
- instance_->AppendError("Can't init host and port");
-
- return core_interface_ &&
- tcp_server_socket_private_interface_ &&
+ return tcp_server_socket_private_is_available &&
tcp_socket_private_is_available &&
net_address_private_is_available &&
- init_host_port &&
CheckTestingInterface();
}
void TestTCPServerSocketPrivate::RunTests(const std::string& filter) {
- RUN_TEST_FORCEASYNC_AND_NOT(Create, filter);
RUN_TEST_FORCEASYNC_AND_NOT(Listen, filter);
RUN_TEST_FORCEASYNC_AND_NOT(Backlog, filter);
}
-std::string TestTCPServerSocketPrivate::GetLocalAddress(
- PP_NetAddress_Private* address) {
- TCPSocketPrivate socket(instance_);
-
- TestCompletionCallback callback(instance_->pp_instance(), force_async_);
- int32_t rv = socket.Connect(host_.c_str(), port_, callback);
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
- return ReportError("PPB_TCPSocket_Private::Connect force_async", rv);
- if (rv == PP_OK_COMPLETIONPENDING)
- rv = callback.WaitForResult();
- if (rv != PP_OK)
- return ReportError("PPB_TCPSocket_Private::Connect", rv);
-
- if (!socket.GetLocalAddress(address))
- return ReportError("PPB_TCPSocket_Private::GetLocalAddress", 0);
- socket.Disconnect();
- PASS();
-}
-
-std::string TestTCPServerSocketPrivate::SyncRead(PP_Resource socket,
+std::string TestTCPServerSocketPrivate::SyncRead(TCPSocketPrivate* socket,
char* buffer,
- int32_t num_bytes) {
- TestCompletionCallback callback(instance_->pp_instance(), force_async_);
-
- int32_t rv = tcp_socket_private_interface_->Read(
- socket, buffer, num_bytes,
- static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
-
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
- return ReportError("PPB_TCPSocket_Private::Read force_async", rv);
- if (rv == PP_OK_COMPLETIONPENDING)
- rv = callback.WaitForResult();
-
- if (num_bytes != rv)
- return ReportError("PPB_TCPSocket_Private::Read", rv);
-
+ size_t num_bytes) {
+ while (num_bytes > 0) {
+ TestCompletionCallback callback(instance_->pp_instance(), force_async_);
+ int32_t rv = socket->Read(buffer, num_bytes, callback);
+ if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
+ return ReportError("PPB_TCPSocket_Private::Read force_async", rv);
+ if (rv == PP_OK_COMPLETIONPENDING)
+ rv = callback.WaitForResult();
+ if (rv < 0)
+ return ReportError("PPB_TCPSocket_Private::Read", rv);
+ buffer += rv;
+ num_bytes -= rv;
+ }
PASS();
}
-std::string TestTCPServerSocketPrivate::SyncWrite(PP_Resource socket,
+std::string TestTCPServerSocketPrivate::SyncWrite(TCPSocketPrivate* socket,
const char* buffer,
- int32_t num_bytes) {
- TestCompletionCallback callback(instance_->pp_instance(), force_async_);
- int32_t rv = tcp_socket_private_interface_->Write(
- socket, buffer, num_bytes,
- static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
-
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
- return ReportError("PPB_TCPSocket_Private::Write force_async", rv);
- if (rv == PP_OK_COMPLETIONPENDING)
- rv = callback.WaitForResult();
- if (num_bytes != rv)
- return ReportError("PPB_TCPSocket_Private::Write", rv);
-
+ size_t num_bytes) {
+ while (num_bytes > 0) {
+ TestCompletionCallback callback(instance_->pp_instance(), force_async_);
+ int32_t rv = socket->Write(buffer, num_bytes, callback);
+ if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
+ return ReportError("PPB_TCPSocket_Private::Write force_async", rv);
+ if (rv == PP_OK_COMPLETIONPENDING)
+ rv = callback.WaitForResult();
+ if (rv < 0)
+ return ReportError("PPB_TCPSocket_Private::Write", rv);
+ buffer += rv;
+ num_bytes -= rv;
+ }
PASS();
}
-std::string TestTCPServerSocketPrivate::SyncConnect(PP_Resource socket,
- const char* host,
- uint16_t port) {
+std::string TestTCPServerSocketPrivate::SyncConnect(
+ TCPSocketPrivate* socket,
+ PP_NetAddress_Private* address) {
TestCompletionCallback callback(instance_->pp_instance(), force_async_);
- int32_t rv = tcp_socket_private_interface_->Connect(
- socket,
- host_.c_str(),
- port,
- static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
+ int32_t rv = socket->ConnectWithNetAddress(address, callback);
if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
return ReportError("PPB_TCPSocket_Private::Connect force_async", rv);
if (rv == PP_OK_COMPLETIONPENDING)
rv = callback.WaitForResult();
if (rv != PP_OK)
return ReportError("PPB_TCPSocket_Private::Connect", rv);
-
PASS();
}
-void TestTCPServerSocketPrivate::ForceConnect(PP_Resource socket,
- const char* host,
- uint16_t port) {
+void TestTCPServerSocketPrivate::ForceConnect(TCPSocketPrivate* socket,
+ PP_NetAddress_Private* address) {
std::string error_message;
do {
- error_message = SyncConnect(socket, host, port);
+ error_message = SyncConnect(socket, address);
} while (!error_message.empty());
}
-std::string TestTCPServerSocketPrivate::SyncListen(PP_Resource socket,
- uint16_t* port,
- int32_t backlog) {
- PP_NetAddress_Private base_address, local_address;
- std::string error_message = GetLocalAddress(&base_address);
- ASSERT_SUCCESS(error_message);
+std::string TestTCPServerSocketPrivate::SyncListen(
+ TCPServerSocketPrivate* socket,
+ PP_NetAddress_Private* address,
+ int32_t backlog) {
+ PP_NetAddress_Private base_address;
+ NetAddressPrivate::GetAnyAddress(false, &base_address);
// TODO (ygorshenin): find more efficient way to select available
// ports.
bool is_free_port_found = false;
- for (uint16_t p = kPortScanFrom; p < kPortScanTo; ++p) {
- if (!NetAddressPrivate::ReplacePort(base_address, p, &local_address))
+ for (uint16_t port = kPortScanFrom; port < kPortScanTo; ++port) {
+ if (!NetAddressPrivate::ReplacePort(base_address, port, address))
return ReportError("PPB_NetAddress_Private::ReplacePort", 0);
TestCompletionCallback callback(instance_->pp_instance(), force_async_);
- int32_t rv = tcp_server_socket_private_interface_->Listen(
- socket,
- &local_address,
- backlog,
- static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
+ int32_t rv = socket->Listen(address, backlog, callback);
if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
return ReportError("PPB_TCPServerSocket_Private::Listen force_async", rv);
if (rv == PP_OK_COMPLETIONPENDING)
rv = callback.WaitForResult();
if (rv == PP_OK) {
- *port = p;
is_free_port_found = true;
break;
}
@@ -208,125 +150,62 @@ std::string TestTCPServerSocketPrivate::SyncListen(PP_Resource socket,
PASS();
}
-bool TestTCPServerSocketPrivate::IsSocketsConnected(
- PP_Resource lhs,
- PP_Resource rhs) {
- PP_NetAddress_Private lhs_local_addr, lhs_remote_addr;
-
- if (!tcp_socket_private_interface_->GetLocalAddress(lhs, &lhs_local_addr))
- return false;
- if (!tcp_socket_private_interface_->GetRemoteAddress(lhs, &lhs_remote_addr))
- return false;
-
- PP_NetAddress_Private rhs_local_addr, rhs_remote_addr;
- if (!tcp_socket_private_interface_->GetLocalAddress(rhs, &rhs_local_addr))
- return false;
- if (!tcp_socket_private_interface_->GetRemoteAddress(rhs, &rhs_remote_addr))
- return false;
-
- return NetAddressPrivate::AreEqual(lhs_local_addr, rhs_remote_addr) &&
- NetAddressPrivate::AreEqual(lhs_remote_addr, rhs_local_addr);
-}
-
-std::string TestTCPServerSocketPrivate::SendMessage(PP_Resource dst,
- PP_Resource src,
- const char* message) {
- const size_t message_size = strlen(message);
-
- std::string error_message = SyncWrite(src, message, message_size);
- ASSERT_SUCCESS(error_message);
-
- std::vector<char> message_buffer(message_size);
- error_message = SyncRead(dst, &message_buffer[0], message_size);
- ASSERT_SUCCESS(error_message);
- ASSERT_EQ(0, strncmp(message, &message_buffer[0], message_size));
- PASS();
-}
-
-std::string TestTCPServerSocketPrivate::TestConnectedSockets(PP_Resource lhs,
- PP_Resource rhs) {
- static const char* const kMessage = "simple message";
- std::string error_message = SendMessage(lhs, rhs, kMessage);
- ASSERT_SUCCESS(error_message);
- error_message = SendMessage(rhs, lhs, kMessage);
- ASSERT_SUCCESS(error_message);
- PASS();
-}
-
-std::string TestTCPServerSocketPrivate::TestCreate() {
- PP_Resource server_socket;
-
- server_socket = tcp_server_socket_private_interface_->Create(0);
- ASSERT_EQ(0, server_socket);
- core_interface_->ReleaseResource(server_socket);
-
- server_socket =
- tcp_server_socket_private_interface_->Create(instance_->pp_instance());
- ASSERT_TRUE(server_socket != 0);
- ASSERT_TRUE(tcp_server_socket_private_interface_->IsTCPServerSocket(
- server_socket));
- core_interface_->ReleaseResource(server_socket);
- PASS();
-}
-
std::string TestTCPServerSocketPrivate::TestListen() {
static const int kBacklog = 2;
- PP_Resource server_socket =
- tcp_server_socket_private_interface_->Create(instance_->pp_instance());
- ASSERT_TRUE(server_socket != 0);
+ TCPServerSocketPrivate server_socket(instance_);
- uint16_t port;
- std::string error_message = SyncListen(server_socket, &port, kBacklog);
+ PP_NetAddress_Private address;
+ std::string error_message = SyncListen(&server_socket, &address, kBacklog);
ASSERT_SUCCESS(error_message);
TestCompletionCallback accept_callback(instance_->pp_instance(),
force_async_);
- PP_Resource accepted_socket;
- int32_t accept_rv = tcp_server_socket_private_interface_->Accept(
- server_socket,
- &accepted_socket,
- static_cast<pp::CompletionCallback>(
- accept_callback).pp_completion_callback());
+ PP_Resource resource;
+ int32_t accept_rv = server_socket.Accept(&resource, accept_callback);
TCPSocketPrivate client_socket(instance_);
+ ForceConnect(&client_socket, &address);
- ForceConnect(client_socket.pp_resource(), host_.c_str(), port);
-
- if (force_async_ && accept_rv != PP_OK_COMPLETIONPENDING)
+ if (force_async_ && accept_rv != PP_OK_COMPLETIONPENDING) {
return ReportError("PPB_TCPServerSocket_Private::Accept force_async",
accept_rv);
+ }
if (accept_rv == PP_OK_COMPLETIONPENDING)
accept_rv = accept_callback.WaitForResult();
if (accept_rv != PP_OK)
return ReportError("PPB_TCPServerSocket_Private::Accept", accept_rv);
- ASSERT_TRUE(accepted_socket != 0);
- ASSERT_TRUE(tcp_socket_private_interface_->IsTCPSocket(accepted_socket));
+ ASSERT_TRUE(resource != 0);
+ TCPSocketPrivate accepted_socket(resource);
+
+ const char kSentByte = 'a';
+ error_message = SyncWrite(&client_socket, &kSentByte, sizeof(kSentByte));
+ ASSERT_SUCCESS(error_message);
- ASSERT_TRUE(IsSocketsConnected(client_socket.pp_resource(), accepted_socket));
- error_message = TestConnectedSockets(client_socket.pp_resource(),
- accepted_socket);
+ char received_byte;
+ error_message = SyncRead(&accepted_socket,
+ &received_byte,
+ sizeof(received_byte));
ASSERT_SUCCESS(error_message);
+ ASSERT_EQ(kSentByte, received_byte);
- tcp_socket_private_interface_->Disconnect(accepted_socket);
+ accepted_socket.Disconnect();
client_socket.Disconnect();
- tcp_server_socket_private_interface_->StopListening(server_socket);
+ server_socket.StopListening();
- core_interface_->ReleaseResource(accepted_socket);
- core_interface_->ReleaseResource(server_socket);
PASS();
}
std::string TestTCPServerSocketPrivate::TestBacklog() {
static const size_t kBacklog = 5;
- PP_Resource server_socket =
- tcp_server_socket_private_interface_->Create(instance_->pp_instance());
- ASSERT_TRUE(server_socket != 0);
+ TCPServerSocketPrivate server_socket(instance_);
- uint16_t port;
- std::string error_message = SyncListen(server_socket, &port, 2 * kBacklog);
+ PP_NetAddress_Private address;
+ std::string error_message = SyncListen(&server_socket,
+ &address,
+ 2 * kBacklog);
ASSERT_SUCCESS(error_message);
std::vector<TCPSocketPrivate*> client_sockets(kBacklog);
@@ -336,21 +215,19 @@ std::string TestTCPServerSocketPrivate::TestBacklog() {
client_sockets[i] = new TCPSocketPrivate(instance_);
connect_callbacks[i] = new TestCompletionCallback(instance_->pp_instance(),
force_async_);
- connect_rv[i] = client_sockets[i]->Connect(host_.c_str(),
- port,
- *connect_callbacks[i]);
+ connect_rv[i] = client_sockets[i]->ConnectWithNetAddress(
+ &address,
+ *connect_callbacks[i]);
if (force_async_ && connect_rv[i] != PP_OK_COMPLETIONPENDING)
return ReportError("PPB_TCPSocket_Private::Connect force_async",
connect_rv[i]);
}
- std::vector<PP_Resource> accepted_sockets(kBacklog);
+ std::vector<PP_Resource> resources(kBacklog);
+ std::vector<TCPSocketPrivate*> accepted_sockets(kBacklog);
for (size_t i = 0; i < kBacklog; ++i) {
TestCompletionCallback callback(instance_->pp_instance(), force_async_);
- int32_t rv = tcp_server_socket_private_interface_->Accept(
- server_socket,
- &accepted_sockets[i],
- static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
+ int32_t rv = server_socket.Accept(&resources[i], callback);
if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
return ReportError("PPB_TCPServerSocket_Private::Accept force_async", rv);
if (rv == PP_OK_COMPLETIONPENDING)
@@ -358,9 +235,8 @@ std::string TestTCPServerSocketPrivate::TestBacklog() {
if (rv != PP_OK)
return ReportError("PPB_TCPServerSocket_Private::Accept", rv);
- ASSERT_TRUE(accepted_sockets[i] != 0);
- ASSERT_TRUE(tcp_socket_private_interface_->IsTCPSocket(
- accepted_sockets[i]));
+ ASSERT_TRUE(resources[i] != 0);
+ accepted_sockets[i] = new TCPSocketPrivate(resources[i]);
}
for (size_t i = 0; i < kBacklog; ++i) {
@@ -371,29 +247,29 @@ std::string TestTCPServerSocketPrivate::TestBacklog() {
}
for (size_t i = 0; i < kBacklog; ++i) {
- bool found = false;
- for (size_t j = 0; j < kBacklog && !found; ++j)
- if (IsSocketsConnected(client_sockets[i]->pp_resource(),
- accepted_sockets[j])) {
- TestConnectedSockets(client_sockets[i]->pp_resource(),
- accepted_sockets[j]);
- found = true;
- }
- ASSERT_TRUE(found);
+ const char byte = 'a' + i;
+ error_message = SyncWrite(client_sockets[i], &byte, sizeof(byte));
+ ASSERT_SUCCESS(error_message);
}
+ bool byte_received[kBacklog] = {};
for (size_t i = 0; i < kBacklog; ++i) {
- tcp_socket_private_interface_->Disconnect(accepted_sockets[i]);
- core_interface_->ReleaseResource(accepted_sockets[i]);
+ char byte;
+ error_message = SyncRead(accepted_sockets[i], &byte, sizeof(byte));
+ ASSERT_SUCCESS(error_message);
+ const size_t index = byte - 'a';
+ ASSERT_FALSE(byte_received[index]);
+ byte_received[index] = true;
}
for (size_t i = 0; i < kBacklog; ++i) {
client_sockets[i]->Disconnect();
delete client_sockets[i];
delete connect_callbacks[i];
+ accepted_sockets[i]->Disconnect();
+ delete accepted_sockets[i];
}
- tcp_server_socket_private_interface_->StopListening(server_socket);
- core_interface_->ReleaseResource(server_socket);
+ server_socket.StopListening();
PASS();
}
« ppapi/cpp/private/tcp_server_socket_private.h ('K') | « ppapi/tests/test_tcp_server_socket_private.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698