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

Side by Side Diff: mojo/services/network/udp_socket_unittest.cc

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/at_exit.h"
5 #include "base/macros.h" 6 #include "base/macros.h"
6 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
7 #include "base/run_loop.h"
8 #include "mojo/public/cpp/application/application_connection.h"
9 #include "mojo/public/cpp/application/application_impl.h"
10 #include "mojo/public/cpp/application/application_test_base.h"
11 #include "mojo/public/cpp/bindings/callback.h" 8 #include "mojo/public/cpp/bindings/callback.h"
12 #include "mojo/services/network/public/cpp/udp_socket_wrapper.h" 9 #include "mojo/services/network/public/cpp/udp_socket_wrapper.h"
13 #include "mojo/services/network/public/interfaces/network_service.mojom.h" 10 #include "mojo/services/network/public/interfaces/network_service.mojom.h"
14 #include "mojo/services/network/public/interfaces/udp_socket.mojom.h" 11 #include "mojo/services/network/public/interfaces/udp_socket.mojom.h"
12 #include "mojo/shell/shell_test_helper.h"
15 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
16 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "url/gurl.h"
17 16
18 namespace mojo { 17 namespace mojo {
19 namespace service { 18 namespace service {
20 namespace { 19 namespace {
21 20
22 NetAddressPtr GetLocalHostWithAnyPort() { 21 NetAddressPtr GetLocalHostWithAnyPort() {
23 NetAddressPtr addr(NetAddress::New()); 22 NetAddressPtr addr(NetAddress::New());
24 addr->family = NET_ADDRESS_FAMILY_IPV4; 23 addr->family = NET_ADDRESS_FAMILY_IPV4;
25 addr->ipv4 = NetAddressIPv4::New(); 24 addr->ipv4 = NetAddressIPv4::New();
26 addr->ipv4->port = 0; 25 addr->ipv4->port = 0;
(...skipping 30 matching lines...) Expand all
57 56
58 base::RunLoop run_loop; 57 base::RunLoop run_loop;
59 run_loop_ = &run_loop; 58 run_loop_ = &run_loop;
60 run_loop.Run(); 59 run_loop.Run();
61 run_loop_ = nullptr; 60 run_loop_ = nullptr;
62 } 61 }
63 62
64 protected: 63 protected:
65 struct StateBase : public CallbackType::Runnable { 64 struct StateBase : public CallbackType::Runnable {
66 StateBase() : test_callback_(nullptr) {} 65 StateBase() : test_callback_(nullptr) {}
67 ~StateBase() override {} 66 virtual ~StateBase() {}
68 67
69 void set_test_callback(TestCallbackBase* test_callback) { 68 void set_test_callback(TestCallbackBase* test_callback) {
70 test_callback_ = test_callback; 69 test_callback_ = test_callback;
71 } 70 }
72 71
73 protected: 72 protected:
74 void NotifyRun() const { 73 void NotifyRun() const {
75 if (test_callback_) { 74 if (test_callback_) {
76 test_callback_->ran_ = true; 75 test_callback_->ran_ = true;
77 if (test_callback_->run_loop_) 76 if (test_callback_->run_loop_)
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 214 }
216 NotifyRun(); 215 NotifyRun();
217 } 216 }
218 }; 217 };
219 218
220 NetworkErrorPtr result_; 219 NetworkErrorPtr result_;
221 NetAddressPtr src_addr_; 220 NetAddressPtr src_addr_;
222 Array<uint8_t> data_; 221 Array<uint8_t> data_;
223 }; 222 };
224 223
225 class UDPSocketAppTest : public test::ApplicationTestBase { 224 class UDPSocketTest : public testing::Test {
226 public: 225 public:
227 UDPSocketAppTest() {} 226 UDPSocketTest() {}
228 ~UDPSocketAppTest() override {} 227 virtual ~UDPSocketTest() {}
229 228
230 void SetUp() override { 229 virtual void SetUp() override {
231 ApplicationTestBase::SetUp(); 230 test_helper_.Init();
232 231
233 ApplicationConnection* connection = 232 test_helper_.application_manager()->ConnectToService(
234 application_impl()->ConnectToApplication("mojo:network_service"); 233 GURL("mojo:network_service"), &network_service_);
235 connection->ConnectToService(&network_service_);
236 234
237 network_service_->CreateUDPSocket(GetProxy(&udp_socket_)); 235 network_service_->CreateUDPSocket(GetProxy(&udp_socket_));
238 udp_socket_.set_client(&udp_socket_client_); 236 udp_socket_.set_client(&udp_socket_client_);
239 } 237 }
240 238
241 protected: 239 protected:
242 struct ReceiveResult { 240 struct ReceiveResult {
243 NetworkErrorPtr result; 241 NetworkErrorPtr result;
244 NetAddressPtr addr; 242 NetAddressPtr addr;
245 Array<uint8_t> data; 243 Array<uint8_t> data;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 if (GetReceiveResults()->size() == count) 286 if (GetReceiveResults()->size() == count)
289 return; 287 return;
290 288
291 udp_socket_client_.expected_receive_count_ = count; 289 udp_socket_client_.expected_receive_count_ = count;
292 base::RunLoop run_loop; 290 base::RunLoop run_loop;
293 udp_socket_client_.run_loop_ = &run_loop; 291 udp_socket_client_.run_loop_ = &run_loop;
294 run_loop.Run(); 292 run_loop.Run();
295 udp_socket_client_.run_loop_ = nullptr; 293 udp_socket_client_.run_loop_ = nullptr;
296 } 294 }
297 295
296 base::ShadowingAtExitManager at_exit_;
297 shell::ShellTestHelper test_helper_;
298
298 NetworkServicePtr network_service_; 299 NetworkServicePtr network_service_;
299 UDPSocketPtr udp_socket_; 300 UDPSocketPtr udp_socket_;
300 UDPSocketClientImpl udp_socket_client_; 301 UDPSocketClientImpl udp_socket_client_;
301 302
302 DISALLOW_COPY_AND_ASSIGN(UDPSocketAppTest); 303 DISALLOW_COPY_AND_ASSIGN(UDPSocketTest);
303 }; 304 };
304 305
305 } // namespace 306 } // namespace
306 307
307 TEST_F(UDPSocketAppTest, Settings) { 308 TEST_F(UDPSocketTest, Settings) {
308 TestCallback callback1; 309 TestCallback callback1;
309 udp_socket_->AllowAddressReuse(callback1.callback()); 310 udp_socket_->AllowAddressReuse(callback1.callback());
310 callback1.WaitForResult(); 311 callback1.WaitForResult();
311 EXPECT_EQ(net::OK, callback1.result()->code); 312 EXPECT_EQ(net::OK, callback1.result()->code);
312 313
313 // Should fail because the socket hasn't been bound. 314 // Should fail because the socket hasn't been bound.
314 TestCallback callback2; 315 TestCallback callback2;
315 udp_socket_->SetSendBufferSize(1024, callback2.callback()); 316 udp_socket_->SetSendBufferSize(1024, callback2.callback());
316 callback2.WaitForResult(); 317 callback2.WaitForResult();
317 EXPECT_NE(net::OK, callback2.result()->code); 318 EXPECT_NE(net::OK, callback2.result()->code);
(...skipping 30 matching lines...) Expand all
348 udp_socket_->NegotiateMaxPendingSendRequests(0, callback8.callback()); 349 udp_socket_->NegotiateMaxPendingSendRequests(0, callback8.callback());
349 callback8.WaitForResult(); 350 callback8.WaitForResult();
350 EXPECT_GT(callback8.result(), 0u); 351 EXPECT_GT(callback8.result(), 0u);
351 352
352 TestCallbackWithUint32 callback9; 353 TestCallbackWithUint32 callback9;
353 udp_socket_->NegotiateMaxPendingSendRequests(16, callback9.callback()); 354 udp_socket_->NegotiateMaxPendingSendRequests(16, callback9.callback());
354 callback9.WaitForResult(); 355 callback9.WaitForResult();
355 EXPECT_GT(callback9.result(), 0u); 356 EXPECT_GT(callback9.result(), 0u);
356 } 357 }
357 358
358 TEST_F(UDPSocketAppTest, TestReadWrite) { 359 TEST_F(UDPSocketTest, TestReadWrite) {
359 TestCallbackWithAddress callback1; 360 TestCallbackWithAddress callback1;
360 udp_socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback()); 361 udp_socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback());
361 callback1.WaitForResult(); 362 callback1.WaitForResult();
362 ASSERT_EQ(net::OK, callback1.result()->code); 363 ASSERT_EQ(net::OK, callback1.result()->code);
363 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 364 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
364 365
365 NetAddressPtr server_addr = callback1.net_address().Clone(); 366 NetAddressPtr server_addr = callback1.net_address().Clone();
366 367
367 UDPSocketPtr client_socket; 368 UDPSocketPtr client_socket;
368 network_service_->CreateUDPSocket(GetProxy(&client_socket)); 369 network_service_->CreateUDPSocket(GetProxy(&client_socket));
(...skipping 25 matching lines...) Expand all
394 scoped_ptr<ReceiveResult> result(GetReceiveResults()->front()); 395 scoped_ptr<ReceiveResult> result(GetReceiveResults()->front());
395 GetReceiveResults()->pop(); 396 GetReceiveResults()->pop();
396 397
397 EXPECT_EQ(static_cast<int>(kDatagramSize), result->result->code); 398 EXPECT_EQ(static_cast<int>(kDatagramSize), result->result->code);
398 EXPECT_TRUE(result->addr.Equals(client_addr)); 399 EXPECT_TRUE(result->addr.Equals(client_addr));
399 EXPECT_TRUE(result->data.Equals( 400 EXPECT_TRUE(result->data.Equals(
400 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize))); 401 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize)));
401 } 402 }
402 } 403 }
403 404
404 TEST_F(UDPSocketAppTest, TestUDPSocketWrapper) { 405 TEST_F(UDPSocketTest, TestUDPSocketWrapper) {
405 UDPSocketWrapper udp_socket(udp_socket_.Pass(), 4, 4); 406 UDPSocketWrapper udp_socket(udp_socket_.Pass(), 4, 4);
406 407
407 TestCallbackWithAddress callback1; 408 TestCallbackWithAddress callback1;
408 udp_socket.Bind(GetLocalHostWithAnyPort(), callback1.callback()); 409 udp_socket.Bind(GetLocalHostWithAnyPort(), callback1.callback());
409 callback1.WaitForResult(); 410 callback1.WaitForResult();
410 ASSERT_EQ(net::OK, callback1.result()->code); 411 ASSERT_EQ(net::OK, callback1.result()->code);
411 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 412 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
412 413
413 NetAddressPtr server_addr = callback1.net_address().Clone(); 414 NetAddressPtr server_addr = callback1.net_address().Clone();
414 415
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 receive_callbacks[j].result()->code); 449 receive_callbacks[j].result()->code);
449 EXPECT_TRUE(receive_callbacks[j].src_addr().Equals(client_addr)); 450 EXPECT_TRUE(receive_callbacks[j].src_addr().Equals(client_addr));
450 EXPECT_TRUE(receive_callbacks[j].data().Equals( 451 EXPECT_TRUE(receive_callbacks[j].data().Equals(
451 CreateTestMessage(static_cast<uint8_t>(j), kDatagramSize))); 452 CreateTestMessage(static_cast<uint8_t>(j), kDatagramSize)));
452 } 453 }
453 } 454 }
454 } 455 }
455 456
456 } // namespace service 457 } // namespace service
457 } // namespace mojo 458 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698