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

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

Issue 933973002: Return errors from the Mojo network service using an enum. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Generate the static_asserts using a macro. Created 5 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 unified diff | Download patch
« no previous file with comments | « mojo/services/network/public/interfaces/network_error.mojom ('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 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/macros.h" 5 #include "base/macros.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "mojo/public/cpp/application/application_connection.h" 8 #include "mojo/public/cpp/application/application_connection.h"
9 #include "mojo/public/cpp/application/application_impl.h" 9 #include "mojo/public/cpp/application/application_impl.h"
10 #include "mojo/public/cpp/application/application_test_base.h" 10 #include "mojo/public/cpp/application/application_test_base.h"
11 #include "mojo/public/cpp/bindings/callback.h" 11 #include "mojo/public/cpp/bindings/callback.h"
12 #include "mojo/services/network/public/cpp/udp_socket_wrapper.h" 12 #include "mojo/services/network/public/cpp/udp_socket_wrapper.h"
13 #include "mojo/services/network/public/interfaces/network_service.mojom.h" 13 #include "mojo/services/network/public/interfaces/network_service.mojom.h"
14 #include "mojo/services/network/public/interfaces/udp_socket.mojom.h" 14 #include "mojo/services/network/public/interfaces/udp_socket.mojom.h"
15 #include "net/base/net_errors.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.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();
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 336
338 DISALLOW_COPY_AND_ASSIGN(UDPSocketAppTest); 337 DISALLOW_COPY_AND_ASSIGN(UDPSocketAppTest);
339 }; 338 };
340 339
341 } // namespace 340 } // namespace
342 341
343 TEST_F(UDPSocketAppTest, Settings) { 342 TEST_F(UDPSocketAppTest, Settings) {
344 TestCallback callback1; 343 TestCallback callback1;
345 socket_->AllowAddressReuse(callback1.callback()); 344 socket_->AllowAddressReuse(callback1.callback());
346 callback1.WaitForResult(); 345 callback1.WaitForResult();
347 EXPECT_EQ(net::OK, callback1.result()->code); 346 EXPECT_EQ(NETWORK_CODE_OK, callback1.result()->code);
348 347
349 // Should fail because the socket hasn't been bound. 348 // Should fail because the socket hasn't been bound.
350 TestCallback callback2; 349 TestCallback callback2;
351 socket_->SetSendBufferSize(1024, callback2.callback()); 350 socket_->SetSendBufferSize(1024, callback2.callback());
352 callback2.WaitForResult(); 351 callback2.WaitForResult();
353 EXPECT_NE(net::OK, callback2.result()->code); 352 EXPECT_NE(NETWORK_CODE_OK, callback2.result()->code);
354 353
355 // Should fail because the socket hasn't been bound. 354 // Should fail because the socket hasn't been bound.
356 TestCallback callback3; 355 TestCallback callback3;
357 socket_->SetReceiveBufferSize(2048, callback3.callback()); 356 socket_->SetReceiveBufferSize(2048, callback3.callback());
358 callback3.WaitForResult(); 357 callback3.WaitForResult();
359 EXPECT_NE(net::OK, callback3.result()->code); 358 EXPECT_NE(NETWORK_CODE_OK, callback3.result()->code);
360 359
361 TestCallbackWithAddressAndReceiver callback4; 360 TestCallbackWithAddressAndReceiver callback4;
362 socket_->Bind(GetLocalHostWithAnyPort(), callback4.callback()); 361 socket_->Bind(GetLocalHostWithAnyPort(), callback4.callback());
363 callback4.WaitForResult(); 362 callback4.WaitForResult();
364 EXPECT_EQ(net::OK, callback4.result()->code); 363 EXPECT_EQ(NETWORK_CODE_OK, callback4.result()->code);
365 EXPECT_NE(0u, callback4.net_address()->ipv4->port); 364 EXPECT_NE(0u, callback4.net_address()->ipv4->port);
366 365
367 // Should fail because the socket has been bound. 366 // Should fail because the socket has been bound.
368 TestCallback callback5; 367 TestCallback callback5;
369 socket_->AllowAddressReuse(callback5.callback()); 368 socket_->AllowAddressReuse(callback5.callback());
370 callback5.WaitForResult(); 369 callback5.WaitForResult();
371 EXPECT_NE(net::OK, callback5.result()->code); 370 EXPECT_NE(NETWORK_CODE_OK, callback5.result()->code);
372 371
373 TestCallback callback6; 372 TestCallback callback6;
374 socket_->SetSendBufferSize(1024, callback6.callback()); 373 socket_->SetSendBufferSize(1024, callback6.callback());
375 callback6.WaitForResult(); 374 callback6.WaitForResult();
376 EXPECT_EQ(net::OK, callback6.result()->code); 375 EXPECT_EQ(NETWORK_CODE_OK, callback6.result()->code);
377 376
378 TestCallback callback7; 377 TestCallback callback7;
379 socket_->SetReceiveBufferSize(2048, callback7.callback()); 378 socket_->SetReceiveBufferSize(2048, callback7.callback());
380 callback7.WaitForResult(); 379 callback7.WaitForResult();
381 EXPECT_EQ(net::OK, callback7.result()->code); 380 EXPECT_EQ(NETWORK_CODE_OK, callback7.result()->code);
382 381
383 TestCallbackWithUint32 callback8; 382 TestCallbackWithUint32 callback8;
384 socket_->NegotiateMaxPendingSendRequests(0, callback8.callback()); 383 socket_->NegotiateMaxPendingSendRequests(0, callback8.callback());
385 callback8.WaitForResult(); 384 callback8.WaitForResult();
386 EXPECT_GT(callback8.result(), 0u); 385 EXPECT_GT(callback8.result(), 0u);
387 386
388 TestCallbackWithUint32 callback9; 387 TestCallbackWithUint32 callback9;
389 socket_->NegotiateMaxPendingSendRequests(16, callback9.callback()); 388 socket_->NegotiateMaxPendingSendRequests(16, callback9.callback());
390 callback9.WaitForResult(); 389 callback9.WaitForResult();
391 EXPECT_GT(callback9.result(), 0u); 390 EXPECT_GT(callback9.result(), 0u);
392 } 391 }
393 392
394 TEST_F(UDPSocketAppTest, TestReadWrite) { 393 TEST_F(UDPSocketAppTest, TestReadWrite) {
395 TestCallbackWithAddressAndReceiver callback1; 394 TestCallbackWithAddressAndReceiver callback1;
396 socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback()); 395 socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback());
397 callback1.WaitForResult(); 396 callback1.WaitForResult();
398 ASSERT_EQ(net::OK, callback1.result()->code); 397 ASSERT_EQ(NETWORK_CODE_OK, callback1.result()->code);
399 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 398 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
400 399
401 receiver_binding_.Bind(callback1.receiver().Pass()); 400 receiver_binding_.Bind(callback1.receiver().Pass());
402 401
403 NetAddressPtr server_addr = callback1.net_address().Clone(); 402 NetAddressPtr server_addr = callback1.net_address().Clone();
404 403
405 UDPSocketPtr client_socket; 404 UDPSocketPtr client_socket;
406 network_service_->CreateUDPSocket(GetProxy(&client_socket)); 405 network_service_->CreateUDPSocket(GetProxy(&client_socket));
407 406
408 TestCallbackWithAddressAndReceiver callback2; 407 TestCallbackWithAddressAndReceiver callback2;
409 client_socket->Bind(GetLocalHostWithAnyPort(), callback2.callback()); 408 client_socket->Bind(GetLocalHostWithAnyPort(), callback2.callback());
410 callback2.WaitForResult(); 409 callback2.WaitForResult();
411 ASSERT_EQ(net::OK, callback2.result()->code); 410 ASSERT_EQ(NETWORK_CODE_OK, callback2.result()->code);
412 ASSERT_NE(0u, callback2.net_address()->ipv4->port); 411 ASSERT_NE(0u, callback2.net_address()->ipv4->port);
413 412
414 NetAddressPtr client_addr = callback2.net_address().Clone(); 413 NetAddressPtr client_addr = callback2.net_address().Clone();
415 414
416 const size_t kDatagramCount = 6; 415 const size_t kDatagramCount = 6;
417 const size_t kDatagramSize = 255; 416 const size_t kDatagramSize = 255;
418 socket_->ReceiveMore(kDatagramCount); 417 socket_->ReceiveMore(kDatagramCount);
419 418
420 for (size_t i = 0; i < kDatagramCount; ++i) { 419 for (size_t i = 0; i < kDatagramCount; ++i) {
421 TestCallback callback; 420 TestCallback callback;
(...skipping 14 matching lines...) Expand all
436 EXPECT_TRUE(result->addr.Equals(client_addr)); 435 EXPECT_TRUE(result->addr.Equals(client_addr));
437 EXPECT_TRUE(result->data.Equals( 436 EXPECT_TRUE(result->data.Equals(
438 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize))); 437 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize)));
439 } 438 }
440 } 439 }
441 440
442 TEST_F(UDPSocketAppTest, TestConnectedReadWrite) { 441 TEST_F(UDPSocketAppTest, TestConnectedReadWrite) {
443 TestCallbackWithAddressAndReceiver callback1; 442 TestCallbackWithAddressAndReceiver callback1;
444 socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback()); 443 socket_->Bind(GetLocalHostWithAnyPort(), callback1.callback());
445 callback1.WaitForResult(); 444 callback1.WaitForResult();
446 ASSERT_EQ(net::OK, callback1.result()->code); 445 ASSERT_EQ(NETWORK_CODE_OK, callback1.result()->code);
447 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 446 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
448 447
449 receiver_binding_.Bind(callback1.receiver().Pass()); 448 receiver_binding_.Bind(callback1.receiver().Pass());
450 449
451 NetAddressPtr server_addr = callback1.net_address().Clone(); 450 NetAddressPtr server_addr = callback1.net_address().Clone();
452 451
453 UDPSocketPtr client_socket; 452 UDPSocketPtr client_socket;
454 network_service_->CreateUDPSocket(GetProxy(&client_socket)); 453 network_service_->CreateUDPSocket(GetProxy(&client_socket));
455 454
456 TestCallbackWithAddressAndReceiver callback2; 455 TestCallbackWithAddressAndReceiver callback2;
457 client_socket->Connect(server_addr.Clone(), callback2.callback()); 456 client_socket->Connect(server_addr.Clone(), callback2.callback());
458 callback2.WaitForResult(); 457 callback2.WaitForResult();
459 ASSERT_EQ(net::OK, callback2.result()->code); 458 ASSERT_EQ(NETWORK_CODE_OK, callback2.result()->code);
460 ASSERT_NE(0u, callback2.net_address()->ipv4->port); 459 ASSERT_NE(0u, callback2.net_address()->ipv4->port);
461 460
462 UDPSocketReceiverImpl client_socket_receiver; 461 UDPSocketReceiverImpl client_socket_receiver;
463 Binding<UDPSocketReceiver> client_receiver_binding( 462 Binding<UDPSocketReceiver> client_receiver_binding(
464 &client_socket_receiver, callback2.receiver().Pass()); 463 &client_socket_receiver, callback2.receiver().Pass());
465 464
466 NetAddressPtr client_addr = callback2.net_address().Clone(); 465 NetAddressPtr client_addr = callback2.net_address().Clone();
467 466
468 const size_t kDatagramCount = 6; 467 const size_t kDatagramCount = 6;
469 const size_t kDatagramSize = 255; 468 const size_t kDatagramSize = 255;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize))); 515 CreateTestMessage(static_cast<uint8_t>(i), kDatagramSize)));
517 } 516 }
518 } 517 }
519 518
520 TEST_F(UDPSocketAppTest, TestWrapperReadWrite) { 519 TEST_F(UDPSocketAppTest, TestWrapperReadWrite) {
521 UDPSocketWrapper socket(socket_.Pass(), 4, 4); 520 UDPSocketWrapper socket(socket_.Pass(), 4, 4);
522 521
523 TestCallbackWithAddress callback1; 522 TestCallbackWithAddress callback1;
524 socket.Bind(GetLocalHostWithAnyPort(), callback1.callback()); 523 socket.Bind(GetLocalHostWithAnyPort(), callback1.callback());
525 callback1.WaitForResult(); 524 callback1.WaitForResult();
526 ASSERT_EQ(net::OK, callback1.result()->code); 525 ASSERT_EQ(NETWORK_CODE_OK, callback1.result()->code);
527 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 526 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
528 527
529 NetAddressPtr server_addr = callback1.net_address().Clone(); 528 NetAddressPtr server_addr = callback1.net_address().Clone();
530 529
531 UDPSocketPtr raw_client_socket; 530 UDPSocketPtr raw_client_socket;
532 network_service_->CreateUDPSocket(GetProxy(&raw_client_socket)); 531 network_service_->CreateUDPSocket(GetProxy(&raw_client_socket));
533 UDPSocketWrapper client_socket(raw_client_socket.Pass(), 4, 4); 532 UDPSocketWrapper client_socket(raw_client_socket.Pass(), 4, 4);
534 533
535 TestCallbackWithAddress callback2; 534 TestCallbackWithAddress callback2;
536 client_socket.Bind(GetLocalHostWithAnyPort(), callback2.callback()); 535 client_socket.Bind(GetLocalHostWithAnyPort(), callback2.callback());
537 callback2.WaitForResult(); 536 callback2.WaitForResult();
538 ASSERT_EQ(net::OK, callback2.result()->code); 537 ASSERT_EQ(NETWORK_CODE_OK, callback2.result()->code);
539 ASSERT_NE(0u, callback2.net_address()->ipv4->port); 538 ASSERT_NE(0u, callback2.net_address()->ipv4->port);
540 539
541 NetAddressPtr client_addr = callback2.net_address().Clone(); 540 NetAddressPtr client_addr = callback2.net_address().Clone();
542 541
543 const size_t kDatagramCount = 16; 542 const size_t kDatagramCount = 16;
544 const size_t kDatagramSize = 255; 543 const size_t kDatagramSize = 255;
545 544
546 for (size_t i = 1; i < kDatagramCount; ++i) { 545 for (size_t i = 1; i < kDatagramCount; ++i) {
547 scoped_ptr<TestCallback[]> send_callbacks(new TestCallback[i]); 546 scoped_ptr<TestCallback[]> send_callbacks(new TestCallback[i]);
548 scoped_ptr<TestReceiveCallback[]> receive_callbacks( 547 scoped_ptr<TestReceiveCallback[]> receive_callbacks(
(...skipping 19 matching lines...) Expand all
568 } 567 }
569 } 568 }
570 } 569 }
571 570
572 TEST_F(UDPSocketAppTest, TestWrapperConnectedReadWrite) { 571 TEST_F(UDPSocketAppTest, TestWrapperConnectedReadWrite) {
573 UDPSocketWrapper socket(socket_.Pass(), 4, 4); 572 UDPSocketWrapper socket(socket_.Pass(), 4, 4);
574 573
575 TestCallbackWithAddress callback1; 574 TestCallbackWithAddress callback1;
576 socket.Bind(GetLocalHostWithAnyPort(), callback1.callback()); 575 socket.Bind(GetLocalHostWithAnyPort(), callback1.callback());
577 callback1.WaitForResult(); 576 callback1.WaitForResult();
578 ASSERT_EQ(net::OK, callback1.result()->code); 577 ASSERT_EQ(NETWORK_CODE_OK, callback1.result()->code);
579 ASSERT_NE(0u, callback1.net_address()->ipv4->port); 578 ASSERT_NE(0u, callback1.net_address()->ipv4->port);
580 579
581 NetAddressPtr server_addr = callback1.net_address().Clone(); 580 NetAddressPtr server_addr = callback1.net_address().Clone();
582 581
583 UDPSocketPtr raw_client_socket; 582 UDPSocketPtr raw_client_socket;
584 network_service_->CreateUDPSocket(GetProxy(&raw_client_socket)); 583 network_service_->CreateUDPSocket(GetProxy(&raw_client_socket));
585 UDPSocketWrapper client_socket(raw_client_socket.Pass(), 4, 4); 584 UDPSocketWrapper client_socket(raw_client_socket.Pass(), 4, 4);
586 585
587 TestCallbackWithAddress callback2; 586 TestCallbackWithAddress callback2;
588 client_socket.Connect(server_addr.Pass(), callback2.callback()); 587 client_socket.Connect(server_addr.Pass(), callback2.callback());
589 callback2.WaitForResult(); 588 callback2.WaitForResult();
590 ASSERT_EQ(net::OK, callback2.result()->code); 589 ASSERT_EQ(NETWORK_CODE_OK, callback2.result()->code);
591 ASSERT_NE(0u, callback2.net_address()->ipv4->port); 590 ASSERT_NE(0u, callback2.net_address()->ipv4->port);
592 591
593 NetAddressPtr client_addr = callback2.net_address().Clone(); 592 NetAddressPtr client_addr = callback2.net_address().Clone();
594 593
595 const size_t kDatagramCount = 16; 594 const size_t kDatagramCount = 16;
596 const size_t kDatagramSize = 255; 595 const size_t kDatagramSize = 255;
597 596
598 // Test send using a connected socket. 597 // Test send using a connected socket.
599 for (size_t i = 1; i < kDatagramCount; ++i) { 598 for (size_t i = 1; i < kDatagramCount; ++i) {
600 scoped_ptr<TestCallback[]> send_callbacks(new TestCallback[i]); 599 scoped_ptr<TestCallback[]> send_callbacks(new TestCallback[i]);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 receive_callbacks[j].result()->code); 642 receive_callbacks[j].result()->code);
644 EXPECT_FALSE(receive_callbacks[j].src_addr()); 643 EXPECT_FALSE(receive_callbacks[j].src_addr());
645 EXPECT_TRUE(receive_callbacks[j].data().Equals( 644 EXPECT_TRUE(receive_callbacks[j].data().Equals(
646 CreateTestMessage(static_cast<uint8_t>(j), kDatagramSize))); 645 CreateTestMessage(static_cast<uint8_t>(j), kDatagramSize)));
647 } 646 }
648 } 647 }
649 } 648 }
650 649
651 } // namespace service 650 } // namespace service
652 } // namespace mojo 651 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/network/public/interfaces/network_error.mojom ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698