# Copyright 2015 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 json import os import os.path import sys import loading_model import loading_trace def SitesFromDir(directory): """Extract sites from a data directory. Based on ./analyze.py fetch file name conventions. We assume each site corresponds to two files, .json and .json.cold, and that no other kind of file appears in the data directory. Args: directory: the directory to process. Returns: A list of sites as strings. """ files = set(os.listdir(directory)) assert files sites = [] for f in files: if f.endswith('.png'): continue assert f.endswith('.json') or f.endswith('.json.cold'), f if f.endswith('.json'): assert f + '.cold' in files sites.append(f[:f.rfind('.json')]) elif f.endswith('.cold'): assert f[:f.rfind('.cold')] in files sites.sort() return sites def WarmGraph(datadir, site): """Return a loading model graph for the warm pull of site. Based on ./analyze.py fetch file name conventions. Args: datadir: the directory containing site JSON data. site: a site string. Returns: A loading model object. """ with file(os.path.join(datadir, site + '.json')) as f: return loading_model.ResourceGraph(loading_trace.LoadingTrace.FromJsonDict( json.load(f))) def ColdGraph(datadir, site): """Return a loading model graph for the cold pull of site. Based on ./analyze.py fetch file name conventions. Args: datadir: the directory containing site JSON data. site: a site string. Returns: A loading model object. """ with file(os.path.join(datadir, site + '.json.cold')) as f: return loading_model.ResourceGraph(loading_trace.LoadingTrace.FromJsonDict( json.load(f)))