1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MOJO_PUBLIC_CPP_TEST_SUPPORT_TEST_UTILS_H_
6#define MOJO_PUBLIC_CPP_TEST_SUPPORT_TEST_UTILS_H_
7
8#include <string>
9
10#include "mojo/public/cpp/system/core.h"
11
12namespace mojo {
13namespace test {
14
15// Writes a message to |handle| with message data |text|. Returns true on
16// success.
17bool WriteTextMessage(const MessagePipeHandle& handle, const std::string& text);
18
19// Reads a message from |handle|, putting its contents into |*text|. Returns
20// true on success. (This blocks if necessary and will call |MojoReadMessage()|
21// multiple times, e.g., to query the size of the message.)
22bool ReadTextMessage(const MessagePipeHandle& handle, std::string* text);
23
24// Discards a message from |handle|. Returns true on success. (This does not
25// block. It will fail if no message is available to discard.)
26bool DiscardMessage(const MessagePipeHandle& handle);
27
28// Run |single_iteration| an appropriate number of times and report its
29// performance appropriately. (This actually runs |single_iteration| for a fixed
30// amount of time and reports the number of iterations per unit time.)
31typedef void (*PerfTestSingleIteration)(void* closure);
32void IterateAndReportPerf(const char* test_name,
33                          const char* sub_test_name,
34                          PerfTestSingleIteration single_iteration,
35                          void* closure);
36
37}  // namespace test
38}  // namespace mojo
39
40#endif  // MOJO_PUBLIC_CPP_TEST_SUPPORT_TEST_UTILS_H_
41