blob: 74a1eca09cb1399d7ab74ecd269f41e488ae5eb0 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Use TestTraceProcessor to load a perfetto trace and run queries on the trace.
// Documentation on how to use the trace processor and write queries can be
// found here: https://perfetto.dev/docs/analysis/trace-processor.
// TODO(b/224531105): Implement EXTRACT_ARGS to return multiple args to simplify
// queries.
#ifndef BASE_TEST_TEST_TRACE_PROCESSOR_H_
#define BASE_TEST_TEST_TRACE_PROCESSOR_H_
#include <memory>
#include "test_trace_processor_export.h"
#include "third_party/abseil-cpp/absl/status/status.h"
namespace perfetto::trace_processor {
struct Config;
class TraceProcessor;
} // namespace perfetto::trace_processor
namespace base::test {
class TEST_TRACE_PROCESSOR_EXPORT TestTraceProcessor {
public:
TestTraceProcessor();
~TestTraceProcessor();
absl::Status ParseTrace(std::unique_ptr<uint8_t[]> buf, size_t size);
absl::Status ParseTrace(const std::vector<char>& raw_trace);
// Runs the sql query on the parsed trace and returns the result as a
// vector of strings.
std::vector<std::vector<std::string>> ExecuteQuery(const std::string& sql);
private:
std::unique_ptr<perfetto::trace_processor::Config> config_;
std::unique_ptr<perfetto::trace_processor::TraceProcessor> trace_processor_;
};
} // namespace base::test
#endif // BASE_TEST_TEST_TRACE_PROCESSOR_H_