blob: a1a5f80287030faa1e148c33dd2ca9e88d6d5bf5 [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.
#include "base/test/trace_test_utils.h"
#include "base/check.h"
#include "base/trace_event/trace_event_impl.h"
#include "base/trace_event/trace_log.h"
#include "third_party/perfetto/include/perfetto/tracing/tracing.h"
namespace base::test {
TracingEnvironment::TracingEnvironment() {
InitializeTracing();
}
TracingEnvironment::~TracingEnvironment() {
trace_event::TraceLog::ResetForTesting();
perfetto::Tracing::ResetForTesting();
}
void InitializeTracing() {
// The tracing service shouldn't have initialized Perfetto in this process,
// because it's not safe to consume trace data from arbitrary processes
// through TraceLog as the JSON conversion here isn't sandboxed like with the
// real tracing service.
CHECK(!perfetto::Tracing::IsInitialized() ||
base::trace_event::IsPerfettoInitializedForTesting());
if (perfetto::Tracing::IsInitialized()) {
return;
}
base::trace_event::SetPerfettoInitializedForTesting();
base::trace_event::InitializeInProcessPerfettoBackend();
}
void SetupTracing() {
base::trace_event::InitializeInProcessPerfettoBackend();
perfetto::Tracing::ResetForTesting();
}
} // namespace base::test