Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: base/trace_event/trace_event_unittest.cc

Issue 2034393004: Allow multiple logging::LogMessage{Handler,Listener}s Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clean up, MockLog uses listener Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/trace_event.h" 5 #include "base/trace_event/trace_event.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 3019 matching lines...) Expand 10 before | Expand all | Expand 10 after
3030 BeginTrace(); 3030 BeginTrace();
3031 thread.task_runner()->PostTask( 3031 thread.task_runner()->PostTask(
3032 FROM_HERE, Bind(&TraceWithAllMacroVariants, &task_complete_event)); 3032 FROM_HERE, Bind(&TraceWithAllMacroVariants, &task_complete_event));
3033 task_complete_event.Wait(); 3033 task_complete_event.Wait();
3034 task_complete_event.Reset(); 3034 task_complete_event.Reset();
3035 EndTraceAndFlushInThreadWithMessageLoop(); 3035 EndTraceAndFlushInThreadWithMessageLoop();
3036 ValidateAllTraceMacrosCreatedData(trace_parsed_); 3036 ValidateAllTraceMacrosCreatedData(trace_parsed_);
3037 } 3037 }
3038 3038
3039 std::string* g_log_buffer = NULL; 3039 std::string* g_log_buffer = NULL;
3040 bool MockLogMessageHandler(int, const char*, int, size_t, 3040 void MockLogMessageListener(int, const char*, int, size_t,
3041 const std::string& str) { 3041 const std::string& str) {
3042 if (!g_log_buffer) 3042 if (!g_log_buffer)
3043 g_log_buffer = new std::string(); 3043 g_log_buffer = new std::string();
3044 g_log_buffer->append(str); 3044 g_log_buffer->append(str);
3045 return false;
3046 } 3045 }
3047 3046
3048 TEST_F(TraceEventTestFixture, EchoToConsole) { 3047 TEST_F(TraceEventTestFixture, EchoToConsole) {
3049 logging::LogMessageHandlerFunction old_log_message_handler = 3048 logging::ScopedLogMessageListener l(MockLogMessageListener);
3050 logging::GetLogMessageHandler();
3051 logging::SetLogMessageHandler(MockLogMessageHandler);
3052 3049
3053 TraceLog::GetInstance()->SetEnabled( 3050 TraceLog::GetInstance()->SetEnabled(
3054 TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE), 3051 TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE),
3055 TraceLog::RECORDING_MODE); 3052 TraceLog::RECORDING_MODE);
3056 TRACE_EVENT_BEGIN0("a", "begin_end"); 3053 TRACE_EVENT_BEGIN0("a", "begin_end");
3057 { 3054 {
3058 TRACE_EVENT0("b", "duration"); 3055 TRACE_EVENT0("b", "duration");
3059 TRACE_EVENT0("b1", "duration1"); 3056 TRACE_EVENT0("b1", "duration1");
3060 } 3057 }
3061 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); 3058 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL);
3062 TRACE_EVENT_END0("a", "begin_end"); 3059 TRACE_EVENT_END0("a", "begin_end");
3063 3060
3064 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); 3061 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b"));
3065 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b]\x1b")); 3062 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b]\x1b"));
3066 EXPECT_NE(std::string::npos, g_log_buffer->find("| | duration1[b1]\x1b")); 3063 EXPECT_NE(std::string::npos, g_log_buffer->find("| | duration1[b1]\x1b"));
3067 EXPECT_NE(std::string::npos, g_log_buffer->find("| | duration1[b1] (")); 3064 EXPECT_NE(std::string::npos, g_log_buffer->find("| | duration1[b1] ("));
3068 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b] (")); 3065 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b] ("));
3069 EXPECT_NE(std::string::npos, g_log_buffer->find("| instant[c]\x1b")); 3066 EXPECT_NE(std::string::npos, g_log_buffer->find("| instant[c]\x1b"));
3070 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a] (")); 3067 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a] ("));
3071 3068
3072 EndTraceAndFlush(); 3069 EndTraceAndFlush();
3073 delete g_log_buffer; 3070 delete g_log_buffer;
3074 logging::SetLogMessageHandler(old_log_message_handler);
3075 g_log_buffer = NULL; 3071 g_log_buffer = NULL;
3076 } 3072 }
3077 3073
3078 bool LogMessageHandlerWithTraceEvent(int, const char*, int, size_t, 3074 void LogMessageListenerWithTraceEvent(int, const char*, int, size_t,
3079 const std::string&) { 3075 const std::string&) {
3080 TRACE_EVENT0("log", "trace_event"); 3076 TRACE_EVENT0("log", "trace_event");
3081 return false;
3082 } 3077 }
3083 3078
3084 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { 3079 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) {
3085 logging::LogMessageHandlerFunction old_log_message_handler = 3080 logging::ScopedLogMessageListener l(LogMessageListenerWithTraceEvent);
3086 logging::GetLogMessageHandler();
3087 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent);
3088 3081
3089 TraceLog::GetInstance()->SetEnabled( 3082 TraceLog::GetInstance()->SetEnabled(
3090 TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE), 3083 TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE),
3091 TraceLog::RECORDING_MODE); 3084 TraceLog::RECORDING_MODE);
3092 { 3085 {
3093 // This should not cause deadlock or infinite recursion. 3086 // This should not cause deadlock or infinite recursion.
3094 TRACE_EVENT0("b", "duration"); 3087 TRACE_EVENT0("b", "duration");
3095 } 3088 }
3096 3089
3097 EndTraceAndFlush(); 3090 EndTraceAndFlush();
3098 logging::SetLogMessageHandler(old_log_message_handler);
3099 } 3091 }
3100 3092
3101 TEST_F(TraceEventTestFixture, TimeOffset) { 3093 TEST_F(TraceEventTestFixture, TimeOffset) {
3102 BeginTrace(); 3094 BeginTrace();
3103 // Let TraceLog timer start from 0. 3095 // Let TraceLog timer start from 0.
3104 TimeDelta time_offset = TimeTicks::Now() - TimeTicks(); 3096 TimeDelta time_offset = TimeTicks::Now() - TimeTicks();
3105 TraceLog::GetInstance()->SetTimeOffset(time_offset); 3097 TraceLog::GetInstance()->SetTimeOffset(time_offset);
3106 3098
3107 { 3099 {
3108 TRACE_EVENT0("all", "duration1"); 3100 TRACE_EVENT0("all", "duration1");
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
3175 3167
3176 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) { 3168 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) {
3177 BeginSpecificTrace("-*"); 3169 BeginSpecificTrace("-*");
3178 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1); 3170 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1);
3179 EndTraceAndFlush(); 3171 EndTraceAndFlush();
3180 EXPECT_TRUE(FindNamePhase("clock_sync", "c")); 3172 EXPECT_TRUE(FindNamePhase("clock_sync", "c"));
3181 } 3173 }
3182 3174
3183 } // namespace trace_event 3175 } // namespace trace_event
3184 } // namespace base 3176 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698