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

Side by Side Diff: ppapi/tests/test_udp_socket_private.cc

Issue 14139012: PPAPI: More test cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Provide a message loop for "background thread" test so we can use a REQUIRED callback Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <cstring> 5 #include <cstring>
6 #include <vector> 6 #include <vector>
7 7
8 #include "ppapi/cpp/module.h" 8 #include "ppapi/cpp/module.h"
9 #include "ppapi/cpp/private/net_address_private.h" 9 #include "ppapi/cpp/private/net_address_private.h"
10 #include "ppapi/cpp/private/tcp_socket_private.h" 10 #include "ppapi/cpp/private/tcp_socket_private.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 return tcp_socket_private_is_available && 48 return tcp_socket_private_is_available &&
49 udp_socket_private_is_available && 49 udp_socket_private_is_available &&
50 net_address_private_is_available && 50 net_address_private_is_available &&
51 init_host_port && 51 init_host_port &&
52 CheckTestingInterface() && 52 CheckTestingInterface() &&
53 EnsureRunningOverHTTP(); 53 EnsureRunningOverHTTP();
54 } 54 }
55 55
56 void TestUDPSocketPrivate::RunTests(const std::string& filter) { 56 void TestUDPSocketPrivate::RunTests(const std::string& filter) {
57 RUN_TEST_FORCEASYNC_AND_NOT(Connect, filter); 57 RUN_CALLBACK_TEST(TestUDPSocketPrivate, Connect, filter);
58 RUN_TEST_FORCEASYNC_AND_NOT(ConnectFailure, filter); 58 RUN_CALLBACK_TEST(TestUDPSocketPrivate, ConnectFailure, filter);
59 RUN_TEST_FORCEASYNC_AND_NOT(Broadcast, filter); 59 RUN_CALLBACK_TEST(TestUDPSocketPrivate, Broadcast, filter);
60 RUN_TEST_FORCEASYNC_AND_NOT(SetSocketFeatureErrors, filter); 60 RUN_CALLBACK_TEST(TestUDPSocketPrivate, SetSocketFeatureErrors, filter);
61 } 61 }
62 62
63 std::string TestUDPSocketPrivate::GetLocalAddress( 63 std::string TestUDPSocketPrivate::GetLocalAddress(
64 PP_NetAddress_Private* address) { 64 PP_NetAddress_Private* address) {
65 pp::TCPSocketPrivate socket(instance_); 65 pp::TCPSocketPrivate socket(instance_);
66 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 66 TestCompletionCallback callback(instance_->pp_instance(), callback_type());
67 int32_t rv = socket.Connect(host_.c_str(), port_, callback.GetCallback()); 67 callback.WaitForResult(
68 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 68 socket.Connect(host_.c_str(), port_, callback.GetCallback()));
69 return ReportError("PPB_TCPSocket_Private::Connect force_async", rv); 69 CHECK_CALLBACK_BEHAVIOR(callback);
70 if (rv == PP_OK_COMPLETIONPENDING) 70 ASSERT_EQ(PP_OK, callback.result());
71 rv = callback.WaitForResult(); 71 ASSERT_TRUE(socket.GetLocalAddress(address));
72 if (rv != PP_OK)
73 return ReportError("PPB_TCPSocket_Private::Connect", rv);
74 if (!socket.GetLocalAddress(address))
75 return "PPB_TCPSocket_Private::GetLocalAddress: Failed";
76 socket.Disconnect(); 72 socket.Disconnect();
77 PASS(); 73 PASS();
78 } 74 }
79 75
80 std::string TestUDPSocketPrivate::SetBroadcastOptions( 76 std::string TestUDPSocketPrivate::SetBroadcastOptions(
81 pp::UDPSocketPrivate* socket) { 77 pp::UDPSocketPrivate* socket) {
82 int32_t rv = socket->SetSocketFeature(PP_UDPSOCKETFEATURE_ADDRESS_REUSE, 78 int32_t rv = socket->SetSocketFeature(PP_UDPSOCKETFEATURE_ADDRESS_REUSE,
83 pp::Var(true)); 79 pp::Var(true));
84 if (rv != PP_OK) 80 if (rv != PP_OK)
85 return ReportError("PPB_UDPSocket_Private::SetSocketFeature", rv); 81 return ReportError("PPB_UDPSocket_Private::SetSocketFeature", rv);
86 82
87 rv = socket->SetSocketFeature(PP_UDPSOCKETFEATURE_BROADCAST, pp::Var(true)); 83 rv = socket->SetSocketFeature(PP_UDPSOCKETFEATURE_BROADCAST, pp::Var(true));
88 if (rv != PP_OK) 84 if (rv != PP_OK)
89 return ReportError("PPB_UDPSocket_Private::SetSocketFeature", rv); 85 return ReportError("PPB_UDPSocket_Private::SetSocketFeature", rv);
90 86
91 PASS(); 87 PASS();
92 } 88 }
93 89
94 std::string TestUDPSocketPrivate::BindUDPSocket( 90 std::string TestUDPSocketPrivate::BindUDPSocket(
95 pp::UDPSocketPrivate* socket, 91 pp::UDPSocketPrivate* socket,
96 PP_NetAddress_Private* address) { 92 PP_NetAddress_Private* address) {
97 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 93 TestCompletionCallback callback(instance_->pp_instance(), callback_type());
98 int32_t rv = socket->Bind(address, callback.GetCallback()); 94 callback.WaitForResult(socket->Bind(address, callback.GetCallback()));
99 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 95 CHECK_CALLBACK_BEHAVIOR(callback);
100 return ReportError("PPB_UDPSocket_Private::Bind force_async", rv); 96 ASSERT_EQ(PP_OK, callback.result());
101 if (rv == PP_OK_COMPLETIONPENDING)
102 rv = callback.WaitForResult();
103 if (rv != PP_OK)
104 return ReportError("PPB_UDPSocket_Private::Bind", rv);
105 PASS(); 97 PASS();
106 } 98 }
107 99
108 std::string TestUDPSocketPrivate::LookupPortAndBindUDPSocket( 100 std::string TestUDPSocketPrivate::LookupPortAndBindUDPSocket(
109 pp::UDPSocketPrivate* socket, 101 pp::UDPSocketPrivate* socket,
110 PP_NetAddress_Private *address) { 102 PP_NetAddress_Private *address) {
111 PP_NetAddress_Private base_address; 103 PP_NetAddress_Private base_address;
112 ASSERT_SUBTEST_SUCCESS(GetLocalAddress(&base_address)); 104 ASSERT_SUBTEST_SUCCESS(GetLocalAddress(&base_address));
113 105
114 bool is_free_port_found = false; 106 bool is_free_port_found = false;
115 for (uint16_t port = kPortScanFrom; port < kPortScanTo; ++port) { 107 for (uint16_t port = kPortScanFrom; port < kPortScanTo; ++port) {
116 if (!pp::NetAddressPrivate::ReplacePort(base_address, port, address)) 108 if (!pp::NetAddressPrivate::ReplacePort(base_address, port, address))
117 return "PPB_NetAddress_Private::ReplacePort: Failed"; 109 return "PPB_NetAddress_Private::ReplacePort: Failed";
118 if (BindUDPSocket(socket, address).empty()) { 110 if (BindUDPSocket(socket, address).empty()) {
119 is_free_port_found = true; 111 is_free_port_found = true;
120 break; 112 break;
121 } 113 }
122 } 114 }
123 if (!is_free_port_found) 115 if (!is_free_port_found)
124 return "Can't find available port"; 116 return "Can't find available port";
125 if (!socket->GetBoundAddress(address)) 117 if (!socket->GetBoundAddress(address))
126 return "PPB_UDPSocket_Private::GetBoundAddress: Failed"; 118 return "PPB_UDPSocket_Private::GetBoundAddress: Failed";
127 PASS(); 119 PASS();
128 } 120 }
129 121
130 std::string TestUDPSocketPrivate::BindUDPSocketFailure( 122 std::string TestUDPSocketPrivate::BindUDPSocketFailure(
131 pp::UDPSocketPrivate* socket, 123 pp::UDPSocketPrivate* socket,
132 PP_NetAddress_Private *address) { 124 PP_NetAddress_Private *address) {
133 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 125 TestCompletionCallback callback(instance_->pp_instance(), callback_type());
134 int32_t rv = socket->Bind(address, callback.GetCallback()); 126 callback.WaitForResult(socket->Bind(address, callback.GetCallback()));
135 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 127 CHECK_CALLBACK_BEHAVIOR(callback);
136 return ReportError("PPB_UDPSocket_Private::Bind force_async", rv); 128 ASSERT_NE(PP_OK, callback.result());
137 if (rv == PP_OK_COMPLETIONPENDING) 129 ASSERT_FALSE(socket->GetBoundAddress(address));
138 rv = callback.WaitForResult();
139 if (rv == PP_OK)
140 return ReportError("PPB_UDPSocket_Private::Bind", rv);
141 if (socket->GetBoundAddress(address))
142 return "PPB_UDPSocket_Private::GetBoundAddress: Failed";
143 PASS(); 130 PASS();
144 } 131 }
145 132
146 std::string TestUDPSocketPrivate::ReadSocket(pp::UDPSocketPrivate* socket, 133 std::string TestUDPSocketPrivate::ReadSocket(pp::UDPSocketPrivate* socket,
147 PP_NetAddress_Private* address, 134 PP_NetAddress_Private* address,
148 size_t size, 135 size_t size,
149 std::string* message) { 136 std::string* message) {
150 std::vector<char> buffer(size); 137 std::vector<char> buffer(size);
151 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 138 TestCompletionCallback callback(instance_->pp_instance(), callback_type());
152 int32_t rv = socket->RecvFrom(&buffer[0], size, callback.GetCallback()); 139 callback.WaitForResult(
153 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 140 socket->RecvFrom(&buffer[0], size, callback.GetCallback()));
154 return ReportError("PPB_UDPSocket_Private::RecvFrom force_async", rv); 141 CHECK_CALLBACK_BEHAVIOR(callback);
155 if (rv == PP_OK_COMPLETIONPENDING) 142 ASSERT_FALSE(callback.result() < 0);
156 rv = callback.WaitForResult(); 143 ASSERT_EQ(size, static_cast<size_t>(callback.result()));
157 if (rv < 0 || size != static_cast<size_t>(rv))
158 return ReportError("PPB_UDPSocket_Private::RecvFrom", rv);
159 message->assign(buffer.begin(), buffer.end()); 144 message->assign(buffer.begin(), buffer.end());
160 PASS(); 145 PASS();
161 } 146 }
162 147
163 std::string TestUDPSocketPrivate::PassMessage(pp::UDPSocketPrivate* target, 148 std::string TestUDPSocketPrivate::PassMessage(pp::UDPSocketPrivate* target,
164 pp::UDPSocketPrivate* source, 149 pp::UDPSocketPrivate* source,
165 PP_NetAddress_Private* address, 150 PP_NetAddress_Private* address,
166 const std::string& message) { 151 const std::string& message) {
167 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 152 TestCompletionCallback callback(instance_->pp_instance(), callback_type());
168 int32_t rv = source->SendTo(message.c_str(), message.size(), address, 153 int32_t rv = source->SendTo(message.c_str(), message.size(), address,
169 callback.GetCallback()); 154 callback.GetCallback());
170 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
171 return ReportError("PPB_UDPSocket_Private::SendTo force_async", rv);
172
173 std::string str; 155 std::string str;
174 ASSERT_SUBTEST_SUCCESS(ReadSocket(target, address, message.size(), &str)); 156 ASSERT_SUBTEST_SUCCESS(ReadSocket(target, address, message.size(), &str));
175 157
176 if (rv == PP_OK_COMPLETIONPENDING) 158 callback.WaitForResult(rv);
177 rv = callback.WaitForResult(); 159 CHECK_CALLBACK_BEHAVIOR(callback);
178 if (rv < 0 || message.size() != static_cast<size_t>(rv)) 160 ASSERT_FALSE(callback.result() < 0);
179 return ReportError("PPB_UDPSocket_Private::SendTo", rv); 161 ASSERT_EQ(message.size(), static_cast<size_t>(callback.result()));
180
181 ASSERT_EQ(message, str); 162 ASSERT_EQ(message, str);
182 PASS(); 163 PASS();
183 } 164 }
184 165
185 std::string TestUDPSocketPrivate::TestConnect() { 166 std::string TestUDPSocketPrivate::TestConnect() {
186 pp::UDPSocketPrivate server_socket(instance_), client_socket(instance_); 167 pp::UDPSocketPrivate server_socket(instance_), client_socket(instance_);
187 PP_NetAddress_Private server_address, client_address; 168 PP_NetAddress_Private server_address, client_address;
188 169
189 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket, 170 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket,
190 &server_address)); 171 &server_address));
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 // Try to pass incorrect feature name. 248 // Try to pass incorrect feature name.
268 int32_t rv = socket.SetSocketFeature(PP_UDPSOCKETFEATURE_COUNT, 249 int32_t rv = socket.SetSocketFeature(PP_UDPSOCKETFEATURE_COUNT,
269 pp::Var(true)); 250 pp::Var(true));
270 ASSERT_EQ(PP_ERROR_BADARGUMENT, rv); 251 ASSERT_EQ(PP_ERROR_BADARGUMENT, rv);
271 252
272 // Try to pass incorrect feature value's type. 253 // Try to pass incorrect feature value's type.
273 rv = socket.SetSocketFeature(PP_UDPSOCKETFEATURE_ADDRESS_REUSE, pp::Var(1)); 254 rv = socket.SetSocketFeature(PP_UDPSOCKETFEATURE_ADDRESS_REUSE, pp::Var(1));
274 ASSERT_EQ(PP_ERROR_BADARGUMENT, rv); 255 ASSERT_EQ(PP_ERROR_BADARGUMENT, rv);
275 PASS(); 256 PASS();
276 } 257 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_tcp_socket_private_trusted.cc ('k') | ppapi/tests/test_udp_socket_private_disallowed.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698