| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 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 import unittest | 5 import unittest |
| 6 | 6 |
| 7 import request_track | 7 import request_track |
| 8 import test_utils | 8 import test_utils |
| 9 import user_satisfied_lens | 9 import user_satisfied_lens |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 'frame_id': '123.%s' % timestamp_msec, | 25 'frame_id': '123.%s' % timestamp_msec, |
| 26 'initiator': {'type': 'other'}, | 26 'initiator': {'type': 'other'}, |
| 27 'timestamp': timestamp_sec, | 27 'timestamp': timestamp_sec, |
| 28 'timing': {'request_time': timestamp_sec, | 28 'timing': {'request_time': timestamp_sec, |
| 29 'loading_finished': duration} | 29 'loading_finished': duration} |
| 30 }) | 30 }) |
| 31 self._request_index += 1 | 31 self._request_index += 1 |
| 32 return rq | 32 return rq |
| 33 | 33 |
| 34 def testFirstContentfulPaintLens(self): | 34 def testFirstContentfulPaintLens(self): |
| 35 MAINFRAME = 1 |
| 36 SUBFRAME = 2 |
| 35 loading_trace = test_utils.LoadingTraceFromEvents( | 37 loading_trace = test_utils.LoadingTraceFromEvents( |
| 36 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], | 38 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], |
| 37 trace_events=[{'ts': 0, 'ph': 'I', | 39 trace_events=[{'ts': 0, 'ph': 'I', |
| 38 'cat': 'blink.some_other_user_timing', | 40 'cat': 'blink.some_other_user_timing', |
| 39 'name': 'firstContentfulPaint'}, | 41 'name': 'firstContentfulPaint'}, |
| 40 {'ts': 9 * self.MILLI_TO_MICRO, 'ph': 'I', | 42 {'ts': 30 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 41 'cat': 'blink.user_timing', | 43 'cat': 'blink.user_timing', |
| 42 'name': 'firstDiscontentPaint'}, | 44 'name': 'firstDiscontentPaint'}, |
| 45 {'ts': 5 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 46 'cat': 'blink.user_timing', |
| 47 'name': 'firstContentfulPaint', |
| 48 'args': {'frame': SUBFRAME} }, |
| 43 {'ts': 12 * self.MILLI_TO_MICRO, 'ph': 'I', | 49 {'ts': 12 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 44 'cat': 'blink.user_timing', | 50 'cat': 'blink.user_timing', |
| 45 'name': 'firstContentfulPaint'}, | 51 'name': 'firstContentfulPaint', |
| 46 {'ts': 22 * self.MILLI_TO_MICRO, 'ph': 'I', | 52 'args': {'frame': MAINFRAME}}]) |
| 47 'cat': 'blink.user_timing', | 53 loading_trace.tracing_track.SetMainFrameID(MAINFRAME) |
| 48 'name': 'firstContentfulPaint'}]) | |
| 49 lens = user_satisfied_lens.FirstContentfulPaintLens(loading_trace) | 54 lens = user_satisfied_lens.FirstContentfulPaintLens(loading_trace) |
| 50 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequests()) | 55 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequestIds()) |
| 51 self.assertEqual(1, lens.PostloadTimeMsec()) | 56 self.assertEqual(1, lens.PostloadTimeMsec()) |
| 52 | 57 |
| 53 def testCantGetNoSatisfaction(self): | 58 def testCantGetNoSatisfaction(self): |
| 59 MAINFRAME = 1 |
| 54 loading_trace = test_utils.LoadingTraceFromEvents( | 60 loading_trace = test_utils.LoadingTraceFromEvents( |
| 55 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], | 61 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], |
| 56 trace_events=[{'ts': 0, 'ph': 'I', | 62 trace_events=[{'ts': 0, 'ph': 'I', |
| 57 'cat': 'not_my_cat', | 63 'cat': 'not_my_cat', |
| 58 'name': 'someEvent'}]) | 64 'name': 'someEvent', |
| 65 'args': {'frame': MAINFRAME}}]) |
| 66 loading_trace.tracing_track.SetMainFrameID(MAINFRAME) |
| 59 lens = user_satisfied_lens.FirstContentfulPaintLens(loading_trace) | 67 lens = user_satisfied_lens.FirstContentfulPaintLens(loading_trace) |
| 60 self.assertEqual(set(['0.1', '0.2', '0.3']), lens.CriticalRequests()) | 68 self.assertEqual(set(['0.1', '0.2', '0.3']), lens.CriticalRequestIds()) |
| 61 self.assertEqual(float('inf'), lens.PostloadTimeMsec()) | 69 self.assertEqual(float('inf'), lens.PostloadTimeMsec()) |
| 62 | 70 |
| 63 def testFirstTextPaintLens(self): | 71 def testFirstTextPaintLens(self): |
| 72 MAINFRAME = 1 |
| 73 SUBFRAME = 2 |
| 64 loading_trace = test_utils.LoadingTraceFromEvents( | 74 loading_trace = test_utils.LoadingTraceFromEvents( |
| 65 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], | 75 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], |
| 66 trace_events=[{'ts': 0, 'ph': 'I', | 76 trace_events=[{'ts': 0, 'ph': 'I', |
| 67 'cat': 'blink.some_other_user_timing', | 77 'cat': 'blink.some_other_user_timing', |
| 68 'name': 'firstPaint'}, | 78 'name': 'firstPaint'}, |
| 69 {'ts': 9 * self.MILLI_TO_MICRO, 'ph': 'I', | 79 {'ts': 30 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 70 'cat': 'blink.user_timing', | 80 'cat': 'blink.user_timing', |
| 71 'name': 'firstishPaint'}, | 81 'name': 'firstishPaint', |
| 82 'args': {'frame': MAINFRAME}}, |
| 83 {'ts': 3 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 84 'cat': 'blink.user_timing', |
| 85 'name': 'firstPaint', |
| 86 'args': {'frame': SUBFRAME}}, |
| 72 {'ts': 12 * self.MILLI_TO_MICRO, 'ph': 'I', | 87 {'ts': 12 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 73 'cat': 'blink.user_timing', | 88 'cat': 'blink.user_timing', |
| 74 'name': 'firstPaint'}, | 89 'name': 'firstPaint', |
| 75 {'ts': 22 * self.MILLI_TO_MICRO, 'ph': 'I', | 90 'args': {'frame': MAINFRAME}}]) |
| 76 'cat': 'blink.user_timing', | 91 loading_trace.tracing_track.SetMainFrameID(MAINFRAME) |
| 77 'name': 'firstPaint'}]) | |
| 78 lens = user_satisfied_lens.FirstTextPaintLens(loading_trace) | 92 lens = user_satisfied_lens.FirstTextPaintLens(loading_trace) |
| 79 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequests()) | 93 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequestIds()) |
| 80 self.assertEqual(1, lens.PostloadTimeMsec()) | 94 self.assertEqual(1, lens.PostloadTimeMsec()) |
| 81 | 95 |
| 82 def testFirstSignificantPaintLens(self): | 96 def testFirstSignificantPaintLens(self): |
| 83 loading_trace = test_utils.LoadingTraceFromEvents( | 97 loading_trace = test_utils.LoadingTraceFromEvents( |
| 84 [self._RequestAt(1), self._RequestAt(10), | 98 [self._RequestAt(1), self._RequestAt(10), |
| 85 self._RequestAt(15), self._RequestAt(20)], | 99 self._RequestAt(15), self._RequestAt(20)], |
| 86 trace_events=[{'ts': 0, 'ph': 'I', | 100 trace_events=[{'ts': 0, 'ph': 'I', |
| 87 'cat': 'blink', | 101 'cat': 'blink', |
| 88 'name': 'firstPaint'}, | 102 'name': 'firstPaint'}, |
| 89 {'ts': 9 * self.MILLI_TO_MICRO, 'ph': 'I', | 103 {'ts': 9 * self.MILLI_TO_MICRO, 'ph': 'I', |
| (...skipping 15 matching lines...) Expand all Loading... |
| 105 'cat': 'foobar', 'name': 'biz', | 119 'cat': 'foobar', 'name': 'biz', |
| 106 'args': {'counters': { | 120 'args': {'counters': { |
| 107 'LayoutObjectsThatHadNeverHadLayout': 12 | 121 'LayoutObjectsThatHadNeverHadLayout': 12 |
| 108 } } }, | 122 } } }, |
| 109 {'ts': 15 * self.MILLI_TO_MICRO, 'ph': 'I', | 123 {'ts': 15 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 110 'cat': 'foobar', 'name': 'biz', | 124 'cat': 'foobar', 'name': 'biz', |
| 111 'args': {'counters': { | 125 'args': {'counters': { |
| 112 'LayoutObjectsThatHadNeverHadLayout': 10 | 126 'LayoutObjectsThatHadNeverHadLayout': 10 |
| 113 } } } ]) | 127 } } } ]) |
| 114 lens = user_satisfied_lens.FirstSignificantPaintLens(loading_trace) | 128 lens = user_satisfied_lens.FirstSignificantPaintLens(loading_trace) |
| 115 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequests()) | 129 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequestIds()) |
| 116 self.assertEqual(7, lens.PostloadTimeMsec()) | 130 self.assertEqual(7, lens.PostloadTimeMsec()) |
| 131 |
| 132 def testRequestFingerprintLens(self): |
| 133 MAINFRAME = 1 |
| 134 SUBFRAME = 2 |
| 135 loading_trace = test_utils.LoadingTraceFromEvents( |
| 136 [self._RequestAt(1), self._RequestAt(10), self._RequestAt(20)], |
| 137 trace_events=[{'ts': 0, 'ph': 'I', |
| 138 'cat': 'blink.some_other_user_timing', |
| 139 'name': 'firstContentfulPaint'}, |
| 140 {'ts': 30 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 141 'cat': 'blink.user_timing', |
| 142 'name': 'firstDiscontentPaint'}, |
| 143 {'ts': 5 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 144 'cat': 'blink.user_timing', |
| 145 'name': 'firstContentfulPaint', |
| 146 'args': {'frame': SUBFRAME} }, |
| 147 {'ts': 12 * self.MILLI_TO_MICRO, 'ph': 'I', |
| 148 'cat': 'blink.user_timing', |
| 149 'name': 'firstContentfulPaint', |
| 150 'args': {'frame': MAINFRAME}}]) |
| 151 loading_trace.tracing_track.SetMainFrameID(MAINFRAME) |
| 152 lens = user_satisfied_lens.FirstContentfulPaintLens(loading_trace) |
| 153 self.assertEqual(set(['0.1', '0.2']), lens.CriticalRequestIds()) |
| 154 self.assertEqual(1, lens.PostloadTimeMsec()) |
| 155 request_lens = user_satisfied_lens.RequestFingerprintLens( |
| 156 loading_trace, lens.CriticalFingerprints()) |
| 157 self.assertEqual(set(['0.1', '0.2']), request_lens.CriticalRequestIds()) |
| 158 self.assertEqual(0, request_lens.PostloadTimeMsec()) |
| OLD | NEW |