blob: f6e001d921ba2dcf6b7c325628ec3afcbebfcf54 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_TEST_TRACE_TEST_UTILS_H_
#define BASE_TEST_TRACE_TEST_UTILS_H_
#include "base/memory/raw_ptr.h"
#include "base/task/thread_pool.h"
#include "base/test/task_environment.h"
#include "base/trace_event/trace_log.h"
#include "third_party/perfetto/protos/perfetto/config/trace_config.gen.h"
namespace base {
namespace tracing {
class PerfettoPlatform;
}
namespace test {
// A scoped class that sets up and tears down tracing support for unit tests.
// Note that only in-process tracing is supported by this harness. See
// //services/tracing for recording traces in multiprocess configurations.
class TracingEnvironment {
public:
// Construct a tracing environment using the default Perfetto tracing
// platform.
TracingEnvironment();
// Constructs a tracing environment with the given task runner and Perfetto
// tracing platform.
explicit TracingEnvironment(TaskEnvironment&,
scoped_refptr<SequencedTaskRunner> =
ThreadPool::CreateSequencedTaskRunner({}),
base::tracing::PerfettoPlatform* = nullptr);
~TracingEnvironment();
// Builds a default Perfetto trace config with track events enabled.
static perfetto::protos::gen::TraceConfig GetDefaultTraceConfig();
private:
raw_ptr<TaskEnvironment> task_environment_ = nullptr;
};
} // namespace test
} // namespace base
#endif // BASE_TEST_TRACE_TEST_UTILS_H_