| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 TEST_F(IPCChannelPerfTest, Performance) { | 223 TEST_F(IPCChannelPerfTest, Performance) { |
| 224 Init("PerformanceClient"); | 224 Init("PerformanceClient"); |
| 225 | 225 |
| 226 // Set up IPC channel and start client. | 226 // Set up IPC channel and start client. |
| 227 PerformanceChannelListener listener; | 227 PerformanceChannelListener listener; |
| 228 CreateChannel(&listener); | 228 CreateChannel(&listener); |
| 229 listener.Init(channel()); | 229 listener.Init(channel()); |
| 230 ASSERT_TRUE(ConnectChannel()); | 230 ASSERT_TRUE(ConnectChannel()); |
| 231 ASSERT_TRUE(StartClient()); | 231 ASSERT_TRUE(StartClient()); |
| 232 | 232 |
| 233 const size_t kMsgSizeBase = 12; | 233 // Test several sizes. We use 12^N for message size, and limit the message |
| 234 const int kMsgSizeMaxExp = 5; | 234 // count to keep the test duration reasonable. |
| 235 int msg_count = 100000; | 235 const size_t kMsgSize[5] = {12, 144, 1728, 20736, 248832}; |
| 236 size_t msg_size = kMsgSizeBase; | 236 const size_t kMessageCount[5] = {50000, 50000, 50000, 12000, 1000}; |
| 237 for (int i = 1; i <= kMsgSizeMaxExp; i++) { | 237 |
| 238 listener.SetTestParams(msg_count, msg_size); | 238 for (size_t i = 0; i < 5; i++) { |
| 239 listener.SetTestParams(kMessageCount[i], kMsgSize[i]); |
| 239 | 240 |
| 240 // This initial message will kick-start the ping-pong of messages. | 241 // This initial message will kick-start the ping-pong of messages. |
| 241 IPC::Message* message = | 242 IPC::Message* message = |
| 242 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); | 243 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); |
| 243 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); | 244 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); |
| 244 message->WriteInt(-1); | 245 message->WriteInt(-1); |
| 245 message->WriteString("hello"); | 246 message->WriteString("hello"); |
| 246 sender()->Send(message); | 247 sender()->Send(message); |
| 247 | 248 |
| 248 // Run message loop. | 249 // Run message loop. |
| 249 base::MessageLoop::current()->Run(); | 250 base::MessageLoop::current()->Run(); |
| 250 | |
| 251 msg_size *= kMsgSizeBase; | |
| 252 } | 251 } |
| 253 | 252 |
| 254 // Send quit message. | 253 // Send quit message. |
| 255 IPC::Message* message = new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); | 254 IPC::Message* message = new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); |
| 256 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); | 255 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); |
| 257 message->WriteInt(-1); | 256 message->WriteInt(-1); |
| 258 message->WriteString("quit"); | 257 message->WriteString("quit"); |
| 259 sender()->Send(message); | 258 sender()->Send(message); |
| 260 | 259 |
| 261 EXPECT_TRUE(WaitForClientShutdown()); | 260 EXPECT_TRUE(WaitForClientShutdown()); |
| 262 DestroyChannel(); | 261 DestroyChannel(); |
| 263 } | 262 } |
| 264 | 263 |
| 265 // This message loop bounces all messages back to the sender. | 264 // This message loop bounces all messages back to the sender. |
| 266 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(PerformanceClient) { | 265 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(PerformanceClient) { |
| 267 base::MessageLoopForIO main_message_loop; | 266 base::MessageLoopForIO main_message_loop; |
| 268 ChannelReflectorListener listener; | 267 ChannelReflectorListener listener; |
| 269 IPC::Channel channel(IPCTestBase::GetChannelName("PerformanceClient"), | 268 IPC::Channel channel(IPCTestBase::GetChannelName("PerformanceClient"), |
| 270 IPC::Channel::MODE_CLIENT, | 269 IPC::Channel::MODE_CLIENT, |
| 271 &listener); | 270 &listener); |
| 272 listener.Init(&channel); | 271 listener.Init(&channel); |
| 273 CHECK(channel.Connect()); | 272 CHECK(channel.Connect()); |
| 274 | 273 |
| 275 base::MessageLoop::current()->Run(); | 274 base::MessageLoop::current()->Run(); |
| 276 return 0; | 275 return 0; |
| 277 } | 276 } |
| 278 | 277 |
| 279 } // namespace | 278 } // namespace |
| OLD | NEW |