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 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 49static 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 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 83