1b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org/* 2b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * 4b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * Use of this source code is governed by a BSD-style license 5b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * that can be found in the LICENSE file in the root of the source 6b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * tree. An additional intellectual property rights grant can be found 7b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * in the file PATENTS. All contributing project authors may 8b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * be found in the AUTHORS file in the root of the source tree. 9b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org */ 10b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 11b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#include "webrtc/system_wrappers/interface/event_tracer.h" 12b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 13c6d6fed3c0a82bb7a09095381b974e8e5eebcb35pbos@webrtc.org#include "testing/gtest/include/gtest/gtest.h" 14b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#include "webrtc/system_wrappers/interface/static_instance.h" 15b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#include "webrtc/system_wrappers/interface/trace_event.h" 16b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 17b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgnamespace { 18b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 19b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgclass TestStatistics { 20b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org public: 21b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TestStatistics() : events_logged_(0) { 22b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 23b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 24b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org void Reset() { 25b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org events_logged_ = 0; 26b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 27b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 28b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org void Increment() { 29b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org ++events_logged_; 30b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 31b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 32b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org int Count() const { return events_logged_; } 33b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 34b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org static TestStatistics* Get() { 35b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org static TestStatistics* test_stats = NULL; 36b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org if (!test_stats) 37b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org test_stats = new TestStatistics(); 38b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org return test_stats; 39b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 40b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 41b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org private: 42b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org int events_logged_; 43b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org}; 44b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 45b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgstatic const unsigned char* GetCategoryEnabledHandler(const char* name) { 46b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org return reinterpret_cast<const unsigned char*>("test"); 47b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} 48b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 4962b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.orgstatic void AddTraceEventHandler(char phase, 5062b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned char* category_enabled, 5162b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const char* name, 5262b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org unsigned long long id, 5362b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org int num_args, 5462b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const char** arg_names, 5562b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned char* arg_types, 5662b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned long long* arg_values, 5762b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org unsigned char flags) { 58b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TestStatistics::Get()->Increment(); 59b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} 60b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 61b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} // namespace 62b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 63b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgnamespace webrtc { 64b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 65b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgTEST(EventTracerTest, EventTracerDisabled) { 66b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org { 67b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TRACE_EVENT0("test", "EventTracerDisabled"); 68b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 69b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org EXPECT_FALSE(TestStatistics::Get()->Count()); 70b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TestStatistics::Get()->Reset(); 71b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} 72b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 73b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgTEST(EventTracerTest, ScopedTraceEvent) { 74b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org SetupEventTracer(&GetCategoryEnabledHandler, &AddTraceEventHandler); 75b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org { 76b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TRACE_EVENT0("test", "ScopedTraceEvent"); 77b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org } 78b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org EXPECT_EQ(2, TestStatistics::Get()->Count()); 79b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org TestStatistics::Get()->Reset(); 80b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} 81b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 82b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} // namespace webrtc 83