blob: 37cd02effa558137ad86d65ec2112e607efecac1 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import contextlib
from telemetry import decorators
from telemetry import page as page_module
from telemetry import story
from telemetry.page import cache_temperature
from telemetry.testing import browser_test_case
from telemetry.timeline import tracing_config
from tracing.trace_data import trace_data
class CacheTempeartureTests(browser_test_case.BrowserTestCase):
def __init__(self, *args, **kwargs):
super(CacheTempeartureTests, self).__init__(*args, **kwargs)
self._full_trace = None
@contextlib.contextmanager
def captureTrace(self):
tracing_controller = self._browser.platform.tracing_controller
options = tracing_config.TracingConfig()
options.enable_chrome_trace = True
tracing_controller.StartTracing(options)
try:
yield
finally:
self._full_trace = tracing_controller.StopTracing()
def traceMarkers(self):
if not self._full_trace:
return set()
chrome_trace = self._full_trace.GetTraceFor(trace_data.CHROME_TRACE_PART)
return set(
event['name']
for event in chrome_trace['traceEvents']
if event['cat'] == 'blink.console')
@decorators.Enabled('has tabs')
def testEnsureAny(self):
with self.captureTrace():
story_set = story.StorySet()
page = page_module.Page('http://google.com', page_set=story_set,
cache_temperature=cache_temperature.ANY)
cache_temperature.EnsurePageCacheTemperature(page, self._browser)
markers = self.traceMarkers()
self.assertNotIn('telemetry.internal.ensure_diskcache.start', markers)
self.assertNotIn('telemetry.internal.warmCache.start', markers)
@decorators.Enabled('has tabs')
@decorators.Disabled('chromeos')
def testEnsurePCv1Cold(self):
with self.captureTrace():
story_set = story.StorySet()
page = page_module.Page('http://google.com', page_set=story_set,
cache_temperature=cache_temperature.PCV1_COLD)
cache_temperature.EnsurePageCacheTemperature(page, self._browser)
markers = self.traceMarkers()
self.assertIn('telemetry.internal.ensure_diskcache.start', markers)
self.assertIn('telemetry.internal.ensure_diskcache.end', markers)
@decorators.Enabled('has tabs')
def testEnsurePCv1WarmAfterPCv1ColdRun(self):
with self.captureTrace():
story_set = story.StorySet()
page = page_module.Page('http://google.com', page_set=story_set,
cache_temperature=cache_temperature.PCV1_COLD)
cache_temperature.EnsurePageCacheTemperature(page, self._browser)
previous_page = page
page = page_module.Page('http://google.com', page_set=story_set,
cache_temperature=cache_temperature.PCV1_WARM)
cache_temperature.EnsurePageCacheTemperature(page, self._browser,
previous_page)
markers = self.traceMarkers()
self.assertNotIn('telemetry.internal.warmCache.start', markers)
@decorators.Enabled('has tabs')
@decorators.Disabled('chromeos')
def testEnsurePCv1WarmFromScratch(self):
with self.captureTrace():
story_set = story.StorySet()
page = page_module.Page('http://google.com', page_set=story_set,
cache_temperature=cache_temperature.PCV1_WARM)
cache_temperature.EnsurePageCacheTemperature(page, self._browser)
markers = self.traceMarkers()
self.assertIn('telemetry.internal.warmCache.start', markers)
self.assertIn('telemetry.internal.warmCache.end', markers)