Home | History | Annotate | Download | only in base
      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:
     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 
     45 static const unsigned char* GetCategoryEnabledHandler(const char* name) {
     46   return reinterpret_cast<const unsigned char*>("test");
     47 }
     48 
     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 
     65 TEST(EventTracerTest, EventTracerDisabled) {
     66   {
     67     TRACE_EVENT0("test", "EventTracerDisabled");
     68   }
     69   EXPECT_FALSE(TestStatistics::Get()->Count());
     70   TestStatistics::Get()->Reset();
     71 }
     72 
     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