OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/message_handler.h" | 5 #include "vm/message_handler.h" |
6 #include "vm/port.h" | 6 #include "vm/port.h" |
7 #include "vm/unit_test.h" | 7 #include "vm/unit_test.h" |
8 | 8 |
9 namespace dart { | 9 namespace dart { |
10 | 10 |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 MessageHandlerTestPeer handler_peer(handler); | 281 MessageHandlerTestPeer handler_peer(handler); |
282 for (int i = 0; i < info->count; i++) { | 282 for (int i = 0; i < info->count; i++) { |
283 Message* message = | 283 Message* message = |
284 new Message(info->ports[i], NULL, 0, Message::kNormalPriority); | 284 new Message(info->ports[i], NULL, 0, Message::kNormalPriority); |
285 handler_peer.PostMessage(message); | 285 handler_peer.PostMessage(message); |
286 } | 286 } |
287 } | 287 } |
288 | 288 |
289 | 289 |
290 UNIT_TEST_CASE(MessageHandler_Run) { | 290 UNIT_TEST_CASE(MessageHandler_Run) { |
291 ThreadPool pool; | |
292 TestMessageHandler handler; | 291 TestMessageHandler handler; |
293 MessageHandlerTestPeer handler_peer(&handler); | 292 MessageHandlerTestPeer handler_peer(&handler); |
294 int sleep = 0; | 293 int sleep = 0; |
295 const int kMaxSleep = 20 * 1000; // 20 seconds. | 294 const int kMaxSleep = 20 * 1000; // 20 seconds. |
296 | 295 |
297 EXPECT(!handler.HasLivePorts()); | 296 EXPECT(!handler.HasLivePorts()); |
298 handler_peer.increment_live_ports(); | 297 handler_peer.increment_live_ports(); |
299 | 298 |
300 handler.Run(&pool, | 299 handler.Run(TestStartFunction, |
301 TestStartFunction, | |
302 TestEndFunction, | 300 TestEndFunction, |
303 reinterpret_cast<uword>(&handler)); | 301 reinterpret_cast<uword>(&handler)); |
304 Dart_Port port = PortMap::CreatePort(&handler); | 302 Dart_Port port = PortMap::CreatePort(&handler); |
305 Message* message = new Message(port, NULL, 0, Message::kNormalPriority); | 303 Message* message = new Message(port, NULL, 0, Message::kNormalPriority); |
306 handler_peer.PostMessage(message); | 304 handler_peer.PostMessage(message); |
307 | 305 |
308 // Wait for the first message to be handled. | 306 // Wait for the first message to be handled. |
309 while (sleep < kMaxSleep && handler.message_count() < 1) { | 307 while (sleep < kMaxSleep && handler.message_count() < 1) { |
310 OS::Sleep(10); | 308 OS::Sleep(10); |
311 sleep += 10; | 309 sleep += 10; |
(...skipping 25 matching lines...) Expand all Loading... |
337 EXPECT_EQ(port, handler_ports[0]); | 335 EXPECT_EQ(port, handler_ports[0]); |
338 for (int i = 1; i < 11; i++) { | 336 for (int i = 1; i < 11; i++) { |
339 EXPECT_EQ(ports[i - 1], handler_ports[i]); | 337 EXPECT_EQ(ports[i - 1], handler_ports[i]); |
340 } | 338 } |
341 handler_peer.decrement_live_ports(); | 339 handler_peer.decrement_live_ports(); |
342 EXPECT(!handler.HasLivePorts()); | 340 EXPECT(!handler.HasLivePorts()); |
343 PortMap::ClosePorts(&handler); | 341 PortMap::ClosePorts(&handler); |
344 } | 342 } |
345 | 343 |
346 } // namespace dart | 344 } // namespace dart |
OLD | NEW |