platform_Perf: Better handle perf record failure case
1. Print stderr when there's a failure.
2. Do not attempt to remove file created by perf record if it failed.
BUG=chromium:454464
TEST=platform_Perf test passes
Change-Id: I134952dfea09f6170dce65b076420a2de51c55b5
Signed-off-by: Simon Que <sque@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/245523
Reviewed-by: David Sharp <dhsharp@chromium.org>
diff --git a/client/site_tests/platform_Perf/platform_Perf.py b/client/site_tests/platform_Perf/platform_Perf.py
index f349045..c557ca4 100644
--- a/client/site_tests/platform_Perf/platform_Perf.py
+++ b/client/site_tests/platform_Perf/platform_Perf.py
@@ -30,10 +30,13 @@
# Perf command for getting a detailed report.
perf_report_args = [ 'perf', 'report', '-D', '-i', perf_file_path ]
- result = subprocess.call(perf_record_args)
- if result != 0:
- raise error.TestFail('Could not run command: ' +
- ' '.join(perf_record_args))
+ try:
+ subprocess.check_output(perf_record_args,
+ stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as cmd_error:
+ raise error.TestFail("Running command [%s] failed: %s" %
+ (' '.join(perf_record_args),
+ cmd_error.output))
# Make sure the file still exists.
if not os.path.isfile(perf_file_path):
@@ -56,7 +59,10 @@
finally:
# Delete the perf data file.
- os.remove(perf_file_path)
+ try:
+ os.remove(perf_file_path)
+ except OSError as e:
+ if e.errno != errno.ENONENT: raise
if result is None:
raise error.TestFail('Could not find kernel mapping in perf '