46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# Copyright (c) 2015 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.
|
|
|
|
from native_Benchmarks_common import *
|
|
from v8 import v8
|
|
|
|
class octane(object):
|
|
"""Build v8 and run octane with it on client"""
|
|
|
|
def __init__(self, scratch_srv, scratch_cli, client, args):
|
|
# Instantiating v8 builds the v8 engine.
|
|
self.v8 = v8(scratch_srv, scratch_cli, client, args)
|
|
self.client = client
|
|
self.scratch_cli = scratch_cli
|
|
|
|
# download octane to client
|
|
src = '%s/octane.tar.bz2' % SERVER_TEST_ROOT
|
|
dst = '%s/octane.tar.bz2' % scratch_cli
|
|
rcp_check(client, src, dst,
|
|
'Error occurred while sending octane to client.\n')
|
|
|
|
# unpack octane
|
|
cmd = 'tar jxf %s -C %s' % (dst, scratch_cli)
|
|
run_check(client, cmd, 'Error occurred while unpacking octane')
|
|
|
|
def run(self):
|
|
"""Returns perf_value tuples"""
|
|
# Octane needs to run in PATH_TO/octane.
|
|
wd = '%s/octane' % self.scratch_cli
|
|
cmd = 'cd %s && %s run_all.js' % (wd, self.v8.executable)
|
|
log = run_check(self.client, cmd, "Error occurred while running v8")
|
|
return self.parse(log)
|
|
|
|
def parse(self, log):
|
|
"""Translate logs into perf_values tuples.
|
|
@param log: the log to parse
|
|
"""
|
|
pairs = [line.split(': ') for line in log.splitlines()]
|
|
del pairs[-2]
|
|
pairs[-1][0] = 'Total'
|
|
return [{'description': 'Octane V2',
|
|
'graph': p[0],
|
|
'value': p[1],
|
|
'units': 'score'} for p in pairs]
|