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 '