| 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 |