OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Unit test for SyncChannel. | 5 // Unit test for SyncChannel. |
6 | 6 |
7 #include "ipc/ipc_sync_channel.h" | 7 #include "ipc/ipc_sync_channel.h" |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 DelayReply(false); | 333 DelayReply(false); |
334 DelayReply(true); | 334 DelayReply(true); |
335 } | 335 } |
336 | 336 |
337 //----------------------------------------------------------------------------- | 337 //----------------------------------------------------------------------------- |
338 | 338 |
339 namespace { | 339 namespace { |
340 | 340 |
341 class NoHangServer : public Worker { | 341 class NoHangServer : public Worker { |
342 public: | 342 public: |
343 explicit NoHangServer(WaitableEvent* got_first_reply, bool pump_during_send) | 343 NoHangServer(WaitableEvent* got_first_reply, bool pump_during_send) |
344 : Worker(Channel::MODE_SERVER, "no_hang_server"), | 344 : Worker(Channel::MODE_SERVER, "no_hang_server"), |
345 got_first_reply_(got_first_reply), | 345 got_first_reply_(got_first_reply), |
346 pump_during_send_(pump_during_send) { } | 346 pump_during_send_(pump_during_send) { } |
347 void Run() { | 347 void Run() { |
348 SendAnswerToLife(pump_during_send_, base::kNoTimeout, true); | 348 SendAnswerToLife(pump_during_send_, base::kNoTimeout, true); |
349 got_first_reply_->Signal(); | 349 got_first_reply_->Signal(); |
350 | 350 |
351 SendAnswerToLife(pump_during_send_, base::kNoTimeout, false); | 351 SendAnswerToLife(pump_during_send_, base::kNoTimeout, false); |
352 Done(); | 352 Done(); |
353 } | 353 } |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 Unblock(true, false, true); | 468 Unblock(true, false, true); |
469 Unblock(true, true, true); | 469 Unblock(true, true, true); |
470 } | 470 } |
471 | 471 |
472 //----------------------------------------------------------------------------- | 472 //----------------------------------------------------------------------------- |
473 | 473 |
474 namespace { | 474 namespace { |
475 | 475 |
476 class RecursiveServer : public Worker { | 476 class RecursiveServer : public Worker { |
477 public: | 477 public: |
478 explicit RecursiveServer( | 478 RecursiveServer(bool expected_send_result, bool pump_first, bool pump_second) |
479 bool expected_send_result, bool pump_first, bool pump_second) | 479 : Worker(Channel::MODE_SERVER, "recursive_server"), |
480 : Worker(Channel::MODE_SERVER, "recursive_server"), | 480 expected_send_result_(expected_send_result), |
481 expected_send_result_(expected_send_result), | 481 pump_first_(pump_first), pump_second_(pump_second) {} |
482 pump_first_(pump_first), pump_second_(pump_second) { } | |
483 void Run() { | 482 void Run() { |
484 SendDouble(pump_first_, expected_send_result_); | 483 SendDouble(pump_first_, expected_send_result_); |
485 Done(); | 484 Done(); |
486 } | 485 } |
487 | 486 |
488 void OnDouble(int in, int* out) { | 487 void OnDouble(int in, int* out) { |
489 *out = in * 2; | 488 *out = in * 2; |
490 SendAnswerToLife(pump_second_, base::kNoTimeout, expected_send_result_); | 489 SendAnswerToLife(pump_second_, base::kNoTimeout, expected_send_result_); |
491 } | 490 } |
492 | 491 |
493 bool expected_send_result_, pump_first_, pump_second_; | 492 bool expected_send_result_, pump_first_, pump_second_; |
494 }; | 493 }; |
495 | 494 |
496 class RecursiveClient : public Worker { | 495 class RecursiveClient : public Worker { |
497 public: | 496 public: |
498 explicit RecursiveClient(bool pump_during_send, bool close_channel) | 497 RecursiveClient(bool pump_during_send, bool close_channel) |
499 : Worker(Channel::MODE_CLIENT, "recursive_client"), | 498 : Worker(Channel::MODE_CLIENT, "recursive_client"), |
500 pump_during_send_(pump_during_send), close_channel_(close_channel) { } | 499 pump_during_send_(pump_during_send), close_channel_(close_channel) {} |
501 | 500 |
502 void OnDoubleDelay(int in, Message* reply_msg) { | 501 void OnDoubleDelay(int in, Message* reply_msg) { |
503 SendDouble(pump_during_send_, !close_channel_); | 502 SendDouble(pump_during_send_, !close_channel_); |
504 if (close_channel_) { | 503 if (close_channel_) { |
505 delete reply_msg; | 504 delete reply_msg; |
506 } else { | 505 } else { |
507 SyncChannelTestMsg_Double::WriteReplyParams(reply_msg, in * 2); | 506 SyncChannelTestMsg_Double::WriteReplyParams(reply_msg, in * 2); |
508 Send(reply_msg); | 507 Send(reply_msg); |
509 } | 508 } |
510 Done(); | 509 Done(); |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 SendWithTimeoutMixedOKAndTimeout(false); | 951 SendWithTimeoutMixedOKAndTimeout(false); |
953 SendWithTimeoutMixedOKAndTimeout(true); | 952 SendWithTimeoutMixedOKAndTimeout(true); |
954 } | 953 } |
955 | 954 |
956 //------------------------------------------------------------------------------ | 955 //------------------------------------------------------------------------------ |
957 | 956 |
958 namespace { | 957 namespace { |
959 | 958 |
960 class NestedTask : public Task { | 959 class NestedTask : public Task { |
961 public: | 960 public: |
962 explicit NestedTask(Worker* server) : server_(server) { } | 961 explicit NestedTask(Worker* server) : server_(server) {} |
963 void Run() { | 962 void Run() { |
964 // Sleep a bit so that we wake up after the reply has been received. | 963 // Sleep a bit so that we wake up after the reply has been received. |
965 base::PlatformThread::Sleep(250); | 964 base::PlatformThread::Sleep(250); |
966 server_->SendAnswerToLife(true, base::kNoTimeout, true); | 965 server_->SendAnswerToLife(true, base::kNoTimeout, true); |
967 } | 966 } |
968 | 967 |
969 Worker* server_; | 968 Worker* server_; |
970 }; | 969 }; |
971 | 970 |
972 static bool timeout_occured = false; | 971 static bool timeout_occured = false; |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 std::vector<Worker*> workers; | 1257 std::vector<Worker*> workers; |
1259 workers.push_back(new NonRestrictedDispatchServer); | 1258 workers.push_back(new NonRestrictedDispatchServer); |
1260 workers.push_back(server); | 1259 workers.push_back(server); |
1261 workers.push_back( | 1260 workers.push_back( |
1262 new RestrictedDispatchClient(&sent_ping_event, server, &success)); | 1261 new RestrictedDispatchClient(&sent_ping_event, server, &success)); |
1263 RunTest(workers); | 1262 RunTest(workers); |
1264 EXPECT_EQ(3, success); | 1263 EXPECT_EQ(3, success); |
1265 } | 1264 } |
1266 | 1265 |
1267 } // namespace IPC | 1266 } // namespace IPC |
OLD | NEW |