You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
# Copyright 2018 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""Tast-specific logics of TKO parser."""
|
|
|
|
import json
|
|
import os
|
|
|
|
import common
|
|
|
|
from autotest_lib.client.common_lib import utils
|
|
|
|
# Name of the Autotest test case that runs Tast tests.
|
|
_TAST_AUTOTEST_NAME = 'tast'
|
|
|
|
# Prefix added to Tast test names when writing their results to TKO.
|
|
# This should match with _TEST_NAME_PREFIX in server/site_tests/tast/tast.py.
|
|
_TAST_TEST_NAME_PREFIX = 'tast.'
|
|
|
|
|
|
def is_tast_test(test_name):
|
|
"""Checks if a test is a Tast test."""
|
|
return test_name.startswith(_TAST_TEST_NAME_PREFIX)
|
|
|
|
|
|
def load_tast_test_aux_results(job, test_name):
|
|
"""Loads auxiliary results of a Tast test.
|
|
|
|
@param job: A job object.
|
|
@param test_name: The name of the test.
|
|
@return (attributes, perf_values) where
|
|
attributes: A str-to-str dict of attribute keyvals
|
|
perf_values: A dict loaded from a chromeperf JSON
|
|
"""
|
|
assert is_tast_test(test_name)
|
|
|
|
test_dir = os.path.join(job.dir, _TAST_AUTOTEST_NAME)
|
|
|
|
case_name = test_name[len(_TAST_TEST_NAME_PREFIX):]
|
|
case_dir = os.path.join(test_dir, 'results', 'tests', case_name)
|
|
|
|
# Load attribute keyvals.
|
|
attributes_path = os.path.join(test_dir, 'keyval')
|
|
if os.path.exists(attributes_path):
|
|
attributes = utils.read_keyval(attributes_path)
|
|
else:
|
|
attributes = {}
|
|
|
|
# Load a chromeperf JSON.
|
|
perf_values_path = os.path.join(case_dir, 'results-chart.json')
|
|
if os.path.exists(perf_values_path):
|
|
with open(perf_values_path) as fp:
|
|
perf_values = json.load(fp)
|
|
else:
|
|
perf_values = {}
|
|
|
|
return attributes, perf_values
|