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

Unified Diff: runtime/vm/message_test.cc

Issue 9570051: Revert my last change. Odd test failures that I will investigate tomorrow. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/message.cc ('k') | runtime/vm/native_message_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/message_test.cc
===================================================================
--- runtime/vm/message_test.cc (revision 4842)
+++ runtime/vm/message_test.cc (working copy)
@@ -15,8 +15,12 @@
explicit MessageQueueTestPeer(MessageQueue* queue) : queue_(queue) {}
bool HasMessage() const {
+ // We don't really need to grab the monitor during the unit test,
+ // but it doesn't hurt.
+ queue_->monitor_.Enter();
bool result = (queue_->head_[Message::kNormalPriority] != NULL ||
queue_->head_[Message::kOOBPriority] != NULL);
+ queue_->monitor_.Exit();
return result;
}
@@ -25,18 +29,6 @@
};
-class MessageHandlerTestPeer {
- public:
- explicit MessageHandlerTestPeer(MessageHandler* handler)
- : handler_(handler) {}
-
- MessageQueue* queue() { return handler_->queue_; }
-
- private:
- MessageHandler* handler_;
-};
-
-
static uint8_t* AllocMsg(const char* str) {
return reinterpret_cast<uint8_t*>(strdup(str));
}
@@ -62,12 +54,12 @@
EXPECT(queue_peer.HasMessage());
// Remove two messages.
- Message* msg = queue.Dequeue();
+ Message* msg = queue.Dequeue(0);
EXPECT(msg != NULL);
EXPECT_STREQ("msg1", reinterpret_cast<char*>(msg->data()));
EXPECT(queue_peer.HasMessage());
- msg = queue.Dequeue();
+ msg = queue.Dequeue(0);
EXPECT(msg != NULL);
EXPECT_STREQ("msg2", reinterpret_cast<char*>(msg->data()));
EXPECT(!queue_peer.HasMessage());
@@ -97,12 +89,12 @@
EXPECT(queue_peer.HasMessage());
// The higher priority message is delivered first.
- Message* msg = queue.Dequeue();
+ Message* msg = queue.Dequeue(0);
EXPECT(msg != NULL);
EXPECT_STREQ("msg2", reinterpret_cast<char*>(msg->data()));
EXPECT(queue_peer.HasMessage());
- msg = queue.Dequeue();
+ msg = queue.Dequeue(0);
EXPECT(msg != NULL);
EXPECT_STREQ("msg1", reinterpret_cast<char*>(msg->data()));
EXPECT(!queue_peer.HasMessage());
@@ -114,18 +106,17 @@
// A thread which receives an expected sequence of messages.
static Monitor* sync = NULL;
-static MessageHandler* shared_handler = NULL;
+static MessageQueue* shared_queue = NULL;
void MessageReceiver_start(uword unused) {
// We only need an isolate here because the MonitorLocker in the
// MessageQueue expects it, we don't need to initialize the isolate
// as it does not run any dart code.
Dart::CreateIsolate(NULL);
- // Create a message handler and share it.
- MessageHandler* handler = new MessageHandler();
- MessageHandlerTestPeer handler_peer(handler);
- MessageQueueTestPeer queue_peer(handler_peer.queue());
- shared_handler = handler;
+ // Create a message queue and share it.
+ MessageQueue* queue = new MessageQueue();
+ MessageQueueTestPeer peer(queue);
+ shared_queue = queue;
// Tell the other thread that the shared queue is ready.
{
@@ -134,13 +125,13 @@
}
// Wait for the other thread to fill the queue a bit.
- while (!queue_peer.HasMessage()) {
+ while (!peer.HasMessage()) {
MonitorLocker ml(sync);
ml.Wait(5);
}
for (int i = 0; i < 3; i++) {
- Message* msg = handler->Dequeue(0);
+ Message* msg = queue->Dequeue(0);
EXPECT(msg != NULL);
EXPECT_EQ(i + 10, msg->dest_port());
EXPECT_EQ(i + 100, msg->reply_port());
@@ -148,31 +139,31 @@
delete msg;
}
for (int i = 0; i < 3; i++) {
- Message* msg = handler->Dequeue(0);
+ Message* msg = queue->Dequeue(0);
EXPECT(msg != NULL);
EXPECT_EQ(i + 20, msg->dest_port());
EXPECT_EQ(i + 200, msg->reply_port());
EXPECT_EQ(i + 2000, *(reinterpret_cast<int*>(msg->data())));
delete msg;
}
- shared_handler = NULL;
- delete handler;
+ shared_queue = NULL;
+ delete queue;
Dart::ShutdownIsolate();
}
-TEST_CASE(MessageHandler_WaitNotify) {
+TEST_CASE(MessageQueue_WaitNotify) {
sync = new Monitor();
int result = Thread::Start(MessageReceiver_start, 0);
EXPECT_EQ(0, result);
- // Wait for the shared handler to be created.
- while (shared_handler == NULL) {
+ // Wait for the shared queue to be created.
+ while (shared_queue == NULL) {
MonitorLocker ml(sync);
ml.Wait(5);
}
- ASSERT(shared_handler != NULL);
+ ASSERT(shared_queue != NULL);
// Pile up three messages before the other thread runs.
for (int i = 0; i < 3; i++) {
@@ -181,7 +172,7 @@
Message* msg =
new Message(i + 10, i + 100, reinterpret_cast<uint8_t*>(data),
Message::kNormalPriority);
- shared_handler->PostMessage(msg);
+ shared_queue->Enqueue(msg);
}
// Wake the other thread and have it start consuming messages.
@@ -199,7 +190,7 @@
Message* msg =
new Message(i + 20, i + 200, reinterpret_cast<uint8_t*>(data),
Message::kNormalPriority);
- shared_handler->PostMessage(msg);
+ shared_queue->Enqueue(msg);
}
sync = NULL;
@@ -251,7 +242,7 @@
// One message is left in the queue.
EXPECT(queue_peer.HasMessage());
- Message* msg = queue.Dequeue();
+ Message* msg = queue.Dequeue(0);
EXPECT(msg != NULL);
EXPECT_STREQ("msg2", reinterpret_cast<char*>(msg->data()));
« no previous file with comments | « runtime/vm/message.cc ('k') | runtime/vm/native_message_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698