You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
// 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 <string>
|
|
#include <vector>
|
|
|
|
#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<Event> events_;
|
|
|
|
// Lock to protect all member variables.
|
|
Lock lock_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(TestLauncherTracer);
|
|
};
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_TEST_LAUNCHER_TEST_LAUNCHER_TRACER_H_
|