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

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

Issue 9701024: Added C++ wrappers for PPB_HostResolver_Private interface. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sync. Created 8 years, 9 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
« no previous file with comments | « ppapi/tests/test_host_resolver_private.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ppapi/tests/test_host_resolver_private.h" 5 #include "ppapi/tests/test_host_resolver_private.h"
6 6
7 #include "ppapi/c/private/ppb_net_address_private.h" 7 #include "ppapi/c/private/ppb_net_address_private.h"
8 #include "ppapi/cpp/module.h" 8 #include "ppapi/cpp/module_impl.h"
9 #include "ppapi/cpp/pass_ref.h" 9 #include "ppapi/cpp/private/host_resolver_private.h"
10 #include "ppapi/cpp/private/tcp_socket_private.h" 10 #include "ppapi/cpp/private/tcp_socket_private.h"
11 #include "ppapi/cpp/var.h" 11 #include "ppapi/cpp/var.h"
12 #include "ppapi/tests/test_utils.h" 12 #include "ppapi/tests/test_utils.h"
13 #include "ppapi/tests/testing_instance.h" 13 #include "ppapi/tests/testing_instance.h"
14 14
15 REGISTER_TEST_CASE(HostResolverPrivate); 15 REGISTER_TEST_CASE(HostResolverPrivate);
16 16
17 TestHostResolverPrivate::TestHostResolverPrivate(TestingInstance* instance) 17 TestHostResolverPrivate::TestHostResolverPrivate(TestingInstance* instance)
18 : TestCase(instance) { 18 : TestCase(instance) {
19 } 19 }
20 20
21 bool TestHostResolverPrivate::Init() { 21 bool TestHostResolverPrivate::Init() {
22 core_interface_ = static_cast<const PPB_Core*>( 22 bool host_resolver_private_is_available =
23 pp::Module::Get()->GetBrowserInterface(PPB_CORE_INTERFACE)); 23 pp::HostResolverPrivate::IsAvailable();
24 if (!core_interface_) 24 if (!host_resolver_private_is_available)
25 instance_->AppendError("PPB_Core interface not available"); 25 instance_->AppendError("PPB_HostResolver_Private interface not available");
26 host_resolver_private_interface_ = 26
27 static_cast<const PPB_HostResolver_Private*>(
28 pp::Module::Get()->GetBrowserInterface(
29 PPB_HOSTRESOLVER_PRIVATE_INTERFACE));
30 bool tcp_socket_private_is_available = pp::TCPSocketPrivate::IsAvailable(); 27 bool tcp_socket_private_is_available = pp::TCPSocketPrivate::IsAvailable();
31 if (!tcp_socket_private_is_available) 28 if (!tcp_socket_private_is_available)
32 instance_->AppendError("PPB_TCPSocket_Private interface not available"); 29 instance_->AppendError("PPB_TCPSocket_Private interface not available");
33 if (!host_resolver_private_interface_)
34 instance_->AppendError("PPB_HostResolver_Private interface not available");
35 30
36 bool init_host_port = GetLocalHostPort( 31 bool init_host_port =
37 instance_->pp_instance(), &host_, &port_); 32 GetLocalHostPort(instance_->pp_instance(), &host_, &port_);
38 if (!init_host_port) 33 if (!init_host_port)
39 instance_->AppendError("Can't init host and port"); 34 instance_->AppendError("Can't init host and port");
40 35
41 return core_interface_ && 36 return host_resolver_private_is_available &&
42 host_resolver_private_interface_ &&
43 tcp_socket_private_is_available && 37 tcp_socket_private_is_available &&
44 init_host_port && 38 init_host_port &&
45 CheckTestingInterface() && 39 CheckTestingInterface() &&
46 EnsureRunningOverHTTP(); 40 EnsureRunningOverHTTP();
47 } 41 }
48 42
49 void TestHostResolverPrivate::RunTests(const std::string& filter) { 43 void TestHostResolverPrivate::RunTests(const std::string& filter) {
50 RUN_TEST(Create, filter); 44 RUN_TEST(Empty, filter);
51 RUN_TEST_FORCEASYNC_AND_NOT(Resolve, filter); 45 RUN_TEST_FORCEASYNC_AND_NOT(Resolve, filter);
52 RUN_TEST_FORCEASYNC_AND_NOT(ResolveIPv4, filter); 46 RUN_TEST_FORCEASYNC_AND_NOT(ResolveIPv4, filter);
53 } 47 }
54 48
55 std::string TestHostResolverPrivate::SyncConnect(pp::TCPSocketPrivate* socket, 49 std::string TestHostResolverPrivate::SyncConnect(pp::TCPSocketPrivate* socket,
56 const std::string& host, 50 const std::string& host,
57 uint16_t port) { 51 uint16_t port) {
58 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 52 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
59 int32_t rv = socket->Connect(host.c_str(), port, callback); 53 int32_t rv = socket->Connect(host.c_str(), port, callback);
60 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 54 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 return ReportError("PPB_TCPSocket_Private::Write", rv); 102 return ReportError("PPB_TCPSocket_Private::Write", rv);
109 *bytes_written = rv; 103 *bytes_written = rv;
110 PASS(); 104 PASS();
111 } 105 }
112 106
113 std::string TestHostResolverPrivate::CheckHTTPResponse( 107 std::string TestHostResolverPrivate::CheckHTTPResponse(
114 pp::TCPSocketPrivate* socket, 108 pp::TCPSocketPrivate* socket,
115 const std::string& request, 109 const std::string& request,
116 const std::string& response) { 110 const std::string& response) {
117 int32_t rv = 0; 111 int32_t rv = 0;
118 std::string error_message; 112 ASSERT_SUBTEST_SUCCESS(
119 113 SyncWrite(socket, request.c_str(), request.size(), &rv));
120 error_message = SyncWrite(socket, request.c_str(), request.size(), &rv);
121 if (!error_message.empty())
122 return error_message;
123
124 std::vector<char> response_buffer(response.size()); 114 std::vector<char> response_buffer(response.size());
125 error_message = SyncRead(socket, &response_buffer[0], response.size(), &rv); 115 ASSERT_SUBTEST_SUCCESS(
126 if (!error_message.empty()) 116 SyncRead(socket, &response_buffer[0], response.size(), &rv));
127 return error_message;
128 std::string actual_response(&response_buffer[0], rv); 117 std::string actual_response(&response_buffer[0], rv);
129 if (response != actual_response) { 118 if (response != actual_response) {
130 return "CheckHTTPResponse failed, expected: " + response + 119 return "CheckHTTPResponse failed, expected: " + response +
131 ", actual: " + actual_response; 120 ", actual: " + actual_response;
132 } 121 }
133 PASS(); 122 PASS();
134 } 123 }
135 124
136 std::string TestHostResolverPrivate::SyncResolve( 125 std::string TestHostResolverPrivate::SyncResolve(
137 PP_Resource host_resolver, 126 pp::HostResolverPrivate* host_resolver,
138 const std::string& host, 127 const std::string& host,
139 uint16_t port, 128 uint16_t port,
140 const PP_HostResolver_Private_Hint& hint) { 129 const PP_HostResolver_Private_Hint& hint) {
141 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 130 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
142 int32_t rv = host_resolver_private_interface_->Resolve( 131 int32_t rv = host_resolver->Resolve(host, port, hint, callback);
143 host_resolver,
144 host.c_str(),
145 port,
146 &hint,
147 static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
148 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 132 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
149 return ReportError("PPB_HostResolver_Private::Resolve force_async", rv); 133 return ReportError("PPB_HostResolver_Private::Resolve force_async", rv);
150 if (rv == PP_OK_COMPLETIONPENDING) 134 if (rv == PP_OK_COMPLETIONPENDING)
151 rv = callback.WaitForResult(); 135 rv = callback.WaitForResult();
152 if (rv != PP_OK) 136 if (rv != PP_OK)
153 return ReportError("PPB_HostResolver_Private::Resolve", rv); 137 return ReportError("PPB_HostResolver_Private::Resolve", rv);
154 PASS(); 138 PASS();
155 } 139 }
156 140
157 std::string TestHostResolverPrivate::TestCreate() { 141 std::string TestHostResolverPrivate::TestEmpty() {
158 PP_Resource host_resolver = host_resolver_private_interface_->Create(0); 142 pp::HostResolverPrivate host_resolver(instance_);
159 ASSERT_EQ(0, host_resolver); 143 ASSERT_EQ(0, host_resolver.GetSize());
144 PP_NetAddress_Private address;
145 ASSERT_FALSE(host_resolver.GetNetAddress(0, &address));
160 146
161 host_resolver =
162 host_resolver_private_interface_->Create(instance_->pp_instance());
163 ASSERT_NE(0, host_resolver);
164 ASSERT_TRUE(host_resolver_private_interface_->IsHostResolver(host_resolver));
165 ASSERT_EQ(0, host_resolver_private_interface_->GetSize(host_resolver));
166
167 PP_NetAddress_Private address;
168 ASSERT_FALSE(host_resolver_private_interface_->GetNetAddress(host_resolver,
169 0,
170 &address));
171 core_interface_->ReleaseResource(host_resolver);
172 PASS(); 147 PASS();
173 } 148 }
174 149
175 std::string TestHostResolverPrivate::ParametrizedTestResolve( 150 std::string TestHostResolverPrivate::ParametrizedTestResolve(
176 const PP_HostResolver_Private_Hint &hint) { 151 const PP_HostResolver_Private_Hint &hint) {
177 PP_Resource host_resolver = 152 pp::HostResolverPrivate host_resolver(instance_);
178 host_resolver_private_interface_->Create(instance_->pp_instance());
179 ASSERT_NE(0, host_resolver);
180 ASSERT_TRUE(host_resolver_private_interface_->IsHostResolver(host_resolver));
181 153
182 std::string error_message = SyncResolve(host_resolver, host_, port_, hint); 154 ASSERT_SUBTEST_SUCCESS(SyncResolve(&host_resolver, host_, port_, hint));
183 if (!error_message.empty())
184 return error_message;
185 155
186 const size_t size = host_resolver_private_interface_->GetSize(host_resolver); 156 const size_t size = host_resolver.GetSize();
187 ASSERT_TRUE(size >= 1); 157 ASSERT_TRUE(size >= 1);
188 158
189 PP_NetAddress_Private address; 159 PP_NetAddress_Private address;
190 for (size_t i = 0; i < size; ++i) { 160 for (size_t i = 0; i < size; ++i) {
191 ASSERT_TRUE(host_resolver_private_interface_->GetNetAddress(host_resolver, 161 ASSERT_TRUE(host_resolver.GetNetAddress(i, &address));
192 i, 162
193 &address));
194 pp::TCPSocketPrivate socket(instance_); 163 pp::TCPSocketPrivate socket(instance_);
195 error_message = SyncConnect(&socket, address); 164 ASSERT_SUBTEST_SUCCESS(SyncConnect(&socket, address));
196 error_message = 165 ASSERT_SUBTEST_SUCCESS(CheckHTTPResponse(&socket,
197 CheckHTTPResponse(&socket, "GET / HTTP/1.0\r\n\r\n", "HTTP/1.0"); 166 "GET / HTTP/1.0\r\n\r\n",
198 if (!error_message.empty()) 167 "HTTP"));
199 return error_message;
200 socket.Disconnect(); 168 socket.Disconnect();
201 } 169 }
202 170
203 ASSERT_FALSE(host_resolver_private_interface_->GetNetAddress(host_resolver, 171 ASSERT_FALSE(host_resolver.GetNetAddress(size, &address));
204 size, 172 pp::Var canonical_name = host_resolver.GetCanonicalName();
205 &address));
206 PP_Var pp_var =
207 host_resolver_private_interface_->GetCanonicalName(host_resolver);
208 pp::Var canonical_name(pp::PassRef(), pp_var);
209 ASSERT_TRUE(canonical_name.is_string()); 173 ASSERT_TRUE(canonical_name.is_string());
210 pp::TCPSocketPrivate socket(instance_); 174 pp::TCPSocketPrivate socket(instance_);
211 error_message = SyncConnect(&socket, 175 ASSERT_SUBTEST_SUCCESS(SyncConnect(&socket,
212 canonical_name.AsString().c_str(), 176 canonical_name.AsString(),
213 port_); 177 port_));
214 if (!error_message.empty()) 178 ASSERT_SUBTEST_SUCCESS(CheckHTTPResponse(&socket,
215 return error_message; 179 "GET / HTTP/1.0\r\n\r\n",
216 error_message = CheckHTTPResponse(&socket, 180 "HTTP"));
217 "GET / HTTP/1.0\r\n\r\n", "HTTP");
218 if (!error_message.empty())
219 return error_message;
220 socket.Disconnect(); 181 socket.Disconnect();
221 182
222 core_interface_->ReleaseResource(host_resolver);
223 PASS(); 183 PASS();
224 } 184 }
225 185
226 std::string TestHostResolverPrivate::TestResolve() { 186 std::string TestHostResolverPrivate::TestResolve() {
227 PP_HostResolver_Private_Hint hint; 187 PP_HostResolver_Private_Hint hint;
228 hint.family = PP_NETADDRESSFAMILY_UNSPECIFIED; 188 hint.family = PP_NETADDRESSFAMILY_UNSPECIFIED;
229 hint.flags = PP_HOST_RESOLVER_FLAGS_CANONNAME; 189 hint.flags = PP_HOST_RESOLVER_FLAGS_CANONNAME;
230 return ParametrizedTestResolve(hint); 190 return ParametrizedTestResolve(hint);
231 } 191 }
232 192
233 std::string TestHostResolverPrivate::TestResolveIPv4() { 193 std::string TestHostResolverPrivate::TestResolveIPv4() {
234 PP_HostResolver_Private_Hint hint; 194 PP_HostResolver_Private_Hint hint;
235 hint.family = PP_NETADDRESSFAMILY_IPV4; 195 hint.family = PP_NETADDRESSFAMILY_IPV4;
236 hint.flags = PP_HOST_RESOLVER_FLAGS_CANONNAME; 196 hint.flags = PP_HOST_RESOLVER_FLAGS_CANONNAME;
237 return ParametrizedTestResolve(hint); 197 return ParametrizedTestResolve(hint);
238 } 198 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_host_resolver_private.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698