• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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/base/event_tracer.h"
12 
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webrtc/base/trace_event.h"
15 #include "webrtc/system_wrappers/include/static_instance.h"
16 
17 namespace {
18 
19 class TestStatistics {
20  public:
TestStatistics()21   TestStatistics() : events_logged_(0) {
22   }
23 
Reset()24   void Reset() {
25     events_logged_ = 0;
26   }
27 
Increment()28   void Increment() {
29     ++events_logged_;
30   }
31 
Count() const32   int Count() const { return events_logged_; }
33 
Get()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 
GetCategoryEnabledHandler(const char * name)45 static const unsigned char* GetCategoryEnabledHandler(const char* name) {
46   return reinterpret_cast<const unsigned char*>("test");
47 }
48 
AddTraceEventHandler(char phase,const unsigned char * category_enabled,const char * name,unsigned long long id,int num_args,const char ** arg_names,const unsigned char * arg_types,const unsigned long long * arg_values,unsigned char flags)49 static 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) {
58   TestStatistics::Get()->Increment();
59 }
60 
61 }  // namespace
62 
63 namespace webrtc {
64 
TEST(EventTracerTest,EventTracerDisabled)65 TEST(EventTracerTest, EventTracerDisabled) {
66   {
67     TRACE_EVENT0("test", "EventTracerDisabled");
68   }
69   EXPECT_FALSE(TestStatistics::Get()->Count());
70   TestStatistics::Get()->Reset();
71 }
72 
TEST(EventTracerTest,ScopedTraceEvent)73 TEST(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
83