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

Side by Side Diff: mojo/edk/system/raw_channel_unittest.cc

Issue 1529303004: Convert Pass()→std::move() in mojo/edk/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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/edk/system/raw_channel_posix.cc ('k') | mojo/edk/system/routed_raw_channel.cc » ('j') | 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 "mojo/edk/system/raw_channel.h" 5 #include "mojo/edk/system/raw_channel.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <stdio.h> 8 #include <stdio.h>
9 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/files/file_util.h" 14 #include "base/files/file_util.h"
15 #include "base/files/scoped_file.h" 15 #include "base/files/scoped_file.h"
16 #include "base/files/scoped_temp_dir.h" 16 #include "base/files/scoped_temp_dir.h"
17 #include "base/location.h" 17 #include "base/location.h"
18 #include "base/logging.h" 18 #include "base/logging.h"
19 #include "base/memory/scoped_ptr.h" 19 #include "base/memory/scoped_ptr.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 190
191 // The start of the received data should always be on a message boundary. 191 // The start of the received data should always be on a message boundary.
192 std::vector<unsigned char> bytes_; 192 std::vector<unsigned char> bytes_;
193 193
194 MOJO_DISALLOW_COPY_AND_ASSIGN(TestMessageReaderAndChecker); 194 MOJO_DISALLOW_COPY_AND_ASSIGN(TestMessageReaderAndChecker);
195 }; 195 };
196 196
197 // Tests writing (and verifies reading using our own custom reader). 197 // Tests writing (and verifies reading using our own custom reader).
198 TEST_F(RawChannelTest, WriteMessage) { 198 TEST_F(RawChannelTest, WriteMessage) {
199 WriteOnlyRawChannelDelegate delegate; 199 WriteOnlyRawChannelDelegate delegate;
200 RawChannel* rc = RawChannel::Create(handles[0].Pass()); 200 RawChannel* rc = RawChannel::Create(std::move(handles[0]));
201 TestMessageReaderAndChecker checker(handles[1].get()); 201 TestMessageReaderAndChecker checker(handles[1].get());
202 internal::g_io_thread_task_runner->PostTask( 202 internal::g_io_thread_task_runner->PostTask(
203 FROM_HERE, 203 FROM_HERE,
204 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate))); 204 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate)));
205 205
206 // Write and read, for a variety of sizes. 206 // Write and read, for a variety of sizes.
207 for (uint32_t size = 1; size < 5 * 1000 * 1000; size += size / 2 + 1) { 207 for (uint32_t size = 1; size < 5 * 1000 * 1000; size += size / 2 + 1) {
208 EXPECT_TRUE(rc->WriteMessage(MakeTestMessage(size))); 208 EXPECT_TRUE(rc->WriteMessage(MakeTestMessage(size)));
209 EXPECT_TRUE(checker.ReadAndCheckNextMessage(size)) << size; 209 EXPECT_TRUE(checker.ReadAndCheckNextMessage(size)) << size;
210 } 210 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 base::Lock lock_; // Protects the following members. 276 base::Lock lock_; // Protects the following members.
277 std::vector<uint32_t> expected_sizes_; 277 std::vector<uint32_t> expected_sizes_;
278 size_t position_; 278 size_t position_;
279 279
280 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadCheckerRawChannelDelegate); 280 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadCheckerRawChannelDelegate);
281 }; 281 };
282 282
283 // Tests reading (writing using our own custom writer). 283 // Tests reading (writing using our own custom writer).
284 TEST_F(RawChannelTest, OnReadMessage) { 284 TEST_F(RawChannelTest, OnReadMessage) {
285 ReadCheckerRawChannelDelegate delegate; 285 ReadCheckerRawChannelDelegate delegate;
286 RawChannel* rc = RawChannel::Create(handles[0].Pass()); 286 RawChannel* rc = RawChannel::Create(std::move(handles[0]));
287 internal::g_io_thread_task_runner->PostTask( 287 internal::g_io_thread_task_runner->PostTask(
288 FROM_HERE, 288 FROM_HERE,
289 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate))); 289 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate)));
290 290
291 // Write and read, for a variety of sizes. 291 // Write and read, for a variety of sizes.
292 for (uint32_t size = 1; size < 5 * 1000 * 1000; size += size / 2 + 1) { 292 for (uint32_t size = 1; size < 5 * 1000 * 1000; size += size / 2 + 1) {
293 delegate.SetExpectedSizes(std::vector<uint32_t>(1, size)); 293 delegate.SetExpectedSizes(std::vector<uint32_t>(1, size));
294 294
295 EXPECT_TRUE(WriteTestMessageToHandle(handles[1].get(), size)); 295 EXPECT_TRUE(WriteTestMessageToHandle(handles[1].get(), size));
296 296
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 size_t count_; 373 size_t count_;
374 374
375 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadCountdownRawChannelDelegate); 375 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadCountdownRawChannelDelegate);
376 }; 376 };
377 377
378 TEST_F(RawChannelTest, WriteMessageAndOnReadMessage) { 378 TEST_F(RawChannelTest, WriteMessageAndOnReadMessage) {
379 static const size_t kNumWriterThreads = 10; 379 static const size_t kNumWriterThreads = 10;
380 static const size_t kNumWriteMessagesPerThread = 400; 380 static const size_t kNumWriteMessagesPerThread = 400;
381 381
382 WriteOnlyRawChannelDelegate writer_delegate; 382 WriteOnlyRawChannelDelegate writer_delegate;
383 RawChannel* writer_rc = RawChannel::Create(handles[0].Pass()); 383 RawChannel* writer_rc = RawChannel::Create(std::move(handles[0]));
384 internal::g_io_thread_task_runner->PostTask( 384 internal::g_io_thread_task_runner->PostTask(
385 FROM_HERE, 385 FROM_HERE,
386 base::Bind(&InitOnIOThread, writer_rc, 386 base::Bind(&InitOnIOThread, writer_rc,
387 base::Unretained(&writer_delegate))); 387 base::Unretained(&writer_delegate)));
388 388
389 ReadCountdownRawChannelDelegate reader_delegate(kNumWriterThreads * 389 ReadCountdownRawChannelDelegate reader_delegate(kNumWriterThreads *
390 kNumWriteMessagesPerThread); 390 kNumWriteMessagesPerThread);
391 RawChannel* reader_rc = RawChannel::Create(handles[1].Pass()); 391 RawChannel* reader_rc = RawChannel::Create(std::move(handles[1]));
392 internal::g_io_thread_task_runner->PostTask( 392 internal::g_io_thread_task_runner->PostTask(
393 FROM_HERE, 393 FROM_HERE,
394 base::Bind(&InitOnIOThread, reader_rc, 394 base::Bind(&InitOnIOThread, reader_rc,
395 base::Unretained(&reader_delegate))); 395 base::Unretained(&reader_delegate)));
396 396
397 { 397 {
398 ScopedVector<RawChannelWriterThread> writer_threads; 398 ScopedVector<RawChannelWriterThread> writer_threads;
399 for (size_t i = 0; i < kNumWriterThreads; i++) { 399 for (size_t i = 0; i < kNumWriterThreads; i++) {
400 writer_threads.push_back(new RawChannelWriterThread( 400 writer_threads.push_back(new RawChannelWriterThread(
401 writer_rc, kNumWriteMessagesPerThread)); 401 writer_rc, kNumWriteMessagesPerThread));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 472
473 bool expecting_read_error_; 473 bool expecting_read_error_;
474 bool expecting_write_error_; 474 bool expecting_write_error_;
475 475
476 MOJO_DISALLOW_COPY_AND_ASSIGN(ErrorRecordingRawChannelDelegate); 476 MOJO_DISALLOW_COPY_AND_ASSIGN(ErrorRecordingRawChannelDelegate);
477 }; 477 };
478 478
479 // Tests (fatal) errors. 479 // Tests (fatal) errors.
480 TEST_F(RawChannelTest, OnError) { 480 TEST_F(RawChannelTest, OnError) {
481 ErrorRecordingRawChannelDelegate delegate(0, true, true); 481 ErrorRecordingRawChannelDelegate delegate(0, true, true);
482 RawChannel* rc = RawChannel::Create(handles[0].Pass()); 482 RawChannel* rc = RawChannel::Create(std::move(handles[0]));
483 internal::g_io_thread_task_runner->PostTask( 483 internal::g_io_thread_task_runner->PostTask(
484 FROM_HERE, 484 FROM_HERE,
485 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate))); 485 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate)));
486 FlushIOThread(); 486 FlushIOThread();
487 487
488 // Close the handle of the other end, which should make writing fail. 488 // Close the handle of the other end, which should make writing fail.
489 handles[1].reset(); 489 handles[1].reset();
490 490
491 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1))); 491 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1)));
492 492
(...skipping 23 matching lines...) Expand all
516 for (size_t i = 0; i < kMessageCount; 516 for (size_t i = 0; i < kMessageCount;
517 i++, message_size += message_size / 2 + 1) 517 i++, message_size += message_size / 2 + 1)
518 EXPECT_TRUE(WriteTestMessageToHandle(handles[1].get(), message_size)); 518 EXPECT_TRUE(WriteTestMessageToHandle(handles[1].get(), message_size));
519 519
520 // Close the other end, which should make writing fail. 520 // Close the other end, which should make writing fail.
521 handles[1].reset(); 521 handles[1].reset();
522 522
523 // Only start up reading here. The system buffer should still contain the 523 // Only start up reading here. The system buffer should still contain the
524 // messages that were written. 524 // messages that were written.
525 ErrorRecordingRawChannelDelegate delegate(kMessageCount, true, true); 525 ErrorRecordingRawChannelDelegate delegate(kMessageCount, true, true);
526 RawChannel* rc = RawChannel::Create(handles[0].Pass()); 526 RawChannel* rc = RawChannel::Create(std::move(handles[0]));
527 internal::g_io_thread_task_runner->PostTask( 527 internal::g_io_thread_task_runner->PostTask(
528 FROM_HERE, 528 FROM_HERE,
529 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate))); 529 base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate)));
530 FlushIOThread(); 530 FlushIOThread();
531 531
532 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1))); 532 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1)));
533 533
534 // We should definitely get a write error. 534 // We should definitely get a write error.
535 delegate.WaitForWriteError(); 535 delegate.WaitForWriteError();
536 536
(...skipping 28 matching lines...) Expand all
565 ASSERT_EQ(2u, platform_handles->size()); 565 ASSERT_EQ(2u, platform_handles->size());
566 ScopedPlatformHandle h1(platform_handles->at(0)); 566 ScopedPlatformHandle h1(platform_handles->at(0));
567 EXPECT_TRUE(h1.is_valid()); 567 EXPECT_TRUE(h1.is_valid());
568 ScopedPlatformHandle h2(platform_handles->at(1)); 568 ScopedPlatformHandle h2(platform_handles->at(1));
569 EXPECT_TRUE(h2.is_valid()); 569 EXPECT_TRUE(h2.is_valid());
570 platform_handles->clear(); 570 platform_handles->clear();
571 571
572 { 572 {
573 char buffer[100] = {}; 573 char buffer[100] = {};
574 574
575 base::ScopedFILE fp(test::FILEFromPlatformHandle(h1.Pass(), "rb")); 575 base::ScopedFILE fp(test::FILEFromPlatformHandle(std::move(h1), "rb"));
576 EXPECT_TRUE(fp); 576 EXPECT_TRUE(fp);
577 rewind(fp.get()); 577 rewind(fp.get());
578 EXPECT_EQ(1u, fread(buffer, 1, sizeof(buffer), fp.get())); 578 EXPECT_EQ(1u, fread(buffer, 1, sizeof(buffer), fp.get()));
579 EXPECT_EQ('1', buffer[0]); 579 EXPECT_EQ('1', buffer[0]);
580 } 580 }
581 581
582 { 582 {
583 char buffer[100] = {}; 583 char buffer[100] = {};
584 base::ScopedFILE fp(test::FILEFromPlatformHandle(h2.Pass(), "rb")); 584 base::ScopedFILE fp(test::FILEFromPlatformHandle(std::move(h2), "rb"));
585 EXPECT_TRUE(fp); 585 EXPECT_TRUE(fp);
586 rewind(fp.get()); 586 rewind(fp.get());
587 EXPECT_EQ(1u, fread(buffer, 1, sizeof(buffer), fp.get())); 587 EXPECT_EQ(1u, fread(buffer, 1, sizeof(buffer), fp.get()));
588 EXPECT_EQ('2', buffer[0]); 588 EXPECT_EQ('2', buffer[0]);
589 } 589 }
590 590
591 done_event_.Signal(); 591 done_event_.Signal();
592 } 592 }
593 void OnError(Error error) override { 593 void OnError(Error error) override {
594 // We'll get a read (shutdown) error when the connection is closed. 594 // We'll get a read (shutdown) error when the connection is closed.
595 CHECK_EQ(error, ERROR_READ_SHUTDOWN); 595 CHECK_EQ(error, ERROR_READ_SHUTDOWN);
596 } 596 }
597 597
598 void Wait() { done_event_.Wait(); } 598 void Wait() { done_event_.Wait(); }
599 599
600 private: 600 private:
601 base::WaitableEvent done_event_; 601 base::WaitableEvent done_event_;
602 602
603 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadPlatformHandlesCheckerRawChannelDelegate); 603 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadPlatformHandlesCheckerRawChannelDelegate);
604 }; 604 };
605 605
606 TEST_F(RawChannelTest, ReadWritePlatformHandles) { 606 TEST_F(RawChannelTest, ReadWritePlatformHandles) {
607 base::ScopedTempDir temp_dir; 607 base::ScopedTempDir temp_dir;
608 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 608 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
609 609
610 WriteOnlyRawChannelDelegate write_delegate; 610 WriteOnlyRawChannelDelegate write_delegate;
611 RawChannel* rc_write = RawChannel::Create(handles[0].Pass()); 611 RawChannel* rc_write = RawChannel::Create(std::move(handles[0]));
612 internal::g_io_thread_task_runner->PostTask( 612 internal::g_io_thread_task_runner->PostTask(
613 FROM_HERE, 613 FROM_HERE,
614 base::Bind(&InitOnIOThread, rc_write, base::Unretained(&write_delegate))); 614 base::Bind(&InitOnIOThread, rc_write, base::Unretained(&write_delegate)));
615 615
616 ReadPlatformHandlesCheckerRawChannelDelegate read_delegate; 616 ReadPlatformHandlesCheckerRawChannelDelegate read_delegate;
617 RawChannel* rc_read = RawChannel::Create(handles[1].Pass()); 617 RawChannel* rc_read = RawChannel::Create(std::move(handles[1]));
618 internal::g_io_thread_task_runner->PostTask( 618 internal::g_io_thread_task_runner->PostTask(
619 FROM_HERE, 619 FROM_HERE,
620 base::Bind(&InitOnIOThread, rc_read, base::Unretained(&read_delegate))); 620 base::Bind(&InitOnIOThread, rc_read, base::Unretained(&read_delegate)));
621 621
622 base::FilePath unused; 622 base::FilePath unused;
623 base::ScopedFILE fp1( 623 base::ScopedFILE fp1(
624 base::CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused)); 624 base::CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused));
625 EXPECT_EQ(1u, fwrite("1", 1, 1, fp1.get())); 625 EXPECT_EQ(1u, fwrite("1", 1, 1, fp1.get()));
626 base::ScopedFILE fp2( 626 base::ScopedFILE fp2(
627 base::CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused)); 627 base::CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused));
628 EXPECT_EQ(1u, fwrite("2", 1, 1, fp2.get())); 628 EXPECT_EQ(1u, fwrite("2", 1, 1, fp2.get()));
629 629
630 { 630 {
631 const char kHello[] = "hello"; 631 const char kHello[] = "hello";
632 ScopedPlatformHandleVectorPtr platform_handles(new PlatformHandleVector()); 632 ScopedPlatformHandleVectorPtr platform_handles(new PlatformHandleVector());
633 platform_handles->push_back( 633 platform_handles->push_back(
634 test::PlatformHandleFromFILE(fp1.Pass()).release()); 634 test::PlatformHandleFromFILE(std::move(fp1)).release());
635 platform_handles->push_back( 635 platform_handles->push_back(
636 test::PlatformHandleFromFILE(fp2.Pass()).release()); 636 test::PlatformHandleFromFILE(std::move(fp2)).release());
637 637
638 scoped_ptr<MessageInTransit> message( 638 scoped_ptr<MessageInTransit> message(
639 new MessageInTransit(MessageInTransit::Type::MESSAGE, 639 new MessageInTransit(MessageInTransit::Type::MESSAGE,
640 sizeof(kHello), kHello)); 640 sizeof(kHello), kHello));
641 message->SetTransportData(make_scoped_ptr(new TransportData( 641 message->SetTransportData(make_scoped_ptr(
642 platform_handles.Pass(), rc_write->GetSerializedPlatformHandleSize()))); 642 new TransportData(std::move(platform_handles),
643 EXPECT_TRUE(rc_write->WriteMessage(message.Pass())); 643 rc_write->GetSerializedPlatformHandleSize())));
644 EXPECT_TRUE(rc_write->WriteMessage(std::move(message)));
644 } 645 }
645 646
646 read_delegate.Wait(); 647 read_delegate.Wait();
647 648
648 internal::g_io_thread_task_runner->PostTask( 649 internal::g_io_thread_task_runner->PostTask(
649 FROM_HERE, 650 FROM_HERE,
650 base::Bind(&RawChannel::Shutdown, base::Unretained(rc_read))); 651 base::Bind(&RawChannel::Shutdown, base::Unretained(rc_read)));
651 internal::g_io_thread_task_runner->PostTask( 652 internal::g_io_thread_task_runner->PostTask(
652 FROM_HERE, 653 FROM_HERE,
653 base::Bind(&RawChannel::Shutdown, base::Unretained(rc_write))); 654 base::Bind(&RawChannel::Shutdown, base::Unretained(rc_write)));
654 } 655 }
655 656
656 } // namespace 657 } // namespace
657 } // namespace edk 658 } // namespace edk
658 } // namespace mojo 659 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/raw_channel_posix.cc ('k') | mojo/edk/system/routed_raw_channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698