mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-01-18 20:11:20 +00:00
ReventUtils: Added ReventRecorder
Added `ReventRecorder` which is used to deal with the revent binary on the device including deloyment, running commands and cleaning up again.
This commit is contained in:
parent
9308855f14
commit
adaa83b6eb
@ -16,9 +16,11 @@
|
||||
from __future__ import division
|
||||
import os
|
||||
import struct
|
||||
import signal
|
||||
from datetime import datetime
|
||||
from collections import namedtuple
|
||||
|
||||
from wa.framework.resource import Executable, NO_ONE, ResourceResolver
|
||||
|
||||
GENERAL_MODE = 0
|
||||
GAMEPAD_MODE = 1
|
||||
@ -249,3 +251,38 @@ class ReventRecording(object):
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
||||
|
||||
def get_revent_binary(abi):
|
||||
resolver = ResourceResolver()
|
||||
resolver.load()
|
||||
resource = Executable(NO_ONE, abi, 'revent')
|
||||
return resolver.get(resource)
|
||||
|
||||
|
||||
class ReventRecorder(object):
|
||||
|
||||
def __init__(self, target):
|
||||
self.target = target
|
||||
self.executable = self.target.get_installed('revent')
|
||||
|
||||
def deploy(self):
|
||||
if not self.executable:
|
||||
host_executable = get_revent_binary(self.target.abi)
|
||||
self.executable = self.target.install(host_executable)
|
||||
|
||||
def remove(self):
|
||||
if self.executable:
|
||||
self.target.uninstall('revent')
|
||||
|
||||
def start_record(self, revent_file):
|
||||
command = '{} record -s {}'.format(self.executable, revent_file)
|
||||
self.target.kick_off(command, self.target.is_rooted)
|
||||
|
||||
def stop_record(self):
|
||||
self.target.killall('revent', signal.SIGINT, as_root=self.target.is_rooted)
|
||||
|
||||
def replay(self, revent_file, timeout=None):
|
||||
self.target.killall('revent')
|
||||
command = "{} replay {}".format(self.executable, revent_file)
|
||||
self.target.execute(command, timeout=timeout)
|
||||
|
Loading…
x
Reference in New Issue
Block a user