blob: 643f67e4447c31a9ba47865cd25cab6169009a99 [file] [log] [blame]
hclam@chromium.orgad7efa62012-12-11 21:19:08 +00001/*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/system_wrappers/interface/event_tracer.h"
12
pbos@webrtc.orgacaf3a12013-05-27 15:07:45 +000013#include "testing/gtest/include/gtest/gtest.h"
hclam@chromium.orgad7efa62012-12-11 21:19:08 +000014#include "webrtc/system_wrappers/interface/static_instance.h"
15#include "webrtc/system_wrappers/interface/trace_event.h"
16
17namespace {
18
19class TestStatistics {
20 public:
21 TestStatistics() : events_logged_(0) {
22 }
23
24 void Reset() {
25 events_logged_ = 0;
26 }
27
28 void Increment() {
29 ++events_logged_;
30 }
31
32 int Count() const { return events_logged_; }
33
34 static TestStatistics* Get() {
35 static TestStatistics* test_stats = NULL;
36 if (!test_stats)
37 test_stats = new TestStatistics();
38 return test_stats;
39 }
40
41 private:
42 int events_logged_;
43};
44
45static const unsigned char* GetCategoryEnabledHandler(const char* name) {
46 return reinterpret_cast<const unsigned char*>("test");
47}
48
hclam@chromium.orgc5fcb082012-12-14 21:16:46 +000049static void AddTraceEventHandler(char phase,
50 const unsigned char* category_enabled,
51 const char* name,
52 unsigned long long id,
53 int num_args,
54 const char** arg_names,
55 const unsigned char* arg_types,
56 const unsigned long long* arg_values,
57 unsigned char flags) {
hclam@chromium.orgad7efa62012-12-11 21:19:08 +000058 TestStatistics::Get()->Increment();
hclam@chromium.orgad7efa62012-12-11 21:19:08 +000059}
60
61} // namespace
62
63namespace webrtc {
64
65TEST(EventTracerTest, EventTracerDisabled) {
66 {
67 TRACE_EVENT0("test", "EventTracerDisabled");
68 }
69 EXPECT_FALSE(TestStatistics::Get()->Count());
70 TestStatistics::Get()->Reset();
71}
72
73TEST(EventTracerTest, ScopedTraceEvent) {
74 SetupEventTracer(&GetCategoryEnabledHandler, &AddTraceEventHandler);
75 {
76 TRACE_EVENT0("test", "ScopedTraceEvent");
77 }
78 EXPECT_EQ(2, TestStatistics::Get()->Count());
79 TestStatistics::Get()->Reset();
80}
81
82} // namespace webrtc