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

Side by Side Diff: mojo/public/c/system/tests/core_unittest.cc

Issue 1876353006: Add Mojo{Set,Get}DataPipeProducerOptions() to the NaCl system thunks. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: gah Created 4 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 // This file tests the C API. 5 // This file tests the C API.
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "mojo/public/c/system/buffer.h" 9 #include "mojo/public/c/system/buffer.h"
10 #include "mojo/public/c/system/data_pipe.h" 10 #include "mojo/public/c/system/data_pipe.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 // Message pipe: 56 // Message pipe:
57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
58 MojoWriteMessage(MOJO_HANDLE_INVALID, buffer, 0u, nullptr, 0u, 58 MojoWriteMessage(MOJO_HANDLE_INVALID, buffer, 0u, nullptr, 0u,
59 MOJO_WRITE_MESSAGE_FLAG_NONE)); 59 MOJO_WRITE_MESSAGE_FLAG_NONE));
60 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 60 buffer_size = static_cast<uint32_t>(sizeof(buffer));
61 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 61 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
62 MojoReadMessage(MOJO_HANDLE_INVALID, buffer, &buffer_size, nullptr, 62 MojoReadMessage(MOJO_HANDLE_INVALID, buffer, &buffer_size, nullptr,
63 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); 63 nullptr, MOJO_READ_MESSAGE_FLAG_NONE));
64 64
65 // Data pipe: 65 // Data pipe:
66 MojoDataPipeProducerOptions dpp_options = {
67 sizeof(MojoDataPipeProducerOptions), 0u};
68 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
69 MojoSetDataPipeProducerOptions(MOJO_HANDLE_INVALID, &dpp_options));
70 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
71 MojoGetDataPipeProducerOptions(
72 MOJO_HANDLE_INVALID, &dpp_options,
73 static_cast<uint32_t>(sizeof(dpp_options))));
66 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 74 buffer_size = static_cast<uint32_t>(sizeof(buffer));
67 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 75 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
68 MojoWriteData(MOJO_HANDLE_INVALID, buffer, &buffer_size, 76 MojoWriteData(MOJO_HANDLE_INVALID, buffer, &buffer_size,
69 MOJO_WRITE_DATA_FLAG_NONE)); 77 MOJO_WRITE_DATA_FLAG_NONE));
70 write_pointer = nullptr; 78 write_pointer = nullptr;
71 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 79 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
72 MojoBeginWriteData(MOJO_HANDLE_INVALID, &write_pointer, 80 MojoBeginWriteData(MOJO_HANDLE_INVALID, &write_pointer,
73 &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); 81 &buffer_size, MOJO_WRITE_DATA_FLAG_NONE));
74 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 82 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
75 MojoEndWriteData(MOJO_HANDLE_INVALID, 1u)); 83 MojoEndWriteData(MOJO_HANDLE_INVALID, 1u));
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state)); 318 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state));
311 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); 319 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
312 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); 320 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
313 321
314 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); 322 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc));
315 323
316 // TODO(vtl): Test the other way around -- closing the consumer should make 324 // TODO(vtl): Test the other way around -- closing the consumer should make
317 // the producer never-writable? 325 // the producer never-writable?
318 } 326 }
319 327
320 // TODO(vtl): Enable once I've added support for NaCl.
321 #ifndef __native_client__
322 TEST(CoreTest, DataPipeWriteThreshold) { 328 TEST(CoreTest, DataPipeWriteThreshold) {
323 const MojoCreateDataPipeOptions options = { 329 const MojoCreateDataPipeOptions options = {
324 static_cast<uint32_t>( 330 static_cast<uint32_t>(
325 sizeof(MojoCreateDataPipeOptions)), // |struct_size|. 331 sizeof(MojoCreateDataPipeOptions)), // |struct_size|.
326 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 332 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
327 2u, // |element_num_bytes|. 333 2u, // |element_num_bytes|.
328 4u // |capacity_num_bytes|. 334 4u // |capacity_num_bytes|.
329 }; 335 };
330 MojoHandle hp = MOJO_HANDLE_INVALID; 336 MojoHandle hp = MOJO_HANDLE_INVALID;
331 MojoHandle hc = MOJO_HANDLE_INVALID; 337 MojoHandle hc = MOJO_HANDLE_INVALID;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 static const uint16_t kTestElem = 12345u; 376 static const uint16_t kTestElem = 12345u;
371 uint32_t num_bytes = 2u; 377 uint32_t num_bytes = 2u;
372 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kTestElem, &num_bytes, 378 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kTestElem, &num_bytes,
373 MOJO_WRITE_MESSAGE_FLAG_NONE)); 379 MOJO_WRITE_MESSAGE_FLAG_NONE));
374 EXPECT_EQ(2u, num_bytes); 380 EXPECT_EQ(2u, num_bytes);
375 381
376 // Should still have the write threshold signal. 382 // Should still have the write threshold signal.
377 EXPECT_EQ(MOJO_RESULT_OK, 383 EXPECT_EQ(MOJO_RESULT_OK,
378 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr)); 384 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr));
379 385
380 // Do a two-phase write of another element. 386 // Write another element.
381 void* write_pointer = nullptr; 387 static const uint16_t kAnotherTestElem = 12345u;
382 num_bytes = 0u; 388 num_bytes = 2u;
383 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginWriteData(hp, &write_pointer, &num_bytes, 389 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kAnotherTestElem, &num_bytes,
384 MOJO_WRITE_DATA_FLAG_NONE)); 390 MOJO_WRITE_MESSAGE_FLAG_NONE));
385 ASSERT_TRUE(write_pointer); 391 EXPECT_EQ(2u, num_bytes);
386 ASSERT_EQ(2u, num_bytes);
387 *static_cast<uint16_t*>(write_pointer) = 6789u;
388 EXPECT_EQ(MOJO_RESULT_OK, MojoEndWriteData(hp, 2u));
389 392
390 // Should no longer have the write threshold signal. 393 // Should no longer have the write threshold signal.
391 state = MojoHandleSignalsState(); 394 state = MojoHandleSignalsState();
392 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 395 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
393 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); 396 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state));
394 EXPECT_EQ(0u, state.satisfied_signals); 397 EXPECT_EQ(0u, state.satisfied_signals);
395 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 398 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
396 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 399 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
397 state.satisfiable_signals); 400 state.satisfiable_signals);
398 401
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 446
444 // The write threshold signal should now be unsatisfiable. 447 // The write threshold signal should now be unsatisfiable.
445 state = MojoHandleSignalsState(); 448 state = MojoHandleSignalsState();
446 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 449 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
447 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); 450 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state));
448 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); 451 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
449 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); 452 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
450 453
451 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); 454 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp));
452 } 455 }
453 #endif
454 456
455 TEST(CoreTest, DataPipeReadThreshold) { 457 TEST(CoreTest, DataPipeReadThreshold) {
456 MojoHandle hp = MOJO_HANDLE_INVALID; 458 MojoHandle hp = MOJO_HANDLE_INVALID;
457 MojoHandle hc = MOJO_HANDLE_INVALID; 459 MojoHandle hc = MOJO_HANDLE_INVALID;
458 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc)); 460 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc));
459 EXPECT_NE(hp, MOJO_HANDLE_INVALID); 461 EXPECT_NE(hp, MOJO_HANDLE_INVALID);
460 EXPECT_NE(hc, MOJO_HANDLE_INVALID); 462 EXPECT_NE(hc, MOJO_HANDLE_INVALID);
461 EXPECT_NE(hc, hp); 463 EXPECT_NE(hc, hp);
462 464
463 MojoDataPipeConsumerOptions copts; 465 MojoDataPipeConsumerOptions copts;
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 643
642 TEST(CoreTest, MinimalCppTest) { 644 TEST(CoreTest, MinimalCppTest) {
643 const char* failure = MinimalCppTest(); 645 const char* failure = MinimalCppTest();
644 EXPECT_FALSE(failure) << failure; 646 EXPECT_FALSE(failure) << failure;
645 } 647 }
646 648
647 // TODO(vtl): Add multi-threaded tests. 649 // TODO(vtl): Add multi-threaded tests.
648 650
649 } // namespace 651 } // namespace
650 } // namespace mojo 652 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/nacl/sfi/nacl_bindings_generator/interface.py ('k') | mojo/public/platform/nacl/libmojo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698