Index: base/test/trace_event_analyzer.h |
diff --git a/base/test/trace_event_analyzer.h b/base/test/trace_event_analyzer.h |
index 5e40a062727e9b74755b299d9f4f591973c5e281..8f25cd8f2483b863e43ed2958d2f255f8ded9cf3 100644 |
--- a/base/test/trace_event_analyzer.h |
+++ b/base/test/trace_event_analyzer.h |
@@ -170,6 +170,8 @@ struct TraceEvent { |
const TraceEvent* other_event; |
}; |
+typedef std::vector<const TraceEvent*> TraceEventVector; |
+ |
// Pass these values to Query to compare with the corresponding member of a |
// TraceEvent. Unless otherwise specfied, the usage is Query(ENUM_MEMBER). |
enum TraceEventMember { |
@@ -418,15 +420,6 @@ class QueryNode : public base::RefCounted<QueryNode> { |
// TraceAnalyzer helps tests search for trace events. |
class TraceAnalyzer { |
public: |
- typedef std::vector<const TraceEvent*> TraceEventVector; |
- |
- struct Stats { |
- double min_us; |
- double max_us; |
- double mean_us; |
- double standard_deviation_us; |
- }; |
- |
~TraceAnalyzer(); |
// Use trace events from JSON string generated by tracing API. |
@@ -474,6 +467,10 @@ class TraceAnalyzer { |
const Query& second, |
const Query& match); |
+ // For each event, copy its arguments to the other_event argument map. If |
+ // argument name already exists, it will not be overwritten. |
+ void MergeAssociatedEventArgs(); |
+ |
// Find all events that match query and replace output vector. |
size_t FindEvents(const Query& query, TraceEventVector* output); |
@@ -482,10 +479,6 @@ class TraceAnalyzer { |
const std::string& GetThreadName(const TraceEvent::ProcessThreadID& thread); |
- // Calculate min/max/mean and standard deviation from the times between |
- // adjacent events. |
- static bool GetRateStats(const TraceEventVector& events, Stats* stats); |
- |
private: |
TraceAnalyzer(); |
@@ -501,6 +494,56 @@ class TraceAnalyzer { |
DISALLOW_COPY_AND_ASSIGN(TraceAnalyzer); |
}; |
+// Utility functions for TraceEventVector. |
+ |
+struct RateStats { |
+ double min_us; |
+ double max_us; |
+ double mean_us; |
+ double standard_deviation_us; |
+}; |
+ |
+// Calculate min/max/mean and standard deviation from the times between |
+// adjacent events. |
+bool GetRateStats(const TraceEventVector& events, RateStats* stats); |
+ |
+// Starting from |position|, find the first event that matches |query|. |
+// Returns true if found, false otherwise. |
+bool FindFirstOf(const TraceEventVector& events, |
+ const Query& query, |
+ size_t position, |
+ size_t* return_index); |
+ |
+// Starting from |position|, find the last event that matches |query|. |
+// Returns true if found, false otherwise. |
+bool FindLastOf(const TraceEventVector& events, |
+ const Query& query, |
+ size_t position, |
+ size_t* return_index); |
+ |
+// Find the closest events to |position| in time that match |query|. |
+// return_second_closest may be NULL. Closeness is determined by comparing |
+// with the event timestamp. |
+// Returns true if found, false otherwise. If both return parameters are |
+// requested, both must be found for a successful result. |
+bool FindClosest(const TraceEventVector& events, |
+ const Query& query, |
+ size_t position, |
+ size_t* return_closest, |
+ size_t* return_second_closest); |
+ |
+// Count matches, inclusive of |begin_position|, exclusive of |end_position|. |
+size_t CountMatches(const TraceEventVector& events, |
+ const Query& query, |
+ size_t begin_position, |
+ size_t end_position); |
+ |
+// Count all matches. |
+static inline size_t CountMatches(const TraceEventVector& events, |
+ const Query& query) { |
+ return CountMatches(events, query, 0u, events.size()); |
+} |
+ |
} // namespace trace_analyzer |
#endif // BASE_TEST_TRACE_EVENT_ANALYZER_H_ |