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/public/cpp/bindings/tests/connector_unittest.cc

Issue 1055703002: Gather trace data by waiting on handles with a fixed timeout (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: review feedback Created 5 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 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "mojo/public/cpp/bindings/lib/connector.h" 8 #include "mojo/public/cpp/bindings/lib/connector.h"
9 #include "mojo/public/cpp/bindings/lib/message_builder.h" 9 #include "mojo/public/cpp/bindings/lib/message_builder.h"
10 #include "mojo/public/cpp/bindings/lib/message_queue.h" 10 #include "mojo/public/cpp/bindings/lib/message_queue.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 class ReentrantMessageAccumulator : public MessageAccumulator { 52 class ReentrantMessageAccumulator : public MessageAccumulator {
53 public: 53 public:
54 ReentrantMessageAccumulator(internal::Connector* connector) 54 ReentrantMessageAccumulator(internal::Connector* connector)
55 : connector_(connector), number_of_calls_(0) {} 55 : connector_(connector), number_of_calls_(0) {}
56 56
57 bool Accept(Message* message) override { 57 bool Accept(Message* message) override {
58 if (!MessageAccumulator::Accept(message)) 58 if (!MessageAccumulator::Accept(message))
59 return false; 59 return false;
60 number_of_calls_++; 60 number_of_calls_++;
61 if (number_of_calls_ == 1) { 61 if (number_of_calls_ == 1) {
62 return connector_->WaitForIncomingMessage(); 62 return connector_->WaitForIncomingMessage(MOJO_DEADLINE_INDEFINITE);
63 } 63 }
64 return true; 64 return true;
65 } 65 }
66 66
67 int number_of_calls() { return number_of_calls_; } 67 int number_of_calls() { return number_of_calls_; }
68 68
69 private: 69 private:
70 internal::Connector* connector_; 70 internal::Connector* connector_;
71 int number_of_calls_; 71 int number_of_calls_;
72 }; 72 };
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 const char kText[] = "hello world"; 132 const char kText[] = "hello world";
133 133
134 Message message; 134 Message message;
135 AllocMessage(kText, &message); 135 AllocMessage(kText, &message);
136 136
137 connector0.Accept(&message); 137 connector0.Accept(&message);
138 138
139 MessageAccumulator accumulator; 139 MessageAccumulator accumulator;
140 connector1.set_incoming_receiver(&accumulator); 140 connector1.set_incoming_receiver(&accumulator);
141 141
142 connector1.WaitForIncomingMessage(); 142 connector1.WaitForIncomingMessage(MOJO_DEADLINE_INDEFINITE);
143 143
144 ASSERT_FALSE(accumulator.IsEmpty()); 144 ASSERT_FALSE(accumulator.IsEmpty());
145 145
146 Message message_received; 146 Message message_received;
147 accumulator.Pop(&message_received); 147 accumulator.Pop(&message_received);
148 148
149 EXPECT_EQ( 149 EXPECT_EQ(
150 std::string(kText), 150 std::string(kText),
151 std::string(reinterpret_cast<const char*>(message_received.payload()))); 151 std::string(reinterpret_cast<const char*>(message_received.payload())));
152 } 152 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { 216 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
217 Message message; 217 Message message;
218 AllocMessage(kText[i], &message); 218 AllocMessage(kText[i], &message);
219 219
220 connector0.Accept(&message); 220 connector0.Accept(&message);
221 } 221 }
222 222
223 MessageAccumulator accumulator; 223 MessageAccumulator accumulator;
224 connector1.set_incoming_receiver(&accumulator); 224 connector1.set_incoming_receiver(&accumulator);
225 225
226 connector1.WaitForIncomingMessage(); 226 connector1.WaitForIncomingMessage(MOJO_DEADLINE_INDEFINITE);
227 227
228 ASSERT_FALSE(accumulator.IsEmpty()); 228 ASSERT_FALSE(accumulator.IsEmpty());
229 229
230 Message message_received; 230 Message message_received;
231 accumulator.Pop(&message_received); 231 accumulator.Pop(&message_received);
232 232
233 EXPECT_EQ( 233 EXPECT_EQ(
234 std::string(kText[0]), 234 std::string(kText[0]),
235 std::string(reinterpret_cast<const char*>(message_received.payload()))); 235 std::string(reinterpret_cast<const char*>(message_received.payload())));
236 236
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 320
321 EXPECT_EQ( 321 EXPECT_EQ(
322 std::string(kText), 322 std::string(kText),
323 std::string(reinterpret_cast<const char*>(message_received.payload()))); 323 std::string(reinterpret_cast<const char*>(message_received.payload())));
324 } 324 }
325 325
326 TEST_F(ConnectorTest, WaitForIncomingMessageWithError) { 326 TEST_F(ConnectorTest, WaitForIncomingMessageWithError) {
327 internal::Connector connector0(handle0_.Pass()); 327 internal::Connector connector0(handle0_.Pass());
328 // Close the other end of the pipe. 328 // Close the other end of the pipe.
329 handle1_.reset(); 329 handle1_.reset();
330 ASSERT_FALSE(connector0.WaitForIncomingMessage()); 330 ASSERT_FALSE(connector0.WaitForIncomingMessage(MOJO_DEADLINE_INDEFINITE));
331 } 331 }
332 332
333 TEST_F(ConnectorTest, WaitForIncomingMessageWithDeletion) { 333 TEST_F(ConnectorTest, WaitForIncomingMessageWithDeletion) {
334 internal::Connector connector0(handle0_.Pass()); 334 internal::Connector connector0(handle0_.Pass());
335 internal::Connector* connector1 = new internal::Connector(handle1_.Pass()); 335 internal::Connector* connector1 = new internal::Connector(handle1_.Pass());
336 336
337 const char kText[] = "hello world"; 337 const char kText[] = "hello world";
338 338
339 Message message; 339 Message message;
340 AllocMessage(kText, &message); 340 AllocMessage(kText, &message);
341 341
342 connector0.Accept(&message); 342 connector0.Accept(&message);
343 343
344 ConnectorDeletingMessageAccumulator accumulator(&connector1); 344 ConnectorDeletingMessageAccumulator accumulator(&connector1);
345 connector1->set_incoming_receiver(&accumulator); 345 connector1->set_incoming_receiver(&accumulator);
346 346
347 connector1->WaitForIncomingMessage(); 347 connector1->WaitForIncomingMessage(MOJO_DEADLINE_INDEFINITE);
348 348
349 ASSERT_FALSE(connector1); 349 ASSERT_FALSE(connector1);
350 ASSERT_FALSE(accumulator.IsEmpty()); 350 ASSERT_FALSE(accumulator.IsEmpty());
351 351
352 Message message_received; 352 Message message_received;
353 accumulator.Pop(&message_received); 353 accumulator.Pop(&message_received);
354 354
355 EXPECT_EQ( 355 EXPECT_EQ(
356 std::string(kText), 356 std::string(kText),
357 std::string(reinterpret_cast<const char*>(message_received.payload()))); 357 std::string(reinterpret_cast<const char*>(message_received.payload())));
(...skipping 27 matching lines...) Expand all
385 std::string(kText[i]), 385 std::string(kText[i]),
386 std::string(reinterpret_cast<const char*>(message_received.payload()))); 386 std::string(reinterpret_cast<const char*>(message_received.payload())));
387 } 387 }
388 388
389 ASSERT_EQ(2, accumulator.number_of_calls()); 389 ASSERT_EQ(2, accumulator.number_of_calls());
390 } 390 }
391 391
392 } // namespace 392 } // namespace
393 } // namespace test 393 } // namespace test
394 } // namespace mojo 394 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/router.h ('k') | mojo/public/cpp/bindings/tests/router_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698