Commit 3acc7c02 authored by blundell's avatar blundell Committed by Commit bot

tools/android/loading: Output cost of requests in report.py

This CL adds the tracking of the following per-user-lens metrics in report.py:
- Cumulative cost of requests
- Cumulative cost of preloaded requests

This provides extra insight over just having the number of such requests.

Review-Url: https://codereview.chromium.org/2039853003
Cr-Commit-Position: refs/heads/master@{#398011}
parent f6e96d2d
...@@ -60,10 +60,18 @@ ...@@ -60,10 +60,18 @@
"name": "contentful_preloaded_requests", "name": "contentful_preloaded_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "contentful_preloaded_requests_cost",
"type": "FLOAT"
},
{ {
"name": "contentful_requests", "name": "contentful_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "contentful_requests_cost",
"type": "FLOAT"
},
{ {
"name": "contentful_script_frac", "name": "contentful_script_frac",
"type": "FLOAT" "type": "FLOAT"
...@@ -108,10 +116,18 @@ ...@@ -108,10 +116,18 @@
"name": "first_text_preloaded_requests", "name": "first_text_preloaded_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "first_text_preloaded_requests_cost",
"type": "FLOAT"
},
{ {
"name": "first_text_requests", "name": "first_text_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "first_text_requests_cost",
"type": "FLOAT"
},
{ {
"name": "first_text_script_frac", "name": "first_text_script_frac",
"type": "FLOAT" "type": "FLOAT"
...@@ -148,10 +164,18 @@ ...@@ -148,10 +164,18 @@
"name": "plt_preloaded_requests", "name": "plt_preloaded_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "plt_preloaded_requests_cost",
"type": "FLOAT"
},
{ {
"name": "plt_requests", "name": "plt_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "plt_requests_cost",
"type": "FLOAT"
},
{ {
"name": "plt_script_frac", "name": "plt_script_frac",
"type": "FLOAT" "type": "FLOAT"
...@@ -180,10 +204,18 @@ ...@@ -180,10 +204,18 @@
"name": "significant_preloaded_requests", "name": "significant_preloaded_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "significant_preloaded_requests_cost",
"type": "FLOAT"
},
{ {
"name": "significant_requests", "name": "significant_requests",
"type": "INTEGER" "type": "INTEGER"
}, },
{
"name": "significant_requests_cost",
"type": "FLOAT"
},
{ {
"name": "significant_script_frac", "name": "significant_script_frac",
"type": "FLOAT" "type": "FLOAT"
......
...@@ -52,9 +52,9 @@ class PerUserLensReport(object): ...@@ -52,9 +52,9 @@ class PerUserLensReport(object):
self._byte_frac = self._GenerateByteFrac(network_lens) self._byte_frac = self._GenerateByteFrac(network_lens)
self._requests = len(user_lens.CriticalRequests()) self._requests = user_lens.CriticalRequests()
self._preloaded_requests = len(set(preloaded_requests) & self._preloaded_requests = (
set(user_lens.CriticalRequests())) [r for r in preloaded_requests if r in self._requests])
self._cpu_busyness = _ComputeCpuBusyness(activity_lens, self._cpu_busyness = _ComputeCpuBusyness(activity_lens,
navigation_start_msec, navigation_start_msec,
...@@ -65,8 +65,13 @@ class PerUserLensReport(object): ...@@ -65,8 +65,13 @@ class PerUserLensReport(object):
report['ms'] = self._satisfied_msec - self._navigation_start_msec report['ms'] = self._satisfied_msec - self._navigation_start_msec
report['byte_frac'] = self._byte_frac report['byte_frac'] = self._byte_frac
report['requests'] = self._requests
report['preloaded_requests'] = self._preloaded_requests report['requests'] = len(self._requests)
report['preloaded_requests'] = len(self._preloaded_requests)
report['requests_cost'] = reduce(lambda x,y: x + y.Cost(),
self._requests, 0)
report['preloaded_requests_cost'] = reduce(lambda x,y: x + y.Cost(),
self._preloaded_requests, 0)
# Take the first (earliest) inversion. # Take the first (earliest) inversion.
report['inversion'] = self._inversions[0].url if self._inversions else None report['inversion'] = self._inversions[0].url if self._inversions else None
......
...@@ -112,6 +112,14 @@ class LoadingReportTestCase(unittest.TestCase): ...@@ -112,6 +112,14 @@ class LoadingReportTestCase(unittest.TestCase):
self.assertEqual(1, loading_report['first_text_preloaded_requests']) self.assertEqual(1, loading_report['first_text_preloaded_requests'])
self.assertEqual(1, loading_report['contentful_preloaded_requests']) self.assertEqual(1, loading_report['contentful_preloaded_requests'])
self.assertEqual(1, loading_report['significant_preloaded_requests']) self.assertEqual(1, loading_report['significant_preloaded_requests'])
self.assertEqual(401, loading_report['plt_requests_cost'])
self.assertEqual(1, loading_report['first_text_requests_cost'])
self.assertEqual(1, loading_report['contentful_requests_cost'])
self.assertEqual(1, loading_report['significant_requests_cost'])
self.assertEqual(1, loading_report['plt_preloaded_requests_cost'])
self.assertEqual(1, loading_report['first_text_preloaded_requests_cost'])
self.assertEqual(1, loading_report['contentful_preloaded_requests_cost'])
self.assertEqual(1, loading_report['significant_preloaded_requests_cost'])
self.assertIsNone(loading_report['contentful_inversion']) self.assertIsNone(loading_report['contentful_inversion'])
self.assertIsNone(loading_report['significant_inversion']) self.assertIsNone(loading_report['significant_inversion'])
self.assertIsNone(loading_report['ad_requests']) self.assertIsNone(loading_report['ad_requests'])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment