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

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

Issue 1526923006: [mojo] Implement data pipe using a shared buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 360
361 // Read one element. 361 // Read one element.
362 elements[0] = -1; 362 elements[0] = -1;
363 elements[1] = -1; 363 elements[1] = -1;
364 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0])); 364 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
365 ASSERT_EQ(MOJO_RESULT_OK, ReadData(elements, &num_bytes, true, false)); 365 ASSERT_EQ(MOJO_RESULT_OK, ReadData(elements, &num_bytes, true, false));
366 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes); 366 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
367 ASSERT_EQ(123, elements[0]); 367 ASSERT_EQ(123, elements[0]);
368 ASSERT_EQ(-1, elements[1]); 368 ASSERT_EQ(-1, elements[1]);
369 369
370 // Wait until we can write.
371 hss = MojoHandleSignalsState();
372 ASSERT_EQ(MOJO_RESULT_OK, MojoWait(producer_, MOJO_HANDLE_SIGNAL_WRITABLE,
373 MOJO_DEADLINE_INDEFINITE, &hss));
374 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
375 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
376 hss.satisfiable_signals);
377
370 // Try writing, using a two-phase write. 378 // Try writing, using a two-phase write.
371 void* buffer = nullptr; 379 void* buffer = nullptr;
372 num_bytes = static_cast<uint32_t>(3u * sizeof(elements[0])); 380 num_bytes = static_cast<uint32_t>(3u * sizeof(elements[0]));
373 ASSERT_EQ(MOJO_RESULT_OK, BeginWriteData(&buffer, &num_bytes)); 381 ASSERT_EQ(MOJO_RESULT_OK, BeginWriteData(&buffer, &num_bytes));
374 EXPECT_TRUE(buffer); 382 EXPECT_TRUE(buffer);
375 ASSERT_GE(num_bytes, static_cast<uint32_t>(1u * sizeof(elements[0]))); 383 ASSERT_GE(num_bytes, static_cast<uint32_t>(1u * sizeof(elements[0])));
376 384
377 static_cast<int32_t*>(buffer)[0] = 789; 385 static_cast<int32_t*>(buffer)[0] = 789;
378 ASSERT_EQ(MOJO_RESULT_OK, EndWriteData(static_cast<uint32_t>( 386 ASSERT_EQ(MOJO_RESULT_OK, EndWriteData(static_cast<uint32_t>(
379 1u * sizeof(elements[0])))); 387 1u * sizeof(elements[0]))));
380 388
381 // Read one element, using a two-phase read. 389 // Read one element, using a two-phase read.
382 const void* read_buffer = nullptr; 390 const void* read_buffer = nullptr;
383 num_bytes = 0u; 391 num_bytes = 0u;
384 ASSERT_EQ(MOJO_RESULT_OK, 392 ASSERT_EQ(MOJO_RESULT_OK,
385 BeginReadData(&read_buffer, &num_bytes, false)); 393 BeginReadData(&read_buffer, &num_bytes, false));
386 EXPECT_TRUE(read_buffer); 394 EXPECT_TRUE(read_buffer);
387 // Since we only read one element (after having written three in all), the 395 // Since we only read one element (after having written three in all), the
388 // two-phase read should only allow us to read one. This checks an 396 // two-phase read should only allow us to read one. This checks an
389 // implementation detail! 397 // implementation detail!
390 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes); 398 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
391 ASSERT_EQ(456, static_cast<const int32_t*>(read_buffer)[0]); 399 ASSERT_EQ(456, static_cast<const int32_t*>(read_buffer)[0]);
392 ASSERT_EQ(MOJO_RESULT_OK, EndReadData(static_cast<uint32_t>( 400 ASSERT_EQ(MOJO_RESULT_OK, EndReadData(static_cast<uint32_t>(
393 1u * sizeof(elements[0])))); 401 1u * sizeof(elements[0]))));
394 402
403 // Wait until we can write.
404 hss = MojoHandleSignalsState();
405 ASSERT_EQ(MOJO_RESULT_OK, MojoWait(producer_, MOJO_HANDLE_SIGNAL_WRITABLE,
406 MOJO_DEADLINE_INDEFINITE, &hss));
407 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
408 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
409 hss.satisfiable_signals);
410
395 // Write one element. 411 // Write one element.
396 elements[0] = 123; 412 elements[0] = 123;
397 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0])); 413 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
398 ASSERT_EQ(MOJO_RESULT_OK, WriteData(elements, &num_bytes)); 414 ASSERT_EQ(MOJO_RESULT_OK, WriteData(elements, &num_bytes));
399 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes); 415 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
400 416
401 // Close the consumer. 417 // Close the consumer.
402 CloseConsumer(); 418 CloseConsumer();
403 419
404 // It should now be never-writable. 420 // It should now be never-writable.
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 MOJO_DEADLINE_INDEFINITE, &hss)); 571 MOJO_DEADLINE_INDEFINITE, &hss));
556 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); 572 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals);
557 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, 573 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
558 hss.satisfiable_signals); 574 hss.satisfiable_signals);
559 575
560 // Wait for the peer closed signal. 576 // Wait for the peer closed signal.
561 hss = MojoHandleSignalsState(); 577 hss = MojoHandleSignalsState();
562 ASSERT_EQ(MOJO_RESULT_OK, 578 ASSERT_EQ(MOJO_RESULT_OK,
563 MojoWait(consumer_, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 579 MojoWait(consumer_, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
564 MOJO_DEADLINE_INDEFINITE, &hss)); 580 MOJO_DEADLINE_INDEFINITE, &hss));
565 ASSERT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_PEER_CLOSED) != 0); 581 ASSERT_NE(0u, hss.satisfied_signals & MOJO_HANDLE_SIGNAL_PEER_CLOSED);
566 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, 582 ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
567 hss.satisfiable_signals); 583 hss.satisfiable_signals);
568 584
569 // Read one element. 585 // Read one element.
570 elements[0] = -1; 586 elements[0] = -1;
571 elements[1] = -1; 587 elements[1] = -1;
572 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0])); 588 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
573 ASSERT_EQ(MOJO_RESULT_OK, ReadData(elements, &num_bytes, true)); 589 ASSERT_EQ(MOJO_RESULT_OK, ReadData(elements, &num_bytes, true));
574 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes); 590 ASSERT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
575 ASSERT_EQ(789, elements[0]); 591 ASSERT_EQ(789, elements[0]);
(...skipping 1046 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 ASSERT_EQ(sizeof(read_data), num_bytes); 1638 ASSERT_EQ(sizeof(read_data), num_bytes);
1623 ASSERT_EQ(data, read_data); 1639 ASSERT_EQ(data, read_data);
1624 1640
1625 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(pipe0)); 1641 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(pipe0));
1626 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(pipe1)); 1642 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(pipe1));
1627 } 1643 }
1628 1644
1629 } // namespace 1645 } // namespace
1630 } // namespace edk 1646 } // namespace edk
1631 } // namespace mojo 1647 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698