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

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

Issue 629533002: Fix deadlock that can occur while handling service messages at a breakpoint. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // The notify callback is called. 141 // The notify callback is called.
142 EXPECT_EQ(2, handler.notify_count()); 142 EXPECT_EQ(2, handler.notify_count());
143 143
144 // The message has been added to the correct queue. 144 // The message has been added to the correct queue.
145 EXPECT(message == handler_peer.oob_queue()->Dequeue()); 145 EXPECT(message == handler_peer.oob_queue()->Dequeue());
146 EXPECT(NULL == handler_peer.queue()->Dequeue()); 146 EXPECT(NULL == handler_peer.queue()->Dequeue());
147 delete message; 147 delete message;
148 } 148 }
149 149
150 150
151 UNIT_TEST_CASE(MessageHandler_HasOOBMessages) {
152 TestMessageHandler handler;
153 MessageHandlerTestPeer handler_peer(&handler);
154
155 EXPECT(!handler.HasOOBMessages());
156
157 // Post a normal message.
158 Message* message = new Message(1, NULL, 0, Message::kNormalPriority);
159 handler_peer.PostMessage(message);
160 EXPECT(!handler.HasOOBMessages());
161
162 // Post an oob message.
163 message = new Message(1, NULL, 0, Message::kOOBPriority);
164 handler_peer.PostMessage(message);
165 EXPECT(handler.HasOOBMessages());
166
167 // Delete all pending messages.
168 handler_peer.CloseAllPorts();
169 }
170
171
151 UNIT_TEST_CASE(MessageHandler_ClosePort) { 172 UNIT_TEST_CASE(MessageHandler_ClosePort) {
152 TestMessageHandler handler; 173 TestMessageHandler handler;
153 MessageHandlerTestPeer handler_peer(&handler); 174 MessageHandlerTestPeer handler_peer(&handler);
154 Message* message1 = new Message(1, NULL, 0, Message::kNormalPriority); 175 Message* message1 = new Message(1, NULL, 0, Message::kNormalPriority);
155 handler_peer.PostMessage(message1); 176 handler_peer.PostMessage(message1);
156 Message* message2 = new Message(2, NULL, 0, Message::kNormalPriority); 177 Message* message2 = new Message(2, NULL, 0, Message::kNormalPriority);
157 handler_peer.PostMessage(message2); 178 handler_peer.PostMessage(message2);
158 179
159 handler_peer.ClosePort(1); 180 handler_peer.ClosePort(1);
160 181
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 EXPECT_EQ(port, handler_ports[0]); 323 EXPECT_EQ(port, handler_ports[0]);
303 for (int i = 1; i < 11; i++) { 324 for (int i = 1; i < 11; i++) {
304 EXPECT_EQ(ports[i - 1], handler_ports[i]); 325 EXPECT_EQ(ports[i - 1], handler_ports[i]);
305 } 326 }
306 handler_peer.decrement_live_ports(); 327 handler_peer.decrement_live_ports();
307 EXPECT(!handler.HasLivePorts()); 328 EXPECT(!handler.HasLivePorts());
308 PortMap::ClosePorts(&handler); 329 PortMap::ClosePorts(&handler);
309 } 330 }
310 331
311 } // namespace dart 332 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698