[autotest] Abstract out upload marker file logic
BUG=chromium:715435
TEST=None
Change-Id: I7ab86b06dc86cb18d307ab0e726987ead199a152
Reviewed-on: https://chromium-review.googlesource.com/497722
Commit-Ready: Allen Li <ayatane@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Reviewed-by: Allen Li <ayatane@chromium.org>
diff --git a/site_utils/gs_offloader.py b/site_utils/gs_offloader.py
index bb8b684..8c987b2 100755
--- a/site_utils/gs_offloader.py
+++ b/site_utils/gs_offloader.py
@@ -576,8 +576,7 @@
metrics_fields = _get_metrics_fields(dir_entry)
es_metadata = _get_es_metadata(dir_entry)
try:
- upload_signal_filename = '%s/.GS_UPLOADED' % (dir_entry,)
- if not os.path.isfile(upload_signal_filename):
+ if not _is_uploaded(dir_entry):
sanitize_dir(dir_entry)
if DEFAULT_CTS_RESULTS_GSURI:
upload_testresult_files(dir_entry, multiprocessing)
@@ -624,9 +623,9 @@
error = True
if not error:
- open(upload_signal_filename, 'a').close()
+ _mark_uploaded(dir_entry)
- if os.path.isfile(upload_signal_filename):
+ if _is_uploaded(dir_entry):
if job_directories.is_job_expired(delete_age, job_complete_time):
shutil.rmtree(dir_entry)
@@ -707,6 +706,31 @@
shutil.rmtree(dir_entry)
+def _is_uploaded(dirpath):
+ """Return whether directory has been uploaded.
+
+ @param dirpath: Directory path string.
+ """
+ return os.path.isfile(_get_uploaded_marker_file(dirpath))
+
+
+def _mark_uploaded(dirpath):
+ """Mark directory as uploaded.
+
+ @param dirpath: Directory path string.
+ """
+ with open(_get_uploaded_marker_file(dirpath), 'a'):
+ pass
+
+
+def _get_uploaded_marker_file(dirpath):
+ """Return path to upload marker file for directory.
+
+ @param dirpath: Directory path string.
+ """
+ return '%s/.GS_UPLOADED' % (dirpath,)
+
+
def _format_job_for_failure_reporting(job):
"""Formats a _JobDirectory for reporting / logging.
diff --git a/site_utils/gs_offloader_unittest.py b/site_utils/gs_offloader_unittest.py
index 0731611..d59d746 100755
--- a/site_utils/gs_offloader_unittest.py
+++ b/site_utils/gs_offloader_unittest.py
@@ -17,6 +17,7 @@
import time
import unittest
+import mock
import mox
import common
@@ -820,9 +821,7 @@
def _mock_create_marker_file(self):
self.mox.StubOutWithMock(__builtin__, 'open')
- mock_marker_file = self.mox.CreateMock(file)
- open(mox.IgnoreArg(), 'a').AndReturn(mock_marker_file)
- mock_marker_file.close()
+ open(mox.IgnoreArg(), 'a').AndReturn(mock.MagicMock())
def _mock_offload_dir_calls(self, command, queue_args,