Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: runtime/vm/message_handler_test.cc

Issue 1177153005: Enables clean VM shutdown. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Kill isolates from the service isolate Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698