OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Use trace_analyzer::Query and trace_analyzer::TraceAnalyzer to search for | 5 // Use trace_analyzer::Query and trace_analyzer::TraceAnalyzer to search for |
6 // specific trace events that were generated by the trace_event.h API. | 6 // specific trace events that were generated by the trace_event.h API. |
7 // | 7 // |
8 // Basic procedure: | 8 // Basic procedure: |
9 // - Get trace events JSON string from base::trace_event::TraceLog. | 9 // - Get trace events JSON string from base::trace_event::TraceLog. |
10 // - Create TraceAnalyzer with JSON string. | 10 // - Create TraceAnalyzer with JSON string. |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 // for (size_t i = 0; i < events.size(); ++i) { | 69 // for (size_t i = 0; i < events.size(); ++i) { |
70 // double duration; | 70 // double duration; |
71 // EXPECT_TRUE(events[i].GetAbsTimeToOtherEvent(&duration)); | 71 // EXPECT_TRUE(events[i].GetAbsTimeToOtherEvent(&duration)); |
72 // EXPECT_LT(duration, 1000000.0/60.0); // expect less than 1/60 second. | 72 // EXPECT_LT(duration, 1000000.0/60.0); // expect less than 1/60 second. |
73 // } | 73 // } |
74 | 74 |
75 | 75 |
76 #ifndef BASE_TEST_TRACE_EVENT_ANALYZER_H_ | 76 #ifndef BASE_TEST_TRACE_EVENT_ANALYZER_H_ |
77 #define BASE_TEST_TRACE_EVENT_ANALYZER_H_ | 77 #define BASE_TEST_TRACE_EVENT_ANALYZER_H_ |
78 | 78 |
| 79 #include <stddef.h> |
| 80 #include <stdint.h> |
| 81 |
79 #include <map> | 82 #include <map> |
80 | 83 |
| 84 #include "base/macros.h" |
81 #include "base/memory/ref_counted.h" | 85 #include "base/memory/ref_counted.h" |
82 #include "base/trace_event/trace_event.h" | 86 #include "base/trace_event/trace_event.h" |
83 | 87 |
84 namespace base { | 88 namespace base { |
85 class Value; | 89 class Value; |
86 } | 90 } |
87 | 91 |
88 namespace trace_analyzer { | 92 namespace trace_analyzer { |
89 class QueryNode; | 93 class QueryNode; |
90 | 94 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 ~Query(); | 180 ~Query(); |
177 | 181 |
178 //////////////////////////////////////////////////////////////// | 182 //////////////////////////////////////////////////////////////// |
179 // Query literal values | 183 // Query literal values |
180 | 184 |
181 // Compare with the given string. | 185 // Compare with the given string. |
182 static Query String(const std::string& str); | 186 static Query String(const std::string& str); |
183 | 187 |
184 // Compare with the given number. | 188 // Compare with the given number. |
185 static Query Double(double num); | 189 static Query Double(double num); |
186 static Query Int(int32 num); | 190 static Query Int(int32_t num); |
187 static Query Uint(uint32 num); | 191 static Query Uint(uint32_t num); |
188 | 192 |
189 // Compare with the given bool. | 193 // Compare with the given bool. |
190 static Query Bool(bool boolean); | 194 static Query Bool(bool boolean); |
191 | 195 |
192 // Compare with the given phase. | 196 // Compare with the given phase. |
193 static Query Phase(char phase); | 197 static Query Phase(char phase); |
194 | 198 |
195 // Compare with the given string pattern. Only works with == and != operators. | 199 // Compare with the given string pattern. Only works with == and != operators. |
196 // Example: Query(EVENT_NAME) == Query::Pattern("MyEvent*") | 200 // Example: Query(EVENT_NAME) == Query::Pattern("MyEvent*") |
197 static Query Pattern(const std::string& pattern); | 201 static Query Pattern(const std::string& pattern); |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 Query operator||(const Query& rhs) const; | 403 Query operator||(const Query& rhs) const; |
400 Query operator!() const; | 404 Query operator!() const; |
401 | 405 |
402 // Arithmetic operators: | 406 // Arithmetic operators: |
403 // Following operators are applied to double arguments: | 407 // Following operators are applied to double arguments: |
404 Query operator+(const Query& rhs) const; | 408 Query operator+(const Query& rhs) const; |
405 Query operator-(const Query& rhs) const; | 409 Query operator-(const Query& rhs) const; |
406 Query operator*(const Query& rhs) const; | 410 Query operator*(const Query& rhs) const; |
407 Query operator/(const Query& rhs) const; | 411 Query operator/(const Query& rhs) const; |
408 Query operator-() const; | 412 Query operator-() const; |
409 // Mod operates on int64 args (doubles are casted to int64 beforehand): | 413 // Mod operates on int64_t args (doubles are casted to int64_t beforehand): |
410 Query operator%(const Query& rhs) const; | 414 Query operator%(const Query& rhs) const; |
411 | 415 |
412 // Return true if the given event matches this query tree. | 416 // Return true if the given event matches this query tree. |
413 // This is a recursive method that walks the query tree. | 417 // This is a recursive method that walks the query tree. |
414 bool Evaluate(const TraceEvent& event) const; | 418 bool Evaluate(const TraceEvent& event) const; |
415 | 419 |
416 private: | 420 private: |
417 enum TraceEventMember { | 421 enum TraceEventMember { |
418 EVENT_INVALID, | 422 EVENT_INVALID, |
419 EVENT_PID, | 423 EVENT_PID, |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 | 701 |
698 // Count all matches. | 702 // Count all matches. |
699 static inline size_t CountMatches(const TraceEventVector& events, | 703 static inline size_t CountMatches(const TraceEventVector& events, |
700 const Query& query) { | 704 const Query& query) { |
701 return CountMatches(events, query, 0u, events.size()); | 705 return CountMatches(events, query, 0u, events.size()); |
702 } | 706 } |
703 | 707 |
704 } // namespace trace_analyzer | 708 } // namespace trace_analyzer |
705 | 709 |
706 #endif // BASE_TEST_TRACE_EVENT_ANALYZER_H_ | 710 #endif // BASE_TEST_TRACE_EVENT_ANALYZER_H_ |
OLD | NEW |