AU/unittest: postinstall tests use uniquely named stateful + working directories

This should allow these tests to be run in parallel. Also includes an
extension to PostinstallRunnerAction and two global powerwash marker
utility functions to allow testing with uniquely named marker file paths
(necessary to avoid race conditions when multiple tests are run in
parallel).

BUG=chromium:236465
TEST=Uniquely named directories created, used and removed.

Change-Id: I5dde0c0732c51e9e3bb2240cf7e0cac03bcde529
Reviewed-on: https://gerrit.chromium.org/gerrit/60864
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/utils.cc b/utils.cc
index 9d3bd26..74e0627 100644
--- a/utils.cc
+++ b/utils.cc
@@ -1006,30 +1006,31 @@
   return "Unknown error: " + base::UintToString(static_cast<unsigned>(code));
 }
 
-bool CreatePowerwashMarkerFile() {
-  bool result = utils::WriteFile(kPowerwashMarkerFile,
+bool CreatePowerwashMarkerFile(const char* file_path) {
+  const char* marker_file = file_path ? file_path : kPowerwashMarkerFile;
+  bool result = utils::WriteFile(marker_file,
                                  kPowerwashCommand,
                                  strlen(kPowerwashCommand));
-  if (result)
-    LOG(INFO) << "Created " << kPowerwashMarkerFile
-              << " to powerwash on next reboot";
-  else
-    PLOG(ERROR) << "Error in creating powerwash marker file: "
-                << kPowerwashMarkerFile;
+  if (result) {
+    LOG(INFO) << "Created " << marker_file << " to powerwash on next reboot";
+  } else {
+    PLOG(ERROR) << "Error in creating powerwash marker file: " << marker_file;
+  }
 
   return result;
 }
 
-bool DeletePowerwashMarkerFile() {
-  const FilePath kPowerwashMarkerPath(kPowerwashMarkerFile);
+bool DeletePowerwashMarkerFile(const char* file_path) {
+  const char* marker_file = file_path ? file_path : kPowerwashMarkerFile;
+  const FilePath kPowerwashMarkerPath(marker_file);
   bool result = file_util::Delete(kPowerwashMarkerPath, false);
 
   if (result)
     LOG(INFO) << "Successfully deleted the powerwash marker file : "
-              << kPowerwashMarkerFile;
+              << marker_file;
   else
     PLOG(ERROR) << "Could not delete the powerwash marker file : "
-                << kPowerwashMarkerFile;
+                << marker_file;
 
   return result;
 }