Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: tools/perf/metrics/speedindex_unittest.py

Issue 805393003: [Telemetry] Remove old paint-rect speed index implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Report none value when not supported Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/metrics/speedindex.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/metrics/speedindex_unittest.py
diff --git a/tools/perf/metrics/speedindex_unittest.py b/tools/perf/metrics/speedindex_unittest.py
index d218f370448b84a2b20310ff52ab3178005f720a..b2474d9043bfdb9fac2e2c738ce2054dfba90fe0 100644
--- a/tools/perf/metrics/speedindex_unittest.py
+++ b/tools/perf/metrics/speedindex_unittest.py
@@ -9,21 +9,9 @@ import json
import os
import unittest
+from metrics import speedindex
from telemetry.image_processing import histogram
from telemetry.image_processing import rgba_color
-from telemetry.timeline import model
-from telemetry.timeline import trace_data as trace_data_module
-from metrics import speedindex
-
-# Sample timeline data in the json format provided by devtools.
-# The sample events will be used in several tests below.
-_TEST_DIR = os.path.join(os.path.dirname(__file__), 'unittest_data')
-_SAMPLE_DATA = json.load(open(os.path.join(_TEST_DIR, 'sample_timeline.json')))
-_SAMPLE_TRACE_BUILDER = trace_data_module.TraceDataBuilder()
-_SAMPLE_TRACE_BUILDER.AddEventsTo(
- trace_data_module.INSPECTOR_TRACE_PART, _SAMPLE_DATA)
-_SAMPLE_EVENTS = model.TimelineModel(
- _SAMPLE_TRACE_BUILDER.AsData()).GetAllEvents()
class FakeImageUtil(object):
@@ -31,17 +19,6 @@ class FakeImageUtil(object):
def GetColorHistogram(self, image, ignore_color=None, tolerance=None):
return image.ColorHistogram()
-class FakeTimelineModel(object):
- def __init__(self):
- self._events = []
-
- def SetAllEvents(self, events):
- self._events = events
-
- def GetAllEvents(self, recursive=True):
- assert recursive == True
- return self._events
-
class FakeVideo(object):
def __init__(self, frames):
@@ -62,15 +39,10 @@ class FakeBitmap(object):
class FakeTab(object):
def __init__(self, video_capture_result=None):
- self._timeline_model = FakeTimelineModel()
self._javascript_result = None
self._video_capture_result = FakeVideo(video_capture_result)
@property
- def timeline_model(self):
- return self._timeline_model
-
- @property
def video_capture_supported(self):
return self._video_capture_result is not None
@@ -92,27 +64,7 @@ class FakeTab(object):
pass
-class IncludedPaintEventsTest(unittest.TestCase):
- def testNumberPaintEvents(self):
- impl = speedindex.PaintRectSpeedIndexImpl()
- # In the sample data, there's one event that occurs before the layout event,
- # and one paint event that's not a leaf paint event.
- events = impl._IncludedPaintEvents(_SAMPLE_EVENTS)
- self.assertEqual(len(events), 5)
-
-
class SpeedIndexImplTest(unittest.TestCase):
- def testAdjustedAreaDict(self):
- impl = speedindex.PaintRectSpeedIndexImpl()
- paint_events = impl._IncludedPaintEvents(_SAMPLE_EVENTS)
- viewport = 1000, 1000
- time_area_dict = impl._TimeAreaDict(paint_events, viewport)
- self.assertEqual(len(time_area_dict), 4)
- # The event that ends at time 100 is a fullscreen; it's discounted by half.
- self.assertEqual(time_area_dict[100], 500000)
- self.assertEqual(time_area_dict[300], 100000)
- self.assertEqual(time_area_dict[400], 200000)
- self.assertEqual(time_area_dict[800], 200000)
def testVideoCompleteness(self):
frames = [
@@ -165,75 +117,5 @@ class SpeedIndexImplTest(unittest.TestCase):
self.assertAlmostEqual(time_completeness[1], completeness)
-class SpeedIndexTest(unittest.TestCase):
- def testWithSampleData(self):
- tab = FakeTab()
- impl = speedindex.PaintRectSpeedIndexImpl()
- viewport = 1000, 1000
- # Add up the parts of the speed index for each time interval.
- # Each part is the time interval multiplied by the proportion of the
- # total area value that is not yet painted for that interval.
- parts = []
- parts.append(100 * 1.0)
- parts.append(200 * 0.5)
- parts.append(100 * 0.4)
- parts.append(400 * 0.2)
- expected = sum(parts) # 330.0
- tab.timeline_model.SetAllEvents(_SAMPLE_EVENTS)
- tab.SetEvaluateJavaScriptResult(viewport)
- actual = impl.CalculateSpeedIndex(tab)
- self.assertEqual(actual, expected)
-
-
-class WPTComparisonTest(unittest.TestCase):
- """Compare the speed index results with results given by webpagetest.org.
-
- Given the same timeline data, both this speedindex metric and webpagetest.org
- should both return the same results. Fortunately, webpagetest.org also
- provides timeline data in json format along with the speed index results.
- """
-
- def _TestJsonTimelineExpectation(self, filename, viewport, expected):
- """Check whether the result for some timeline data is as expected.
-
- Args:
- filename: Filename of a json file which contains a
- expected: The result expected based on the WPT result.
- """
- tab = FakeTab()
- impl = speedindex.PaintRectSpeedIndexImpl()
- file_path = os.path.join(_TEST_DIR, filename)
- with open(file_path) as json_file:
- raw_events = json.load(json_file)
- trace_data_builder = trace_data_module.TraceDataBuilder()
- trace_data_builder.AddEventsTo(
- trace_data_module.INSPECTOR_TRACE_PART, raw_events)
- tab.timeline_model.SetAllEvents(
- model.TimelineModel(trace_data_builder.AsData()).GetAllEvents())
- tab.SetEvaluateJavaScriptResult(viewport)
- actual = impl.CalculateSpeedIndex(tab)
- # The result might differ by 1 or more milliseconds due to rounding,
- # so compare to the nearest 10 milliseconds.
- self.assertAlmostEqual(actual, expected, places=-1)
-
- def testCern(self):
- # Page: http://info.cern.ch/hypertext/WWW/TheProject.html
- # This page has only one paint event.
- self._TestJsonTimelineExpectation(
- 'cern_repeat_timeline.json', (1014, 650), 379.0)
-
- def testBaidu(self):
- # Page: http://www.baidu.com/
- # This page has several paint events, but no nested paint events.
- self._TestJsonTimelineExpectation(
- 'baidu_repeat_timeline.json', (1014, 650), 1761.43)
-
- def test2ch(self):
- # Page: http://2ch.net/
- # This page has several paint events, including nested paint events.
- self._TestJsonTimelineExpectation(
- '2ch_repeat_timeline.json', (997, 650), 674.58)
-
-
if __name__ == "__main__":
unittest.main()
« no previous file with comments | « tools/perf/metrics/speedindex.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698