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

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

Issue 2056763003: EDK: Change Awakable::Awake()'s context, etc., to be a uint64_t. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: doh Created 4 years, 6 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 // This file contains tests that are shared between different implementations of 5 // This file contains tests that are shared between different implementations of
6 // |DataPipeImpl|. 6 // |DataPipeImpl|.
7 7
8 #include "mojo/edk/system/data_pipe_impl.h" 8 #include "mojo/edk/system/data_pipe_impl.h"
9 9
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 } 134 }
135 MojoResult ProducerBeginWriteData(UserPointer<void*> buffer, 135 MojoResult ProducerBeginWriteData(UserPointer<void*> buffer,
136 UserPointer<uint32_t> buffer_num_bytes) { 136 UserPointer<uint32_t> buffer_num_bytes) {
137 return dpp()->ProducerBeginWriteData(buffer, buffer_num_bytes); 137 return dpp()->ProducerBeginWriteData(buffer, buffer_num_bytes);
138 } 138 }
139 MojoResult ProducerEndWriteData(uint32_t num_bytes_written) { 139 MojoResult ProducerEndWriteData(uint32_t num_bytes_written) {
140 return dpp()->ProducerEndWriteData(num_bytes_written); 140 return dpp()->ProducerEndWriteData(num_bytes_written);
141 } 141 }
142 MojoResult ProducerAddAwakable(Awakable* awakable, 142 MojoResult ProducerAddAwakable(Awakable* awakable,
143 MojoHandleSignals signals, 143 MojoHandleSignals signals,
144 uint32_t context, 144 uint64_t context,
145 HandleSignalsState* signals_state) { 145 HandleSignalsState* signals_state) {
146 return dpp()->ProducerAddAwakable(awakable, signals, context, 146 return dpp()->ProducerAddAwakable(awakable, signals, context,
147 signals_state); 147 signals_state);
148 } 148 }
149 void ProducerRemoveAwakable(Awakable* awakable, 149 void ProducerRemoveAwakable(Awakable* awakable,
150 HandleSignalsState* signals_state) { 150 HandleSignalsState* signals_state) {
151 return dpp()->ProducerRemoveAwakable(awakable, signals_state); 151 return dpp()->ProducerRemoveAwakable(awakable, signals_state);
152 } 152 }
153 153
154 void ConsumerClose() { helper_->ConsumerClose(); } 154 void ConsumerClose() { helper_->ConsumerClose(); }
(...skipping 18 matching lines...) Expand all
173 } 173 }
174 MojoResult ConsumerBeginReadData(UserPointer<const void*> buffer, 174 MojoResult ConsumerBeginReadData(UserPointer<const void*> buffer,
175 UserPointer<uint32_t> buffer_num_bytes) { 175 UserPointer<uint32_t> buffer_num_bytes) {
176 return dpc()->ConsumerBeginReadData(buffer, buffer_num_bytes); 176 return dpc()->ConsumerBeginReadData(buffer, buffer_num_bytes);
177 } 177 }
178 MojoResult ConsumerEndReadData(uint32_t num_bytes_read) { 178 MojoResult ConsumerEndReadData(uint32_t num_bytes_read) {
179 return dpc()->ConsumerEndReadData(num_bytes_read); 179 return dpc()->ConsumerEndReadData(num_bytes_read);
180 } 180 }
181 MojoResult ConsumerAddAwakable(Awakable* awakable, 181 MojoResult ConsumerAddAwakable(Awakable* awakable,
182 MojoHandleSignals signals, 182 MojoHandleSignals signals,
183 uint32_t context, 183 uint64_t context,
184 HandleSignalsState* signals_state) { 184 HandleSignalsState* signals_state) {
185 return dpc()->ConsumerAddAwakable(awakable, signals, context, 185 return dpc()->ConsumerAddAwakable(awakable, signals, context,
186 signals_state); 186 signals_state);
187 } 187 }
188 void ConsumerRemoveAwakable(Awakable* awakable, 188 void ConsumerRemoveAwakable(Awakable* awakable,
189 HandleSignalsState* signals_state) { 189 HandleSignalsState* signals_state) {
190 return dpc()->ConsumerRemoveAwakable(awakable, signals_state); 190 return dpc()->ConsumerRemoveAwakable(awakable, signals_state);
191 } 191 }
192 192
193 private: 193 private:
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 HandleTransport transport(test::HandleTryStartTransport(handle_to_send)); 285 HandleTransport transport(test::HandleTryStartTransport(handle_to_send));
286 ASSERT_TRUE(transport.is_valid()); 286 ASSERT_TRUE(transport.is_valid());
287 287
288 std::vector<HandleTransport> transports; 288 std::vector<HandleTransport> transports;
289 transports.push_back(transport); 289 transports.push_back(transport);
290 ASSERT_EQ(MOJO_RESULT_OK, message_pipe(source_i)->WriteMessage( 290 ASSERT_EQ(MOJO_RESULT_OK, message_pipe(source_i)->WriteMessage(
291 0, NullUserPointer(), 0, &transports, 291 0, NullUserPointer(), 0, &transports,
292 MOJO_WRITE_MESSAGE_FLAG_NONE)); 292 MOJO_WRITE_MESSAGE_FLAG_NONE));
293 transport.End(); 293 transport.End();
294 } 294 }
295 uint32_t context = 0; 295 uint64_t context = 0;
296 ASSERT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 296 ASSERT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context));
297 EXPECT_EQ(987u, context); 297 EXPECT_EQ(987u, context);
298 HandleSignalsState hss = HandleSignalsState(); 298 HandleSignalsState hss = HandleSignalsState();
299 message_pipe(dest_i)->RemoveAwakable(0, &waiter, &hss); 299 message_pipe(dest_i)->RemoveAwakable(0, &waiter, &hss);
300 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 300 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
301 hss.satisfied_signals); 301 hss.satisfied_signals);
302 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 302 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
303 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 303 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
304 hss.satisfiable_signals); 304 hss.satisfiable_signals);
305 char read_buffer[100] = {}; 305 char read_buffer[100] = {};
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 kSizeOfOptions, // |struct_size|. 631 kSizeOfOptions, // |struct_size|.
632 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 632 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
633 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 633 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
634 1000 * sizeof(int32_t) // |capacity_num_bytes|. 634 1000 * sizeof(int32_t) // |capacity_num_bytes|.
635 }; 635 };
636 this->Create(options); 636 this->Create(options);
637 this->DoTransfer(); 637 this->DoTransfer();
638 638
639 Waiter waiter; 639 Waiter waiter;
640 HandleSignalsState hss; 640 HandleSignalsState hss;
641 uint32_t context; 641 uint64_t context;
642 642
643 int32_t elements[10] = {}; 643 int32_t elements[10] = {};
644 uint32_t num_bytes = 0u; 644 uint32_t num_bytes = 0u;
645 645
646 // Try reading; nothing there yet. 646 // Try reading; nothing there yet.
647 num_bytes = 647 num_bytes =
648 static_cast<uint32_t>(MOJO_ARRAYSIZE(elements) * sizeof(elements[0])); 648 static_cast<uint32_t>(MOJO_ARRAYSIZE(elements) * sizeof(elements[0]));
649 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 649 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
650 this->ConsumerReadData(UserPointer<void>(elements), 650 this->ConsumerReadData(UserPointer<void>(elements),
651 MakeUserPointer(&num_bytes), false, false)); 651 MakeUserPointer(&num_bytes), false, false));
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 785 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
786 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 786 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
787 2 * sizeof(int32_t) // |capacity_num_bytes|. 787 2 * sizeof(int32_t) // |capacity_num_bytes|.
788 }; 788 };
789 this->Create(options); 789 this->Create(options);
790 this->DoTransfer(); 790 this->DoTransfer();
791 791
792 Waiter pwaiter; // For producer. 792 Waiter pwaiter; // For producer.
793 Waiter cwaiter; // For consumer. 793 Waiter cwaiter; // For consumer.
794 HandleSignalsState hss; 794 HandleSignalsState hss;
795 uint32_t context; 795 uint64_t context;
796 796
797 // Never readable. 797 // Never readable.
798 pwaiter.Init(); 798 pwaiter.Init();
799 hss = HandleSignalsState(); 799 hss = HandleSignalsState();
800 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 800 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
801 this->ProducerAddAwakable(&pwaiter, MOJO_HANDLE_SIGNAL_READABLE, 12, 801 this->ProducerAddAwakable(&pwaiter, MOJO_HANDLE_SIGNAL_READABLE, 12,
802 &hss)); 802 &hss));
803 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 803 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
804 hss.satisfied_signals); 804 hss.satisfied_signals);
805 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 805 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 kSizeOfOptions, // |struct_size|. 988 kSizeOfOptions, // |struct_size|.
989 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 989 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
990 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 990 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
991 2 * sizeof(int32_t) // |capacity_num_bytes|. 991 2 * sizeof(int32_t) // |capacity_num_bytes|.
992 }; 992 };
993 this->Create(options); 993 this->Create(options);
994 this->DoTransfer(); 994 this->DoTransfer();
995 995
996 Waiter waiter; 996 Waiter waiter;
997 HandleSignalsState hss; 997 HandleSignalsState hss;
998 uint32_t context; 998 uint64_t context;
999 999
1000 // Add a waiter. 1000 // Add a waiter.
1001 waiter.Init(); 1001 waiter.Init();
1002 ASSERT_EQ(MOJO_RESULT_OK, 1002 ASSERT_EQ(MOJO_RESULT_OK,
1003 this->ProducerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1003 this->ProducerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1004 12, nullptr)); 1004 12, nullptr));
1005 1005
1006 // Close the consumer. 1006 // Close the consumer.
1007 this->ConsumerClose(); 1007 this->ConsumerClose();
1008 1008
(...skipping 14 matching lines...) Expand all
1023 kSizeOfOptions, // |struct_size|. 1023 kSizeOfOptions, // |struct_size|.
1024 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 1024 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
1025 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 1025 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
1026 2 * sizeof(int32_t) // |capacity_num_bytes|. 1026 2 * sizeof(int32_t) // |capacity_num_bytes|.
1027 }; 1027 };
1028 this->Create(options); 1028 this->Create(options);
1029 this->DoTransfer(); 1029 this->DoTransfer();
1030 1030
1031 Waiter waiter; 1031 Waiter waiter;
1032 HandleSignalsState hss; 1032 HandleSignalsState hss;
1033 uint32_t context; 1033 uint64_t context;
1034 1034
1035 // Add a waiter. 1035 // Add a waiter.
1036 waiter.Init(); 1036 waiter.Init();
1037 ASSERT_EQ(MOJO_RESULT_OK, 1037 ASSERT_EQ(MOJO_RESULT_OK,
1038 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1038 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1039 12, nullptr)); 1039 12, nullptr));
1040 1040
1041 // Close the producer. 1041 // Close the producer.
1042 this->ProducerClose(); 1042 this->ProducerClose();
1043 1043
(...skipping 15 matching lines...) Expand all
1059 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 1059 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
1060 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 1060 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
1061 1000 * sizeof(int32_t) // |capacity_num_bytes|. 1061 1000 * sizeof(int32_t) // |capacity_num_bytes|.
1062 }; 1062 };
1063 this->Create(options); 1063 this->Create(options);
1064 this->DoTransfer(); 1064 this->DoTransfer();
1065 1065
1066 Waiter waiter; 1066 Waiter waiter;
1067 Waiter waiter2; 1067 Waiter waiter2;
1068 HandleSignalsState hss; 1068 HandleSignalsState hss;
1069 uint32_t context; 1069 uint64_t context;
1070 1070
1071 // Never writable. 1071 // Never writable.
1072 waiter.Init(); 1072 waiter.Init();
1073 hss = HandleSignalsState(); 1073 hss = HandleSignalsState();
1074 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 1074 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
1075 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_WRITABLE, 12, 1075 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_WRITABLE, 12,
1076 &hss)); 1076 &hss));
1077 EXPECT_EQ(0u, hss.satisfied_signals); 1077 EXPECT_EQ(0u, hss.satisfied_signals);
1078 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 1078 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
1079 MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 1079 MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 kSizeOfOptions, // |struct_size|. 1248 kSizeOfOptions, // |struct_size|.
1249 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. 1249 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
1250 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|. 1250 static_cast<uint32_t>(sizeof(int32_t)), // |element_num_bytes|.
1251 1000 * sizeof(int32_t) // |capacity_num_bytes|. 1251 1000 * sizeof(int32_t) // |capacity_num_bytes|.
1252 }; 1252 };
1253 this->Create(options); 1253 this->Create(options);
1254 this->DoTransfer(); 1254 this->DoTransfer();
1255 1255
1256 Waiter waiter; 1256 Waiter waiter;
1257 HandleSignalsState hss; 1257 HandleSignalsState hss;
1258 uint32_t context; 1258 uint64_t context;
1259 1259
1260 // Add waiter: not yet readable. 1260 // Add waiter: not yet readable.
1261 waiter.Init(); 1261 waiter.Init();
1262 ASSERT_EQ(MOJO_RESULT_OK, 1262 ASSERT_EQ(MOJO_RESULT_OK,
1263 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 12, 1263 this->ConsumerAddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 12,
1264 nullptr)); 1264 nullptr));
1265 1265
1266 // Write two elements. 1266 // Write two elements.
1267 int32_t* elements = nullptr; 1267 int32_t* elements = nullptr;
1268 void* buffer = nullptr; 1268 void* buffer = nullptr;
(...skipping 1676 matching lines...) Expand 10 before | Expand all | Expand 10 after
2945 &waiter, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, &hss)); 2945 &waiter, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, &hss));
2946 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); 2946 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals);
2947 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); 2947 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals);
2948 2948
2949 this->ConsumerClose(); 2949 this->ConsumerClose();
2950 } 2950 }
2951 2951
2952 } // namespace 2952 } // namespace
2953 } // namespace system 2953 } // namespace system
2954 } // namespace mojo 2954 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/data_pipe_consumer_dispatcher.cc ('k') | mojo/edk/system/data_pipe_producer_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698