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

Unified Diff: ppapi/tests/test_transport.cc

Issue 10454058: Remove PPB_Transport_Dev API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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 | « ppapi/tests/test_transport.h ('k') | ppapi/thunk/interfaces_ppb_public_dev.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/tests/test_transport.cc
diff --git a/ppapi/tests/test_transport.cc b/ppapi/tests/test_transport.cc
deleted file mode 100644
index d8bb134029b10c37d683fa464f73eb11df59208e..0000000000000000000000000000000000000000
--- a/ppapi/tests/test_transport.cc
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ppapi/tests/test_transport.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <list>
-#include <map>
-
-#include "ppapi/c/dev/ppb_testing_dev.h"
-#include "ppapi/c/pp_errors.h"
-#include "ppapi/c/pp_macros.h"
-#include "ppapi/cpp/dev/transport_dev.h"
-#include "ppapi/cpp/instance.h"
-#include "ppapi/cpp/module.h"
-#include "ppapi/cpp/var.h"
-#include "ppapi/tests/test_utils.h"
-#include "ppapi/tests/testing_instance.h"
-#include "ppapi/utility/completion_callback_factory.h"
-
-REGISTER_TEST_CASE(Transport);
-
-namespace {
-
-const char kTestChannelName[] = "test";
-const int kReadBufferSize = 65536;
-
-class StreamReader {
- public:
- StreamReader(pp::Transport_Dev* transport,
- int expected_size,
- pp::CompletionCallback done_callback)
- : expected_size_(expected_size),
- done_callback_(done_callback),
- PP_ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)),
- transport_(transport),
- received_size_(0) {
- Read();
- }
-
- const std::list<std::vector<char> >& received() { return received_; }
- std::list<std::string> errors() { return errors_; }
-
- private:
- void Read() {
- while (true) {
- buffer_.resize(kReadBufferSize);
- int result = transport_->Recv(
- &buffer_[0], buffer_.size(),
- callback_factory_.NewOptionalCallback(&StreamReader::OnReadFinished));
- if (result > 0)
- DidFinishRead(result);
- else
- break;
- }
- }
-
- void OnReadFinished(int result) {
- DidFinishRead(result);
- if (result > 0)
- Read();
- }
-
- void DidFinishRead(int result) {
- if (result > 0) {
- if (result > static_cast<int>(buffer_.size())) {
- errors_.push_back(TestCase::MakeFailureMessage(
- __FILE__, __LINE__,
- "Recv() returned value that is bigger than the buffer."));
- }
- buffer_.resize(result);
- received_.push_back(buffer_);
- received_size_ += buffer_.size();
- if (received_size_ >= expected_size_)
- done_callback_.Run(0);
- }
- }
-
- int expected_size_;
- pp::CompletionCallback done_callback_;
- pp::CompletionCallbackFactory<StreamReader> callback_factory_;
- pp::Transport_Dev* transport_;
- std::vector<char> buffer_;
- std::list<std::vector<char> > received_;
- int received_size_;
- std::list<std::string> errors_;
-};
-
-} // namespace
-
-TestTransport::~TestTransport() {
- delete transport1_;
- delete transport2_;
-}
-
-bool TestTransport::Init() {
- transport_interface_ = static_cast<const PPB_Transport_Dev*>(
- pp::Module::Get()->GetBrowserInterface(PPB_TRANSPORT_DEV_INTERFACE));
- return transport_interface_ && CheckTestingInterface();
-}
-
-void TestTransport::RunTests(const std::string& filter) {
- RUN_TEST(Create, filter);
- RUN_TEST_FORCEASYNC_AND_NOT(Connect, filter);
- RUN_TEST(SetProperty, filter);
- RUN_TEST_FORCEASYNC_AND_NOT(SendDataUdp, filter);
- RUN_TEST_FORCEASYNC_AND_NOT(SendDataTcp, filter);
- RUN_TEST_FORCEASYNC_AND_NOT(ConnectAndCloseUdp, filter);
- RUN_TEST_FORCEASYNC_AND_NOT(ConnectAndCloseTcp, filter);
-}
-
-std::string TestTransport::InitTargets(PP_TransportType type) {
- transport1_ = new pp::Transport_Dev(instance_, kTestChannelName, type);
- transport2_ = new pp::Transport_Dev(instance_, kTestChannelName, type);
-
- ASSERT_NE(NULL, transport1_);
- ASSERT_NE(NULL, transport2_);
-
- PASS();
-}
-
-std::string TestTransport::Connect() {
- TestCompletionCallback connect_cb1(instance_->pp_instance());
- TestCompletionCallback connect_cb2(instance_->pp_instance());
- ASSERT_EQ(transport1_->Connect(connect_cb1), PP_OK_COMPLETIONPENDING);
- ASSERT_EQ(transport2_->Connect(connect_cb2), PP_OK_COMPLETIONPENDING);
-
- pp::Var address1;
- pp::Var address2;
- TestCompletionCallback next_address_cb1(instance_->pp_instance());
- TestCompletionCallback next_address_cb2(instance_->pp_instance());
- ASSERT_EQ(transport1_->GetNextAddress(&address1, next_address_cb1),
- PP_OK_COMPLETIONPENDING);
- ASSERT_EQ(transport2_->GetNextAddress(&address2, next_address_cb2),
- PP_OK_COMPLETIONPENDING);
- ASSERT_EQ(next_address_cb1.WaitForResult(), PP_OK);
- ASSERT_EQ(next_address_cb2.WaitForResult(), PP_OK);
- ASSERT_EQ(transport1_->GetNextAddress(&address1, next_address_cb1), PP_OK);
- ASSERT_EQ(transport2_->GetNextAddress(&address2, next_address_cb2), PP_OK);
-
- ASSERT_EQ(transport1_->ReceiveRemoteAddress(address2), PP_OK);
- ASSERT_EQ(transport2_->ReceiveRemoteAddress(address1), PP_OK);
-
-
- ASSERT_EQ(connect_cb1.WaitForResult(), PP_OK);
- ASSERT_EQ(connect_cb2.WaitForResult(), PP_OK);
-
- ASSERT_TRUE(transport1_->IsWritable());
- ASSERT_TRUE(transport2_->IsWritable());
-
- PASS();
-}
-
-std::string TestTransport::Clean() {
- delete transport1_;
- transport1_ = NULL;
- delete transport2_;
- transport2_ = NULL;
-
- PASS();
-}
-
-std::string TestTransport::TestCreate() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_DATAGRAM));
-
- Clean();
-
- PASS();
-}
-
-std::string TestTransport::TestSetProperty() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_STREAM));
-
- // Try settings STUN and Relay properties.
- ASSERT_EQ(transport1_->SetProperty(
- PP_TRANSPORTPROPERTY_STUN_SERVER,
- pp::Var("stun.example.com:19302")), PP_OK);
-
- ASSERT_EQ(transport1_->SetProperty(
- PP_TRANSPORTPROPERTY_RELAY_SERVER,
- pp::Var("ralay.example.com:80")), PP_OK);
-
- ASSERT_EQ(transport1_->SetProperty(
- PP_TRANSPORTPROPERTY_RELAY_USERNAME,
- pp::Var("USERNAME")), PP_OK);
- ASSERT_EQ(transport1_->SetProperty(
- PP_TRANSPORTPROPERTY_RELAY_PASSWORD,
- pp::Var("PASSWORD")), PP_OK);
-
- // Try changing TCP window size.
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_RECEIVE_WINDOW,
- pp::Var(65536)), PP_OK);
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_RECEIVE_WINDOW,
- pp::Var(10000000)), PP_ERROR_BADARGUMENT);
-
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_SEND_WINDOW,
- pp::Var(65536)), PP_OK);
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_SEND_WINDOW,
- pp::Var(10000000)), PP_ERROR_BADARGUMENT);
-
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_NO_DELAY,
- pp::Var(true)), PP_OK);
-
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_ACK_DELAY,
- pp::Var(10)), PP_OK);
- ASSERT_EQ(transport1_->SetProperty(PP_TRANSPORTPROPERTY_TCP_ACK_DELAY,
- pp::Var(10000)), PP_ERROR_BADARGUMENT);
-
- TestCompletionCallback connect_cb(instance_->pp_instance());
- ASSERT_EQ(transport1_->Connect(connect_cb), PP_OK_COMPLETIONPENDING);
-
- // SetProperty() should fail after we've connected.
- ASSERT_EQ(transport1_->SetProperty(
- PP_TRANSPORTPROPERTY_STUN_SERVER,
- pp::Var("stun.example.com:31323")), PP_ERROR_FAILED);
-
- Clean();
- ASSERT_EQ(connect_cb.WaitForResult(), PP_ERROR_ABORTED);
-
- PASS();
-}
-
-std::string TestTransport::TestConnect() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_DATAGRAM));
- ASSERT_SUBTEST_SUCCESS(Connect());
-
- Clean();
-
- PASS();
-}
-
-// Creating datagram connection and try sending data over it. Verify
-// that at least some packets are received (some packets may be lost).
-std::string TestTransport::TestSendDataUdp() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_DATAGRAM));
- ASSERT_SUBTEST_SUCCESS(Connect());
-
- const int kNumPackets = 100;
- const int kSendBufferSize = 1200;
- const int kUdpWaitTimeMs = 1000; // 1 second.
-
- TestCompletionCallback done_cb(instance_->pp_instance());
- StreamReader reader(transport1_, kSendBufferSize * kNumPackets, done_cb);
-
- std::map<int, std::vector<char> > sent_packets;
- for (int i = 0; i < kNumPackets; ++i) {
- std::vector<char> send_buffer(kSendBufferSize);
- for (size_t j = 0; j < send_buffer.size(); ++j) {
- send_buffer[j] = rand() % 256;
- }
- // Put packet index in the beginning.
- memcpy(&send_buffer[0], &i, sizeof(i));
-
- TestCompletionCallback send_cb(instance_->pp_instance(), force_async_);
- int32_t result = transport2_->Send(&send_buffer[0], send_buffer.size(),
- send_cb);
- if (force_async_) {
- ASSERT_EQ(result, PP_OK_COMPLETIONPENDING);
- ASSERT_EQ(send_cb.WaitForResult(), static_cast<int>(send_buffer.size()));
- } else {
- ASSERT_EQ(result, static_cast<int>(send_buffer.size()));
- }
- sent_packets[i] = send_buffer;
- }
-
- // Limit waiting time.
- TestCompletionCallback timeout_cb(instance_->pp_instance());
- pp::Module::Get()->core()->CallOnMainThread(kUdpWaitTimeMs, timeout_cb);
- ASSERT_EQ(timeout_cb.WaitForResult(), PP_OK);
-
- ASSERT_TRUE(reader.errors().size() == 0);
- ASSERT_TRUE(reader.received().size() > 0);
- for (std::list<std::vector<char> >::const_iterator it =
- reader.received().begin(); it != reader.received().end(); ++it) {
- int index;
- memcpy(&index, &(*it)[0], sizeof(index));
- ASSERT_TRUE(sent_packets[index] == *it);
- }
-
- Clean();
-
- PASS();
-}
-
-// Creating reliable (TCP-like) connection and try sending data over
-// it. Verify that all data is received correctly.
-std::string TestTransport::TestSendDataTcp() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_STREAM));
- ASSERT_SUBTEST_SUCCESS(Connect());
-
- const int kTcpSendSize = 100000;
-
- TestCompletionCallback done_cb(instance_->pp_instance());
- StreamReader reader(transport1_, kTcpSendSize, done_cb);
-
- std::vector<char> send_buffer(kTcpSendSize);
- for (size_t j = 0; j < send_buffer.size(); ++j) {
- send_buffer[j] = rand() % 256;
- }
-
- int pos = 0;
- while (pos < static_cast<int>(send_buffer.size())) {
- TestCompletionCallback send_cb(instance_->pp_instance(), force_async_);
- int result = transport2_->Send(
- &send_buffer[0] + pos, send_buffer.size() - pos, send_cb);
- if (force_async_)
- ASSERT_EQ(result, PP_OK_COMPLETIONPENDING);
- if (result == PP_OK_COMPLETIONPENDING)
- result = send_cb.WaitForResult();
- ASSERT_TRUE(result > 0);
- pos += result;
- }
-
- ASSERT_EQ(done_cb.WaitForResult(), PP_OK);
-
- ASSERT_TRUE(reader.errors().size() == 0);
-
- std::vector<char> received_data;
- for (std::list<std::vector<char> >::const_iterator it =
- reader.received().begin(); it != reader.received().end(); ++it) {
- received_data.insert(received_data.end(), it->begin(), it->end());
- }
- ASSERT_EQ(send_buffer, received_data);
-
- Clean();
-
- PASS();
-}
-
-std::string TestTransport::TestConnectAndCloseUdp() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_DATAGRAM));
- ASSERT_SUBTEST_SUCCESS(Connect());
-
- std::vector<char> recv_buffer(kReadBufferSize);
- TestCompletionCallback recv_cb(instance_->pp_instance());
- ASSERT_EQ(
- transport1_->Recv(&recv_buffer[0], recv_buffer.size(), recv_cb),
- PP_OK_COMPLETIONPENDING);
-
- // Close the transport and verify that callback is aborted.
- ASSERT_EQ(transport1_->Close(), PP_OK);
-
- ASSERT_EQ(recv_cb.run_count(), 1);
- ASSERT_EQ(recv_cb.result(), PP_ERROR_ABORTED);
-
- Clean();
-
- PASS();
-}
-
-std::string TestTransport::TestConnectAndCloseTcp() {
- ASSERT_SUBTEST_SUCCESS(InitTargets(PP_TRANSPORTTYPE_STREAM));
- ASSERT_SUBTEST_SUCCESS(Connect());
-
- std::vector<char> recv_buffer(kReadBufferSize);
- TestCompletionCallback recv_cb(instance_->pp_instance());
- ASSERT_EQ(
- transport1_->Recv(&recv_buffer[0], recv_buffer.size(), recv_cb),
- PP_OK_COMPLETIONPENDING);
-
- // Close the transport and verify that callback is aborted.
- ASSERT_EQ(transport1_->Close(), PP_OK);
-
- ASSERT_EQ(recv_cb.run_count(), 1);
- ASSERT_EQ(recv_cb.result(), PP_ERROR_ABORTED);
-
- Clean();
-
- PASS();
-}
« no previous file with comments | « ppapi/tests/test_transport.h ('k') | ppapi/thunk/interfaces_ppb_public_dev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698