| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <utility> |
| 6 |
| 5 #include "base/bind.h" | 7 #include "base/bind.h" |
| 6 #include "base/logging.h" | 8 #include "base/logging.h" |
| 7 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 8 #include "base/test/perf_time_logger.h" | 10 #include "base/test/perf_time_logger.h" |
| 9 #include "mojo/edk/embedder/embedder.h" | 11 #include "mojo/edk/embedder/embedder.h" |
| 10 #include "mojo/edk/embedder/scoped_platform_handle.h" | 12 #include "mojo/edk/embedder/scoped_platform_handle.h" |
| 11 #include "mojo/edk/system/handle_signals_state.h" | 13 #include "mojo/edk/system/handle_signals_state.h" |
| 12 #include "mojo/edk/system/message_pipe_test_utils.h" | 14 #include "mojo/edk/system/message_pipe_test_utils.h" |
| 13 #include "mojo/edk/system/test_utils.h" | 15 #include "mojo/edk/system/test_utils.h" |
| 14 #include "mojo/edk/test/test_utils.h" | 16 #include "mojo/edk/test/test_utils.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 std::string read_buffer_; | 81 std::string read_buffer_; |
| 80 scoped_ptr<base::PerfTimeLogger> perf_logger_; | 82 scoped_ptr<base::PerfTimeLogger> perf_logger_; |
| 81 }; | 83 }; |
| 82 | 84 |
| 83 // For each message received, sends a reply message with the same contents | 85 // For each message received, sends a reply message with the same contents |
| 84 // repeated twice, until the other end is closed or it receives "quitquitquit" | 86 // repeated twice, until the other end is closed or it receives "quitquitquit" |
| 85 // (which it doesn't reply to). It'll return the number of messages received, | 87 // (which it doesn't reply to). It'll return the number of messages received, |
| 86 // not including any "quitquitquit" message, modulo 100. | 88 // not including any "quitquitquit" message, modulo 100. |
| 87 MOJO_MULTIPROCESS_TEST_CHILD_MAIN(PingPongClient) { | 89 MOJO_MULTIPROCESS_TEST_CHILD_MAIN(PingPongClient) { |
| 88 ScopedPlatformHandle client_platform_handle = | 90 ScopedPlatformHandle client_platform_handle = |
| 89 test::MultiprocessTestHelper::client_platform_handle.Pass(); | 91 std::move(test::MultiprocessTestHelper::client_platform_handle); |
| 90 CHECK(client_platform_handle.is_valid()); | 92 CHECK(client_platform_handle.is_valid()); |
| 91 ScopedMessagePipeHandle mp = | 93 ScopedMessagePipeHandle mp = |
| 92 CreateMessagePipe(client_platform_handle.Pass()); | 94 CreateMessagePipe(std::move(client_platform_handle)); |
| 93 | 95 |
| 94 std::string buffer(1000000, '\0'); | 96 std::string buffer(1000000, '\0'); |
| 95 int rv = 0; | 97 int rv = 0; |
| 96 while (true) { | 98 while (true) { |
| 97 // Wait for our end of the message pipe to be readable. | 99 // Wait for our end of the message pipe to be readable. |
| 98 HandleSignalsState hss; | 100 HandleSignalsState hss; |
| 99 MojoResult result = | 101 MojoResult result = |
| 100 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, | 102 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
| 101 MOJO_DEADLINE_INDEFINITE, &hss); | 103 MOJO_DEADLINE_INDEFINITE, &hss); |
| 102 if (result != MOJO_RESULT_OK) { | 104 if (result != MOJO_RESULT_OK) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 128 // number of messages has been sent. | 130 // number of messages has been sent. |
| 129 #if defined(OS_ANDROID) | 131 #if defined(OS_ANDROID) |
| 130 // Android multi-process tests are not executing the new process. This is flaky. | 132 // Android multi-process tests are not executing the new process. This is flaky. |
| 131 #define MAYBE_PingPong DISABLED_PingPong | 133 #define MAYBE_PingPong DISABLED_PingPong |
| 132 #else | 134 #else |
| 133 #define MAYBE_PingPong PingPong | 135 #define MAYBE_PingPong PingPong |
| 134 #endif // defined(OS_ANDROID) | 136 #endif // defined(OS_ANDROID) |
| 135 TEST_F(MultiprocessMessagePipePerfTest, MAYBE_PingPong) { | 137 TEST_F(MultiprocessMessagePipePerfTest, MAYBE_PingPong) { |
| 136 helper()->StartChild("PingPongClient"); | 138 helper()->StartChild("PingPongClient"); |
| 137 | 139 |
| 138 ScopedMessagePipeHandle mp = CreateMessagePipe( | 140 ScopedMessagePipeHandle mp = |
| 139 helper()->server_platform_handle.Pass()); | 141 CreateMessagePipe(std::move(helper()->server_platform_handle)); |
| 140 | 142 |
| 141 // This values are set to align with one at ipc_pertests.cc for comparison. | 143 // This values are set to align with one at ipc_pertests.cc for comparison. |
| 142 const size_t kMsgSize[5] = {12, 144, 1728, 20736, 248832}; | 144 const size_t kMsgSize[5] = {12, 144, 1728, 20736, 248832}; |
| 143 const int kMessageCount[5] = {50000, 50000, 50000, 12000, 1000}; | 145 const int kMessageCount[5] = {50000, 50000, 50000, 12000, 1000}; |
| 144 | 146 |
| 145 for (size_t i = 0; i < 5; i++) { | 147 for (size_t i = 0; i < 5; i++) { |
| 146 SetUpMeasurement(kMessageCount[i], kMsgSize[i]); | 148 SetUpMeasurement(kMessageCount[i], kMsgSize[i]); |
| 147 Measure(mp.get().value()); | 149 Measure(mp.get().value()); |
| 148 } | 150 } |
| 149 | 151 |
| 150 SendQuitMessage(mp.get().value()); | 152 SendQuitMessage(mp.get().value()); |
| 151 EXPECT_EQ(0, helper()->WaitForChildShutdown()); | 153 EXPECT_EQ(0, helper()->WaitForChildShutdown()); |
| 152 } | 154 } |
| 153 | 155 |
| 154 } // namespace | 156 } // namespace |
| 155 } // namespace edk | 157 } // namespace edk |
| 156 } // namespace mojo | 158 } // namespace mojo |
| OLD | NEW |