diff --git a/libs/utils/env.py b/libs/utils/env.py index 42b8d9d91004bc70da4b8197e52ced912f3d2888..013f44f999ccc963f785caa9bdb1bb957a143cac 100644 --- a/libs/utils/env.py +++ b/libs/utils/env.py @@ -40,7 +40,6 @@ from platforms.pixel_energy import pixel_energy USERNAME_DEFAULT = 'root' PASSWORD_DEFAULT = '' -WORKING_DIR_DEFAULT = '/data/local/schedtest' FTRACE_EVENTS_DEFAULT = ['sched:*'] FTRACE_BUFSIZE_DEFAULT = 10240 OUT_PREFIX = 'results' @@ -164,7 +163,7 @@ class TestEnv(ShareState): self.test_conf = {} self.target = None self.ftrace = None - self.workdir = WORKING_DIR_DEFAULT + self.workdir = None self.__installed_tools = set() self.__modules = [] self.__connection_settings = None @@ -490,6 +489,11 @@ class TestEnv(ShareState): if platform_type.lower() == 'android': self.__connection_settings = None device = 'DEFAULT' + + # Workaround for ARM-software/devlib#225 + if not self.workdir: + self.workdir = '/data/local/tmp/devlib-target' + if 'device' in self.conf: device = self.conf['device'] self.__connection_settings = {'device' : device} @@ -518,6 +522,7 @@ class TestEnv(ShareState): self.target = devlib.LinuxTarget( platform = platform, connection_settings = self.__connection_settings, + working_directory = self.workdir, load_default_modules = False, modules = self.__modules) elif platform_type.lower() == 'android': @@ -525,12 +530,14 @@ class TestEnv(ShareState): self.target = devlib.AndroidTarget( platform = platform, connection_settings = self.__connection_settings, + working_directory = self.workdir, load_default_modules = False, modules = self.__modules) elif platform_type.lower() == 'host': self._log.debug('Setup HOST target...') self.target = devlib.LocalLinuxTarget( platform = platform, + working_directory = self.workdir, load_default_modules = False, modules = self.__modules, connection_settings = {'unrooted': True}) diff --git a/tests/eas/__init__.py b/tests/eas/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/eas/generic.py b/tests/eas/generic.py index da9aa97426b73175b087ba340ac71aca1242a3bc..252b791629d7d51dc9a7b87f1f1a8ff0415c0fa0 100644 --- a/tests/eas/generic.py +++ b/tests/eas/generic.py @@ -15,23 +15,21 @@ # limitations under the License. # -from math import isnan - +import os import numpy as np import pandas as pd +import matplotlib.pyplot as plt +import pylab as pl -from bart.common.Utils import area_under_curve +from math import isnan -from energy_model import EnergyModel, EnergyModelCapacityError -from perf_analysis import PerfAnalysis from test import LisaTest, experiment_test -from trace import Trace from unittest import SkipTest +from trace import Trace -import matplotlib.pyplot as plt -import numpy as np -import pylab as pl -import os +from bart.common.Utils import area_under_curve +from energy_model import EnergyModel, EnergyModelCapacityError +from perf_analysis import PerfAnalysis WORKLOAD_PERIOD_MS = 16 SET_IS_BIG_LITTLE = True @@ -287,7 +285,9 @@ class _EnergyModelTest(LisaTest): nrg_model = self.te.nrg_model trace = self.get_trace(experiment) + fig, ax = plt.subplots(len(nrg_model.cpus), 1, figsize=(16, 1.8 * len(nrg_model.cpus))) + fig.suptitle('Per-CPU expected utilization') # Check if big.LITTLE data is available for a more detailled plot if trace.has_big_little: @@ -306,8 +306,7 @@ class _EnergyModelTest(LisaTest): color = 'red' tdf.plot(ax=ax[cpu], drawstyle='steps-post', title="CPU{}".format(cpu), color=color) - ax[cpu].fill_between(tdf.index, tdf, 0, step='post', color=color) - ax[cpu].set_ylabel('Expected utilization') + ax[cpu].set_ylabel('Utilization') # Grey-out areas where utilization == 0 ffill = False @@ -323,6 +322,7 @@ class _EnergyModelTest(LisaTest): figname = os.path.join(experiment.out_dir, 'expected_placement.png') pl.savefig(figname, bbox_inches='tight') + plt.close() def _test_slack(self, experiment, tasks): """