Home | History | Annotate | Download | only in benchmarks
      1 # Copyright 2013 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 """Runs Chromium's IndexedDB performance test. These test:
      6 
      7 Databases:
      8   create/delete
      9 Keys:
     10   create/delete
     11 Indexes:
     12   create/delete
     13 Data access:
     14   Random read/write
     15   Sporadic writes
     16   Read cache
     17 Cursors:
     18   Read & random writes
     19   Walking multiple
     20   Seeking.
     21 """
     22 
     23 import json
     24 import os
     25 
     26 from telemetry import test
     27 from telemetry.core import util
     28 from telemetry.page import page_measurement
     29 from telemetry.page import page_set
     30 
     31 
     32 class _IndexedDbMeasurement(page_measurement.PageMeasurement):
     33   def MeasurePage(self, _, tab, results):
     34     tab.WaitForDocumentReadyStateToBeComplete()
     35     tab.WaitForJavaScriptExpression(
     36         'window.document.cookie.indexOf("__done=1") >= 0', 600)
     37 
     38     js_get_results = "JSON.stringify(automation.getResults());"
     39     result_dict = json.loads(tab.EvaluateJavaScript(js_get_results))
     40     total = 0.0
     41     for key in result_dict:
     42       if key == 'OverallTestDuration':
     43         continue
     44       msec = float(result_dict[key])
     45       results.Add(key, 'ms', msec, data_type='unimportant')
     46       total += msec
     47     results.Add('Total', 'ms', total)
     48 
     49 class IndexedDb(test.Test):
     50   """Chromium's IndexedDB Performance tests."""
     51   test = _IndexedDbMeasurement
     52 
     53   def CreatePageSet(self, options):
     54     indexeddb_dir = os.path.join(util.GetChromiumSrcDir(), 'chrome', 'test',
     55                                  'data', 'indexeddb')
     56     return page_set.PageSet.FromDict({
     57         'pages': [
     58             { 'url': 'file://perf_test.html' }
     59           ]
     60         }, indexeddb_dir)
     61