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()) |
117 | 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()) |
| 159 |
118 | 160 |
119 if __name__ == '__main__': | 161 if __name__ == '__main__': |
120 unittest.main() | 162 unittest.main() |
OLD | NEW |