// Copyright 2016 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. #ifndef BASE_TEST_LAUNCHER_TEST_LAUNCHER_TRACER_H_ #define BASE_TEST_LAUNCHER_TEST_LAUNCHER_TRACER_H_ #include #include #include "base/synchronization/lock.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" namespace base { class FilePath; // Records traces of test execution, e.g. to analyze performance. // Thread safe. class TestLauncherTracer { public: TestLauncherTracer(); ~TestLauncherTracer(); // Records an event corresponding to test process execution. void RecordProcessExecution(TimeTicks start_time, TimeDelta duration); // Dumps trace data as JSON. Returns true on success. bool Dump(const FilePath& path) WARN_UNUSED_RESULT; private: // Simplified version of base::TraceEvent. struct Event { std::string name; // Displayed name. TimeTicks timestamp; // Timestamp when this event began. TimeDelta duration; // How long was this event. PlatformThreadId thread_id; // Thread ID where event was reported. }; // Timestamp when tracing started. TimeTicks trace_start_time_; // Log of trace events. std::vector events_; // Lock to protect all member variables. Lock lock_; DISALLOW_COPY_AND_ASSIGN(TestLauncherTracer); }; } // namespace base #endif // BASE_TEST_LAUNCHER_TEST_LAUNCHER_TRACER_H_