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

Unified Diff: mojo/public/tests/system_core_perftest.cc

Issue 23621056: Initial in-process implementation of some Mojo primitives. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: build fix Created 7 years, 3 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
Index: mojo/public/tests/system_core_perftest.cc
diff --git a/mojo/public/tests/system_core_perftest.cc b/mojo/public/tests/system_core_perftest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2e9fef22a078b5c58e3536f8d3dfa7d6b8225dc1
--- /dev/null
+++ b/mojo/public/tests/system_core_perftest.cc
@@ -0,0 +1,99 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "mojo/public/system/core.h"
+
+#include "base/basictypes.h"
+#include "base/bind.h"
+#include "base/logging.h"
+#include "mojo/public/tests/test_support.h"
+
+namespace mojo {
+namespace {
+
+class SystemPerftest : public test::TestBase {
+ public:
+ SystemPerftest() {}
+ virtual ~SystemPerftest() {}
+
+ void NoOp() {
+ }
+
+ void MessagePipe_CreateAndClose() {
+ MojoResult result;
+ result = CreateMessagePipe(&h_0_, &h_1_);
+ DCHECK_EQ(result, MOJO_RESULT_OK);
+ result = Close(h_0_);
+ DCHECK_EQ(result, MOJO_RESULT_OK);
+ result = Close(h_1_);
+ DCHECK_EQ(result, MOJO_RESULT_OK);
+ }
+
+ void MessagePipe_WriteAndRead(void* buffer, uint32_t bytes) {
+ MojoResult result;
+ result = WriteMessage(h_0_,
+ buffer, bytes,
+ NULL, 0,
+ MOJO_WRITE_MESSAGE_FLAG_NONE);
+ DCHECK_EQ(result, MOJO_RESULT_OK);
+ uint32_t read_bytes = bytes;
+ result = ReadMessage(h_1_,
+ buffer, &read_bytes,
+ NULL, NULL,
+ MOJO_READ_MESSAGE_FLAG_NONE);
+ DCHECK_EQ(result, MOJO_RESULT_OK);
+ }
+
+ protected:
+ Handle h_0_;
+ Handle h_1_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SystemPerftest);
+};
+
+// A no-op test so we can compare performance.
+TEST_F(SystemPerftest, NoOp) {
+ test::IterateAndReportPerf(
+ "NoOp",
+ base::Bind(&SystemPerftest::NoOp,
+ base::Unretained(this)));
+}
+
+TEST_F(SystemPerftest, MessagePipe_CreateAndClose) {
+ test::IterateAndReportPerf(
+ "MessagePipe_CreateAndClose",
+ base::Bind(&SystemPerftest::MessagePipe_CreateAndClose,
+ base::Unretained(this)));
+}
+
+TEST_F(SystemPerftest, MessagePipe_WriteAndRead) {
+ CHECK_EQ(CreateMessagePipe(&h_0_, &h_1_), MOJO_RESULT_OK);
+ char buffer[10000] = { 0 };
+ test::IterateAndReportPerf(
+ "MessagePipe_WriteAndRead_10bytes",
+ base::Bind(&SystemPerftest::MessagePipe_WriteAndRead,
+ base::Unretained(this),
+ static_cast<void*>(buffer), static_cast<uint32_t>(10)));
+ test::IterateAndReportPerf(
+ "MessagePipe_WriteAndRead_100bytes",
+ base::Bind(&SystemPerftest::MessagePipe_WriteAndRead,
+ base::Unretained(this),
+ static_cast<void*>(buffer), static_cast<uint32_t>(100)));
+ test::IterateAndReportPerf(
+ "MessagePipe_WriteAndRead_1000bytes",
+ base::Bind(&SystemPerftest::MessagePipe_WriteAndRead,
+ base::Unretained(this),
+ static_cast<void*>(buffer), static_cast<uint32_t>(1000)));
+ test::IterateAndReportPerf(
+ "MessagePipe_WriteAndRead_10000bytes",
+ base::Bind(&SystemPerftest::MessagePipe_WriteAndRead,
+ base::Unretained(this),
+ static_cast<void*>(buffer), static_cast<uint32_t>(10000)));
+ CHECK_EQ(Close(h_0_), MOJO_RESULT_OK);
+ CHECK_EQ(Close(h_1_), MOJO_RESULT_OK);
+}
+
+} // namespace
+} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698