| 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 |