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

Side by Side Diff: webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc

Issue 2790533002: Remove ALL usage of CriticalSectionWrapper. (Closed)
Patch Set: remove winXP rw_lock include Created 3 years, 8 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h" 11 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h"
12 12
13 #if BWE_TEST_LOGGING_COMPILE_TIME_ENABLE 13 #if BWE_TEST_LOGGING_COMPILE_TIME_ENABLE
14 14
15 #include <stdarg.h> 15 #include <stdarg.h>
16 #include <stdio.h> 16 #include <stdio.h>
17 17
18 #include <algorithm> 18 #include <algorithm>
19 #include <sstream> 19 #include <sstream>
20 20
21 #include "webrtc/base/checks.h" 21 #include "webrtc/base/checks.h"
22 #include "webrtc/base/format_macros.h" 22 #include "webrtc/base/format_macros.h"
23 #include "webrtc/base/platform_thread.h" 23 #include "webrtc/base/platform_thread.h"
24 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
25 24
26 namespace webrtc { 25 namespace webrtc {
27 namespace testing { 26 namespace testing {
28 namespace bwe { 27 namespace bwe {
29 28
30 Logging Logging::g_Logging; 29 Logging Logging::g_Logging;
31 30
32 static std::string ToString(uint32_t v) { 31 static std::string ToString(uint32_t v) {
33 std::stringstream ss; 32 std::stringstream ss;
34 ss << v; 33 ss << v;
(...skipping 16 matching lines...) Expand all
51 50
52 Logging::Context::~Context() { 51 Logging::Context::~Context() {
53 Logging::GetInstance()->PopState(); 52 Logging::GetInstance()->PopState();
54 } 53 }
55 54
56 Logging* Logging::GetInstance() { 55 Logging* Logging::GetInstance() {
57 return &g_Logging; 56 return &g_Logging;
58 } 57 }
59 58
60 void Logging::SetGlobalContext(uint32_t name) { 59 void Logging::SetGlobalContext(uint32_t name) {
61 CriticalSectionScoped cs(crit_sect_.get()); 60 rtc::CritScope cs(&crit_sect_);
62 thread_map_[rtc::CurrentThreadId()].global_state.tag = ToString(name); 61 thread_map_[rtc::CurrentThreadId()].global_state.tag = ToString(name);
63 } 62 }
64 63
65 void Logging::SetGlobalContext(const std::string& name) { 64 void Logging::SetGlobalContext(const std::string& name) {
66 CriticalSectionScoped cs(crit_sect_.get()); 65 rtc::CritScope cs(&crit_sect_);
67 thread_map_[rtc::CurrentThreadId()].global_state.tag = name; 66 thread_map_[rtc::CurrentThreadId()].global_state.tag = name;
68 } 67 }
69 68
70 void Logging::SetGlobalContext(const char* name) { 69 void Logging::SetGlobalContext(const char* name) {
71 CriticalSectionScoped cs(crit_sect_.get()); 70 rtc::CritScope cs(&crit_sect_);
72 thread_map_[rtc::CurrentThreadId()].global_state.tag = name; 71 thread_map_[rtc::CurrentThreadId()].global_state.tag = name;
73 } 72 }
74 73
75 void Logging::SetGlobalEnable(bool enabled) { 74 void Logging::SetGlobalEnable(bool enabled) {
76 CriticalSectionScoped cs(crit_sect_.get()); 75 rtc::CritScope cs(&crit_sect_);
77 thread_map_[rtc::CurrentThreadId()].global_state.enabled = enabled; 76 thread_map_[rtc::CurrentThreadId()].global_state.enabled = enabled;
78 } 77 }
79 78
80 void Logging::Log(const char format[], ...) { 79 void Logging::Log(const char format[], ...) {
81 CriticalSectionScoped cs(crit_sect_.get()); 80 rtc::CritScope cs(&crit_sect_);
82 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 81 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
83 RTC_DCHECK(it != thread_map_.end()); 82 RTC_DCHECK(it != thread_map_.end());
84 const State& state = it->second.stack.top(); 83 const State& state = it->second.stack.top();
85 if (state.enabled) { 84 if (state.enabled) {
86 printf("%s\t", state.tag.c_str()); 85 printf("%s\t", state.tag.c_str());
87 va_list args; 86 va_list args;
88 va_start(args, format); 87 va_start(args, format);
89 vprintf(format, args); 88 vprintf(format, args);
90 va_end(args); 89 va_end(args);
91 printf("\n"); 90 printf("\n");
(...skipping 16 matching lines...) Expand all
108 double value, 107 double value,
109 const std::string& alg_name) { 108 const std::string& alg_name) {
110 Plot(figure, name, value, 0, alg_name); 109 Plot(figure, name, value, 0, alg_name);
111 } 110 }
112 111
113 void Logging::Plot(int figure, 112 void Logging::Plot(int figure,
114 const std::string& name, 113 const std::string& name,
115 double value, 114 double value,
116 uint32_t ssrc, 115 uint32_t ssrc,
117 const std::string& alg_name) { 116 const std::string& alg_name) {
118 CriticalSectionScoped cs(crit_sect_.get()); 117 rtc::CritScope cs(&crit_sect_);
119 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 118 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
120 RTC_DCHECK(it != thread_map_.end()); 119 RTC_DCHECK(it != thread_map_.end());
121 const State& state = it->second.stack.top(); 120 const State& state = it->second.stack.top();
122 if (state.enabled) { 121 if (state.enabled) {
123 printf("PLOT\t%d\t%s:%" PRIu32 "@%s\t%f\t%f\n", figure, name.c_str(), ssrc, 122 printf("PLOT\t%d\t%s:%" PRIu32 "@%s\t%f\t%f\n", figure, name.c_str(), ssrc,
124 alg_name.c_str(), state.timestamp_ms * 0.001, value); 123 alg_name.c_str(), state.timestamp_ms * 0.001, value);
125 } 124 }
126 } 125 }
127 126
128 void Logging::PlotBar(int figure, 127 void Logging::PlotBar(int figure,
129 const std::string& name, 128 const std::string& name,
130 double value, 129 double value,
131 int flow_id) { 130 int flow_id) {
132 CriticalSectionScoped cs(crit_sect_.get()); 131 rtc::CritScope cs(&crit_sect_);
133 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 132 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
134 RTC_DCHECK(it != thread_map_.end()); 133 RTC_DCHECK(it != thread_map_.end());
135 const State& state = it->second.stack.top(); 134 const State& state = it->second.stack.top();
136 if (state.enabled) { 135 if (state.enabled) {
137 printf("BAR\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value); 136 printf("BAR\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value);
138 } 137 }
139 } 138 }
140 139
141 void Logging::PlotBaselineBar(int figure, 140 void Logging::PlotBaselineBar(int figure,
142 const std::string& name, 141 const std::string& name,
143 double value, 142 double value,
144 int flow_id) { 143 int flow_id) {
145 CriticalSectionScoped cs(crit_sect_.get()); 144 rtc::CritScope cs(&crit_sect_);
146 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 145 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
147 RTC_DCHECK(it != thread_map_.end()); 146 RTC_DCHECK(it != thread_map_.end());
148 const State& state = it->second.stack.top(); 147 const State& state = it->second.stack.top();
149 if (state.enabled) { 148 if (state.enabled) {
150 printf("BASELINE\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value); 149 printf("BASELINE\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value);
151 } 150 }
152 } 151 }
153 152
154 void Logging::PlotErrorBar(int figure, 153 void Logging::PlotErrorBar(int figure,
155 const std::string& name, 154 const std::string& name,
156 double value, 155 double value,
157 double ylow, 156 double ylow,
158 double yhigh, 157 double yhigh,
159 const std::string& error_title, 158 const std::string& error_title,
160 int flow_id) { 159 int flow_id) {
161 CriticalSectionScoped cs(crit_sect_.get()); 160 rtc::CritScope cs(&crit_sect_);
162 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 161 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
163 RTC_DCHECK(it != thread_map_.end()); 162 RTC_DCHECK(it != thread_map_.end());
164 const State& state = it->second.stack.top(); 163 const State& state = it->second.stack.top();
165 if (state.enabled) { 164 if (state.enabled) {
166 printf("ERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\n", figure, name.c_str(), 165 printf("ERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\n", figure, name.c_str(),
167 flow_id, value, ylow, yhigh, error_title.c_str()); 166 flow_id, value, ylow, yhigh, error_title.c_str());
168 } 167 }
169 } 168 }
170 169
171 void Logging::PlotLimitErrorBar(int figure, 170 void Logging::PlotLimitErrorBar(int figure,
172 const std::string& name, 171 const std::string& name,
173 double value, 172 double value,
174 double ylow, 173 double ylow,
175 double yhigh, 174 double yhigh,
176 const std::string& error_title, 175 const std::string& error_title,
177 double ymax, 176 double ymax,
178 const std::string& limit_title, 177 const std::string& limit_title,
179 int flow_id) { 178 int flow_id) {
180 CriticalSectionScoped cs(crit_sect_.get()); 179 rtc::CritScope cs(&crit_sect_);
181 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 180 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
182 RTC_DCHECK(it != thread_map_.end()); 181 RTC_DCHECK(it != thread_map_.end());
183 const State& state = it->second.stack.top(); 182 const State& state = it->second.stack.top();
184 if (state.enabled) { 183 if (state.enabled) {
185 printf("LIMITERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\t%f\t%s\n", figure, 184 printf("LIMITERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\t%f\t%s\n", figure,
186 name.c_str(), flow_id, value, ylow, yhigh, error_title.c_str(), ymax, 185 name.c_str(), flow_id, value, ylow, yhigh, error_title.c_str(), ymax,
187 limit_title.c_str()); 186 limit_title.c_str());
188 } 187 }
189 } 188 }
190 189
191 void Logging::PlotLabel(int figure, 190 void Logging::PlotLabel(int figure,
192 const std::string& title, 191 const std::string& title,
193 const std::string& y_label, 192 const std::string& y_label,
194 int num_flows) { 193 int num_flows) {
195 CriticalSectionScoped cs(crit_sect_.get()); 194 rtc::CritScope cs(&crit_sect_);
196 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 195 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
197 RTC_DCHECK(it != thread_map_.end()); 196 RTC_DCHECK(it != thread_map_.end());
198 const State& state = it->second.stack.top(); 197 const State& state = it->second.stack.top();
199 if (state.enabled) { 198 if (state.enabled) {
200 printf("LABEL\t%d\t%s\t%s\t%d\n", figure, title.c_str(), y_label.c_str(), 199 printf("LABEL\t%d\t%s\t%s\t%d\n", figure, title.c_str(), y_label.c_str(),
201 num_flows); 200 num_flows);
202 } 201 }
203 } 202 }
204 203
205 Logging::Logging() 204 Logging::Logging()
206 : crit_sect_(CriticalSectionWrapper::CreateCriticalSection()), 205 : thread_map_() {
207 thread_map_() {
208 } 206 }
209 207
210 Logging::State::State() : tag(""), timestamp_ms(0), enabled(true) {} 208 Logging::State::State() : tag(""), timestamp_ms(0), enabled(true) {}
211 209
212 Logging::State::State(const std::string& tag, int64_t timestamp_ms, 210 Logging::State::State(const std::string& tag, int64_t timestamp_ms,
213 bool enabled) 211 bool enabled)
214 : tag(tag), 212 : tag(tag),
215 timestamp_ms(timestamp_ms), 213 timestamp_ms(timestamp_ms),
216 enabled(enabled) { 214 enabled(enabled) {
217 } 215 }
218 216
219 void Logging::State::MergePrevious(const State& previous) { 217 void Logging::State::MergePrevious(const State& previous) {
220 if (tag.empty()) { 218 if (tag.empty()) {
221 tag = previous.tag; 219 tag = previous.tag;
222 } else if (!previous.tag.empty()) { 220 } else if (!previous.tag.empty()) {
223 tag = previous.tag + "_" + tag; 221 tag = previous.tag + "_" + tag;
224 } 222 }
225 timestamp_ms = std::max(previous.timestamp_ms, timestamp_ms); 223 timestamp_ms = std::max(previous.timestamp_ms, timestamp_ms);
226 enabled = previous.enabled && enabled; 224 enabled = previous.enabled && enabled;
227 } 225 }
228 226
229 void Logging::PushState(const std::string& append_to_tag, int64_t timestamp_ms, 227 void Logging::PushState(const std::string& append_to_tag, int64_t timestamp_ms,
230 bool enabled) { 228 bool enabled) {
231 CriticalSectionScoped cs(crit_sect_.get()); 229 rtc::CritScope cs(&crit_sect_);
232 State new_state(append_to_tag, timestamp_ms, enabled); 230 State new_state(append_to_tag, timestamp_ms, enabled);
233 ThreadState* thread_state = &thread_map_[rtc::CurrentThreadId()]; 231 ThreadState* thread_state = &thread_map_[rtc::CurrentThreadId()];
234 std::stack<State>* stack = &thread_state->stack; 232 std::stack<State>* stack = &thread_state->stack;
235 if (stack->empty()) { 233 if (stack->empty()) {
236 new_state.MergePrevious(thread_state->global_state); 234 new_state.MergePrevious(thread_state->global_state);
237 } else { 235 } else {
238 new_state.MergePrevious(stack->top()); 236 new_state.MergePrevious(stack->top());
239 } 237 }
240 stack->push(new_state); 238 stack->push(new_state);
241 } 239 }
242 240
243 void Logging::PopState() { 241 void Logging::PopState() {
244 CriticalSectionScoped cs(crit_sect_.get()); 242 rtc::CritScope cs(&crit_sect_);
245 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId()); 243 ThreadMap::iterator it = thread_map_.find(rtc::CurrentThreadId());
246 RTC_DCHECK(it != thread_map_.end()); 244 RTC_DCHECK(it != thread_map_.end());
247 std::stack<State>* stack = &it->second.stack; 245 std::stack<State>* stack = &it->second.stack;
248 int64_t newest_timestamp_ms = stack->top().timestamp_ms; 246 int64_t newest_timestamp_ms = stack->top().timestamp_ms;
249 stack->pop(); 247 stack->pop();
250 if (!stack->empty()) { 248 if (!stack->empty()) {
251 State* state = &stack->top(); 249 State* state = &stack->top();
252 // Update time so that next log/plot will use the latest time seen so far 250 // Update time so that next log/plot will use the latest time seen so far
253 // in this call tree. 251 // in this call tree.
254 state->timestamp_ms = std::max(state->timestamp_ms, newest_timestamp_ms); 252 state->timestamp_ms = std::max(state->timestamp_ms, newest_timestamp_ms);
255 } 253 }
256 } 254 }
257 } // namespace bwe 255 } // namespace bwe
258 } // namespace testing 256 } // namespace testing
259 } // namespace webrtc 257 } // namespace webrtc
260 258
261 #endif // BWE_TEST_LOGGING_COMPILE_TIME_ENABLE 259 #endif // BWE_TEST_LOGGING_COMPILE_TIME_ENABLE
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698