OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h" | 5 #include "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/field_trial.h" | 8 #include "base/field_trial.h" |
9 #include "base/histogram.h" | 9 #include "base/histogram.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 static const int kWebSocketConnectDeadlineSec = 10; | 21 static const int kWebSocketConnectDeadlineSec = 10; |
22 static const int kWebSocketEchoDeadlineSec = 5; | 22 static const int kWebSocketEchoDeadlineSec = 5; |
23 static const int kWebSocketIdleSec = 1; | 23 static const int kWebSocketIdleSec = 1; |
24 static const int kWebSocketPushDeadlineSec = 1; | 24 static const int kWebSocketPushDeadlineSec = 1; |
25 static const int kWebSocketByeDeadlineSec = 10; | 25 static const int kWebSocketByeDeadlineSec = 10; |
26 static const int kWebSocketCloseDeadlineSec = 5; | 26 static const int kWebSocketCloseDeadlineSec = 5; |
27 static const int kWebSocketTimeSec = 10; | 27 static const int kWebSocketTimeSec = 10; |
28 static const int kTimeBucketCount = 50; | 28 static const int kTimeBucketCount = 50; |
29 | 29 |
30 // TODO(ukai): Use new thread-safe-reference-counted Histograms. | 30 // TODO(ukai): Use new thread-safe-reference-counted Histograms. |
31 #define UPDATE_HISTOGRAM(name, sample, min, max, bucket_count) do { \ | 31 #define UPDATE_HISTOGRAM_ENUMS(name, sample, boundary_value) do { \ |
32 switch (task_state_) { \ | 32 switch (task_state_) { \ |
33 case STATE_RUN_WS: \ | 33 case STATE_RUN_WS: \ |
34 { \ | 34 { \ |
35 static scoped_refptr<Histogram> counter = \ | 35 UMA_HISTOGRAM_ENUMERATION( \ |
36 LinearHistogram::LinearHistogramFactoryGet(\ | 36 "WebSocketExperiment.Basic." name, \ |
37 "WebSocketExperiment.Basic." name, \ | 37 sample, boundary_value); \ |
38 min, max, bucket_count); \ | |
39 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
40 counter->Add(sample); \ | |
41 } \ | 38 } \ |
42 break; \ | 39 break; \ |
43 case STATE_RUN_WSS: \ | 40 case STATE_RUN_WSS: \ |
44 { \ | 41 { \ |
45 static scoped_refptr<Histogram> counter = \ | 42 UMA_HISTOGRAM_ENUMERATION( \ |
46 LinearHistogram::LinearHistogramFactoryGet(\ | 43 "WebSocketExperiment.Secure." name, \ |
47 "WebSocketExperiment.Secure." name, \ | 44 sample, boundary_value); \ |
48 min, max, bucket_count); \ | |
49 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
50 counter->Add(sample); \ | |
51 } \ | 45 } \ |
52 break; \ | 46 break; \ |
53 case STATE_RUN_WS_NODEFAULT_PORT: \ | 47 case STATE_RUN_WS_NODEFAULT_PORT: \ |
54 { \ | 48 { \ |
55 static scoped_refptr<Histogram> counter = \ | 49 UMA_HISTOGRAM_ENUMERATION( \ |
56 LinearHistogram::LinearHistogramFactoryGet(\ | 50 "WebSocketExperiment.NoDefaultPort." name, \ |
57 "WebSocketExperiment.NoDefaultPort." name, \ | 51 sample, boundary_value); \ |
58 min, max, bucket_count); \ | |
59 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
60 counter->Add(sample); \ | |
61 } \ | 52 } \ |
62 break; \ | 53 break; \ |
63 default: \ | 54 default: \ |
64 NOTREACHED(); \ | 55 NOTREACHED(); \ |
65 break; \ | 56 break; \ |
66 } \ | 57 } \ |
67 } while (0) | 58 } while (0) |
68 | 59 |
69 #define UPDATE_HISTOGRAM_TIMES(name, sample, min, max, bucket_count) do { \ | 60 #define UPDATE_HISTOGRAM_TIMES(name, sample, min, max, bucket_count) do { \ |
70 switch (task_state_) { \ | 61 switch (task_state_) { \ |
71 case STATE_RUN_WS: \ | 62 case STATE_RUN_WS: \ |
72 { \ | 63 { \ |
73 static scoped_refptr<Histogram> counter = \ | 64 UMA_HISTOGRAM_CUSTOM_TIMES( \ |
74 Histogram::HistogramFactoryGet(\ | 65 "WebSocketExperiment.Basic." name, \ |
75 "WebSocketExperiment.Basic." name, \ | 66 sample, min, max, bucket_count); \ |
76 min, max, bucket_count); \ | |
77 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
78 counter->AddTime(sample); \ | |
79 } \ | 67 } \ |
80 break; \ | 68 break; \ |
81 case STATE_RUN_WSS: \ | 69 case STATE_RUN_WSS: \ |
82 { \ | 70 { \ |
83 static scoped_refptr<Histogram> counter = \ | 71 UMA_HISTOGRAM_CUSTOM_TIMES( \ |
84 Histogram::HistogramFactoryGet(\ | 72 "WebSocketExperiment.Secure." name, \ |
85 "WebSocketExperiment.Secure." name, \ | 73 sample, min, max, bucket_count); \ |
86 min, max, bucket_count); \ | |
87 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
88 counter->AddTime(sample); \ | |
89 } \ | 74 } \ |
90 break; \ | 75 break; \ |
91 case STATE_RUN_WS_NODEFAULT_PORT: \ | 76 case STATE_RUN_WS_NODEFAULT_PORT: \ |
92 { \ | 77 { \ |
93 static scoped_refptr<Histogram> counter = \ | 78 UMA_HISTOGRAM_CUSTOM_TIMES( \ |
94 Histogram::HistogramFactoryGet(\ | 79 "WebSocketExperiment.NoDefaultPort." name, \ |
95 "WebSocketExperiment.NoDefaultPort." name, \ | 80 sample, min, max, bucket_count); \ |
96 min, max, bucket_count); \ | |
97 counter->SetFlags(kUmaTargetedHistogramFlag); \ | |
98 counter->AddTime(sample); \ | |
99 } \ | 81 } \ |
100 break; \ | 82 break; \ |
101 default: \ | 83 default: \ |
102 NOTREACHED(); \ | 84 NOTREACHED(); \ |
103 break; \ | 85 break; \ |
104 } \ | 86 } \ |
105 } while (0); | 87 } while (0); |
106 | 88 |
107 // Hold reference while experiment is running. | 89 // Hold reference while experiment is running. |
108 static scoped_refptr<WebSocketExperimentRunner> runner; | 90 static scoped_refptr<WebSocketExperimentRunner> runner; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 task_.reset(); | 252 task_.reset(); |
271 | 253 |
272 DoLoop(); | 254 DoLoop(); |
273 } | 255 } |
274 | 256 |
275 void WebSocketExperimentRunner::UpdateTaskResultHistogram( | 257 void WebSocketExperimentRunner::UpdateTaskResultHistogram( |
276 const WebSocketExperimentTask* task) { | 258 const WebSocketExperimentTask* task) { |
277 DCHECK(task); | 259 DCHECK(task); |
278 const WebSocketExperimentTask::Result& task_result = task->result(); | 260 const WebSocketExperimentTask::Result& task_result = task->result(); |
279 | 261 |
280 UPDATE_HISTOGRAM("LastState", task_result.last_state, | 262 UPDATE_HISTOGRAM_ENUMS("LastState", task_result.last_state, |
281 1, WebSocketExperimentTask::NUM_STATES, | 263 WebSocketExperimentTask::NUM_STATES); |
282 WebSocketExperimentTask::NUM_STATES + 1); | |
283 | 264 |
284 UPDATE_HISTOGRAM_TIMES("UrlFetch", task_result.url_fetch, | 265 UPDATE_HISTOGRAM_TIMES("UrlFetch", task_result.url_fetch, |
285 base::TimeDelta::FromMilliseconds(1), | 266 base::TimeDelta::FromMilliseconds(1), |
286 base::TimeDelta::FromSeconds(kUrlFetchDeadlineSec), | 267 base::TimeDelta::FromSeconds(kUrlFetchDeadlineSec), |
287 kTimeBucketCount); | 268 kTimeBucketCount); |
288 | 269 |
289 if (task_result.last_state < | 270 if (task_result.last_state < |
290 WebSocketExperimentTask::STATE_WEBSOCKET_CONNECT_COMPLETE) | 271 WebSocketExperimentTask::STATE_WEBSOCKET_CONNECT_COMPLETE) |
291 return; | 272 return; |
292 | 273 |
(...skipping 27 matching lines...) Expand all Loading... |
320 WebSocketExperimentTask::STATE_WEBSOCKET_CLOSE_COMPLETE) | 301 WebSocketExperimentTask::STATE_WEBSOCKET_CLOSE_COMPLETE) |
321 return; | 302 return; |
322 | 303 |
323 UPDATE_HISTOGRAM_TIMES("WebSocketTotal", task_result.websocket_total, | 304 UPDATE_HISTOGRAM_TIMES("WebSocketTotal", task_result.websocket_total, |
324 base::TimeDelta::FromMilliseconds(1), | 305 base::TimeDelta::FromMilliseconds(1), |
325 base::TimeDelta::FromSeconds(kWebSocketTimeSec), | 306 base::TimeDelta::FromSeconds(kWebSocketTimeSec), |
326 kTimeBucketCount); | 307 kTimeBucketCount); |
327 } | 308 } |
328 | 309 |
329 } // namespace chrome_browser_net_websocket_experiment | 310 } // namespace chrome_browser_net_websocket_experiment |
OLD | NEW |