mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-03-21 18:18:41 +00:00
utils/revent: Refactor ReventRecording to avoid duplicate target calls
Changed location of revent binary on target to be a class attribute so that it is shared across all instances. Also changed discovery method to a static method which can be memoized to prevent the target being queried unnecessarily.
This commit is contained in:
parent
b1a15b3458
commit
950427f478
@ -21,6 +21,9 @@ from datetime import datetime
|
||||
from collections import namedtuple
|
||||
|
||||
from wa.framework.resource import Executable, NO_ONE, ResourceResolver
|
||||
from wa.utils.exec_control import once_per_class
|
||||
|
||||
from devlib.utils.misc import memoized
|
||||
|
||||
GENERAL_MODE = 0
|
||||
GAMEPAD_MODE = 1
|
||||
@ -270,21 +273,28 @@ def get_revent_binary(abi):
|
||||
|
||||
class ReventRecorder(object):
|
||||
|
||||
# Share location of target excutable across all instances
|
||||
target_executable = None
|
||||
|
||||
def __init__(self, target):
|
||||
self.target = target
|
||||
self.executable = self.target.get_installed('revent')
|
||||
if not ReventRecorder.target_executable:
|
||||
ReventRecorder.target_executable = self._get_target_path(self.target)
|
||||
|
||||
@once_per_class
|
||||
def deploy(self):
|
||||
if not self.executable:
|
||||
host_executable = get_revent_binary(self.target.abi)
|
||||
self.executable = self.target.install(host_executable)
|
||||
if not ReventRecorder.target_executable:
|
||||
ReventRecorder.target_executable = self.target.get_installed('revent')
|
||||
host_executable = get_revent_binary(self.target.abi)
|
||||
ReventRecorder.target_executable = self.target.install(host_executable)
|
||||
|
||||
@once_per_class
|
||||
def remove(self):
|
||||
if self.executable:
|
||||
if ReventRecorder.target_executable:
|
||||
self.target.uninstall('revent')
|
||||
|
||||
def start_record(self, revent_file):
|
||||
command = '{} record -s {}'.format(self.executable, revent_file)
|
||||
command = '{} record -s {}'.format(ReventRecorder.target_executable, revent_file)
|
||||
self.target.kick_off(command, self.target.is_rooted)
|
||||
|
||||
def stop_record(self):
|
||||
@ -292,5 +302,10 @@ class ReventRecorder(object):
|
||||
|
||||
def replay(self, revent_file, timeout=None):
|
||||
self.target.killall('revent')
|
||||
command = "{} replay {}".format(self.executable, revent_file)
|
||||
command = "{} replay {}".format(ReventRecorder.target_executable, revent_file)
|
||||
self.target.execute(command, timeout=timeout)
|
||||
|
||||
@memoized
|
||||
@staticmethod
|
||||
def _get_target_path(target):
|
||||
return target.get_installed('revent')
|
||||
|
Loading…
x
Reference in New Issue
Block a user