1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2024-10-06 10:51:13 +01:00
Commit Graph

37 Commits

Author SHA1 Message Date
Brendan Jackman
aae4b465bb Remove trainling newlines
Calms pylint down
2017-12-07 15:37:49 +00:00
Brendan Jackman
aa2abd16a3 Run autoflake to remove unused imports & variables 2017-12-07 15:37:49 +00:00
Sergei Trofimov
7796dabe90 framework: remove wa.framework.plugin.Artifact
Remove wa.framework.plugin.Artifact and associated references. The name
of the class clashes with the class from output and can potentially
cause confusion.

The original intention for this was to be an "expected artifact
descriptor" of sorts that plugins can specify for validation purposes,
but that functionality was never implemented. Given that the framework
has undergone significant changes since this was implemented, it's not
clear that this is the best way to go about the original goal.

Therefore remove this for now.
2017-12-06 16:25:54 +00:00
Sergei Trofimov
45d8be5228 framework/execution: ensure output is always processed
Ensure that job output is processed even if a workload fails. This is
because output processing includes things like extracting logs, which
we still want to happen on failure.

Job status is now also set correctly when an error occurs during output
processing rather than actual running of the workload. Previously, the
status would be correctly set to PARTIAL in the inner except clause,
but the exception is then re-raised, and the status was "upgraded" to
FAILED in the outer except clause.
2017-11-24 14:30:09 +00:00
setrofim
829ac73f06 Merge pull request #525 from setrofim/next
Fixes.
2017-10-23 18:04:25 +01:00
Brendan Jackman
9fa1b133dc framework: Add bail_on_init_failure run configuration
This maintains the default behaviour of bailing out immediately if any workload
fails in initialize(), but adds a setting, bail_on_init_failure, to change this
behaviour optionally. This can be useful where WA is being used more as a batch
processor.
2017-10-23 16:44:49 +01:00
Brendan Jackman
4a001713bb framework/execution: Factor out skip_job method
This also fixes the missing housekeeping when skipping a job due to phones_home
2017-10-23 16:44:49 +01:00
Sergei Trofimov
890428dbf6 framework/execution: fix end of run status reporting
Changes to the Status enum introduced by 31a535b5 and a9959550 broke
ran Jobs summary status at the end of the run. This fixes it so that the
total number of jobs and individual status counts are reported
correctly.
2017-10-23 14:31:24 +01:00
Sergei Trofimov
8dd1e6636c framework: set context for loggers
Set context for the loggers of the Runner, the workloads and the
installed instruments and processors. Errors/warnings logged by these
entities will be automatically added as events.
2017-10-23 12:28:49 +01:00
Sergei Trofimov
5ecc4703e4 framework/execution: fix TargetManager termination
- Make sure TargetManager.finalize() actually gets called at the end
  of the run.
- Overrule the "diconnect" parameter behavior for gem5 and make sure it
  always disconnects. This necessary for stats to be generated properly.
2017-10-06 15:04:02 +01:00
Sergei Trofimov
c89e249732 framework/target: add ability to pass additional platform params.
Gem5Platform requires a host output directory as one if it's
instantiation parameters. This is not something we want to expose a
configuration parameter to the user, as for WA, the standard output
directory ought to be used.

Up to this point, WA's target instatiation process assumed that all
parameters came from the user, and there was no way for WA itself to set
them. This commit adds extra_platform_parms argument to
instantiate_target, to remedi this.

extra_platform_parms is then used to set the host output directory for
gem5 appropriately.
2017-10-06 15:04:02 +01:00
Brendan Jackman
06b451d31b framework: Add feature to mark workloads unsafe for confidential devices
Some workloads, such as Geekbench, may phone home and report data about the
device they are running on. This poses a risk for users that are testing on
unreleased or otherwise confidential devices - perhaps they use a standard
agenda to run a large battery of tests, in which case they may forget to disable
these dangerous workloads.

This provides a mechanism to prevent running those workloads from running by
setting allow_phone_home=False in the user configuration.
2017-10-04 15:43:03 +01:00
Brendan Jackman
188e5d752f framework/execution: Whitespace 2017-10-04 13:35:20 +01:00
Sergei Trofimov
7c7ffe3e77 framework/run: fix job status handling.
- Re-order Status entries so that higher severity entries have higher
  enum values.
- Add set_status() to Job that ensures that a status is only set if it
  is of higher severity (e.g. a Job that has been marked as PARTIAL by
  an instrument will not be overwritten as OK by the runner).
- Retry no generates a new job, rather than re-enqueuing the existing
  object; this ensures that the output status is tracked properly.
- Adjust ManagedCallback to set set job status to FAILED if it sees a
  WorkloadError, and to PARTIAL other wise. The idea being that
  instruments raise WorkloadError if they have a reason to believe
  workload did not execute properly and indicated failure even if the
  workload itself has failed to detect it (e.g. FPS instrument detecting
  crashed content, where the workload might lack any feedback regarding
  the crash). Other errors would indicate an issue with the instrument
  itself, and so the job is marked as PARTIAL, as there is no reason to
  suspect that the workload is at fault and the other results generated
  for this execution may be valid.
2017-09-27 10:32:20 +01:00
Sergei Trofimov
2ef4074c8b framework/execution: ExecutionContext enhancements
- Add workload property as the shortcut for accessing the workoad for
  the current job.
- Add set_status method that setts the status of the current job.
- Add get_metric method that searches for a metric in the output for the
  current job, or failing that, in the run output.
2017-09-27 10:32:19 +01:00
Sergei Trofimov
04253b28c2 Fix typo. 2017-05-12 11:11:40 +01:00
Marc Bonnici
16a0e84469 Runner: Now finalizes all completed workloads at the end of a run.
Previously when finalizing a run the workloads themselves were not included.
This ensures that each completed workloads finalize method is called.
2017-04-25 10:35:02 +01:00
Marc Bonnici
6f0d18f921 Executor: Renamed device_manage to self.target_manager 2017-04-21 10:49:20 +01:00
Marc Bonnici
b7ed59edcf Execution: Corrected spelling 2017-04-20 11:49:53 +01:00
Sergei Trofimov
18e7ffb826 workload: adding basic UIAutomator workload implementation
Added a workload type to handle workloads that have both an APK with an
application and associated automation JAR. Added benchmarkpi
implementation using using the new workload.
2017-03-29 09:55:40 +01:00
Sergei Trofimov
0032e347fe Implemeting target assistants
- Workload's update_result stage has now been broken up into two parts:
  extract_results and update_output. This is to allow the assistant to
  pull output from the target in between the two stages.
- Updated assistant implementations for Linux and Android targets from
  the exisiting code.
- Extended target descriptor code to handle assistants and their
  parameters as well.
- Updated  the target manager to actually make use of the assistants.
2017-03-29 09:53:27 +01:00
Sergei Trofimov
9c091f5339 Misc minor fixes. 2017-03-22 15:17:14 +00:00
Sergei Trofimov
15886ffa29 Streamline resource resolution mechanics. 2017-03-22 15:16:37 +00:00
Sergei Trofimov
1d0db35e04 Fix timstampts to be UTC. 2017-03-22 15:14:44 +00:00
Sergei Trofimov
31a5e5b5fe Implment output processing
- Implemented result processor infrastructured
- Corrected some status tracking issues (differed between states
  and output).
- Added "csv" and "status" result processors (these will be the default
  enabled).
2017-03-22 15:14:44 +00:00
Sergei Trofimov
482a936639 Implement job skipping on abort 2017-03-17 17:29:30 +00:00
Sergei Trofimov
24ade78c36 The old Runner can die now; RIP 2017-03-17 17:10:30 +00:00
Sergei Trofimov
326ab827ed Implement Executor's postamble 2017-03-17 17:05:40 +00:00
Sergei Trofimov
c5cd2b9298 Initial priority implementation
- Fixed up some of the signal map for instrumentation
- Changed how priorites are specified -- no longer method name prefixes
  but dedicated decorators, including an easy way of specifying a custom
  priority level (no longer need to manually connect signals)
- Updated ExecutionTimeInstrument to work with the new system
- Also removed some dead code
2017-03-17 16:21:14 +00:00
Sergei Trofimov
24402660c4 Initial implementation of state tracking and output handling. 2017-03-17 09:15:43 +00:00
Sergei Trofimov
ccdc3492e7 Handle retry failed 2017-03-15 14:34:31 +00:00
Sergei Trofimov
547ae1c10e Job output dir handling. 2017-03-15 14:34:23 +00:00
Sergei Trofimov
011fd684bd Skeleton job execution 2017-03-15 14:34:23 +00:00
Sergei Trofimov
6eb5c3681d New target description + moving target stuff under "framework"
Changing the way target descriptions work from a static mapping to
something that is dynamically generated and is extensible via plugins.
Also moving core target implementation stuff under "framework".
2017-03-15 14:34:12 +00:00
Sergei Trofimov
d9458c8767 Integerated new target stuff into execution so far 2017-03-07 15:17:23 +00:00
Sergei Trofimov
42539bbe0d New target description + moving target stuff under "framework"
Changing the way target descriptions work from a static mapping to
something that is dynamically generated and is extensible via plugins.
Also moving core target implementation stuff under "framework".
2017-03-06 11:10:25 +00:00
Marc Bonnici
1f1f2b12c6 WA3 Exsisting Code 2017-02-21 15:02:28 +00:00