Index: tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
diff --git a/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py b/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
index 70051f854cfb03f718e6bd9a5ccb0c96f8ef5a58..ee2b103ccac1c29e6ac65733fda017dc6c1aebd7 100644 |
--- a/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
+++ b/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import json |
import logging |
import os |
import time |
@@ -872,6 +873,53 @@ class ChromeProxyMetric(network_metrics.NetworkMetric): |
results.AddValue(scalar.ScalarValue( |
results.current_page, 'succeeded_sum', 'count', succeeded)) |
+ def AddResultsForQuicTransaction(self, tab, results): |
+ histogram_type = histogram_util.BROWSER_HISTOGRAM |
+ # This histogram should be synchronously created when the Navigate occurs. |
+ # Verify that histogram DataReductionProxy.Quic.ProxyStatus has no samples |
+ # in bucket >=1. |
+ fail_counts_proxy_status = histogram_util.GetHistogramSum( |
+ histogram_type, |
+ 'DataReductionProxy.Quic.ProxyStatus', |
+ tab) |
+ if fail_counts_proxy_status != 0: |
+ raise ChromeProxyMetricException, ( |
+ 'fail_counts_proxy_status is %d.' % fail_counts_proxy_status) |
+ |
+ # Verify that histogram DataReductionProxy.Quic.ProxyStatus has at least 1 |
+ # sample. This sample must be in bucket 0 (QUIC_PROXY_STATUS_AVAILABLE). |
+ success_counts_proxy_status = histogram_util.GetHistogramCount( |
+ histogram_type, |
+ 'DataReductionProxy.Quic.ProxyStatus', |
+ tab) |
+ if success_counts_proxy_status <= 0: |
+ raise ChromeProxyMetricException, ( |
+ 'success_counts_proxy_status is %d.' % success_counts_proxy_status) |
+ |
+ # Navigate to one more page to ensure that established QUIC connection |
+ # is used for the next request. Give 1 second extra headroom for the QUIC |
+ # connection to be established. |
+ time.sleep(1) |
+ tab.Navigate('http://check.googlezip.net/test.html') |
+ |
+ proxy_usage_histogram_json = histogram_util.GetHistogram(histogram_type, |
+ 'Net.QuicAlternativeProxy.Usage', |
+ tab) |
+ proxy_usage_histogram = json.loads(proxy_usage_histogram_json) |
+ |
+ # Bucket ALTERNATIVE_PROXY_USAGE_NO_RACE should have at least one sample. |
+ if proxy_usage_histogram['buckets'][0]['count'] <= 0: |
+ raise ChromeProxyMetricException, ( |
+ 'Number of samples in ALTERNATIVE_PROXY_USAGE_NO_RACE bucket is %d.' |
+ % proxy_usage_histogram['buckets'][0]['count']) |
+ |
+ results.AddValue(scalar.ScalarValue( |
+ results.current_page, 'fail_counts_proxy_status', 'count', |
+ fail_counts_proxy_status)) |
+ results.AddValue(scalar.ScalarValue( |
+ results.current_page, 'success_counts_proxy_status', 'count', |
+ success_counts_proxy_status)) |
+ |
def AddResultsForBypassOnTimeout(self, tab, results): |
bypass_count = 0 |
# Wait maximum of 120 seconds for test to complete. Should complete soon |