autotest: Prune empty per-request directories
BUG=chromium:955175
TEST=unittests
Change-Id: Ie799f678321b0cd3c1d9beda8c15005b2702906d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1808720
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Reviewed-by: Xinan Lin <linxinan@chromium.org>
Tested-by: Xinan Lin <linxinan@chromium.org>
diff --git a/site_utils/gs_offloader_unittest.py b/site_utils/gs_offloader_unittest.py
index 3ca815e..598fb80 100755
--- a/site_utils/gs_offloader_unittest.py
+++ b/site_utils/gs_offloader_unittest.py
@@ -441,7 +441,7 @@
`self._resultsroot`.
"""
- os.mkdir(jobdir)
+ os.makedirs(jobdir)
return _MockJobDirectory(jobdir)
@@ -554,6 +554,7 @@
alarm.start()
self.addCleanup(alarm.stop)
self.mox.StubOutWithMock(models.test, 'parse_job_keyval')
+ self.should_remove_sarming_req_dir = False
def tearDown(self):
@@ -609,6 +610,11 @@
self.mox.VerifyAll()
self.assertEqual(not should_succeed,
os.path.isdir(self._job.queue_args[0]))
+ swarming_req_dir = gs_offloader._get_swarming_req_dir(
+ self._job.queue_args[0])
+ if swarming_req_dir:
+ self.assertEqual(not self.should_remove_sarming_req_dir,
+ os.path.exists(swarming_req_dir))
def test_offload_success(self):
@@ -627,6 +633,33 @@
self._run_offload_dir(False, 0)
+ def test_offload_swarming_req_dir_remove(self):
+ """Test that `offload_dir()` can prune the empty swarming task dir."""
+ should_remove = os.path.join('results', 'swarming-123abc0')
+ self._job = self.make_job(os.path.join(should_remove, '1'))
+ self._mock_offload_dir_calls(['test', '-d'],
+ self._job.queue_args)
+
+ os.path.isfile(mox.IgnoreArg()).AndReturn(True)
+ self.should_remove_sarming_req_dir = True
+ self._mock_create_marker_file()
+ self._run_offload_dir(True, 0)
+
+
+ def test_offload_swarming_req_dir_exist(self):
+ """Test that `offload_dir()` keeps the non-empty swarming task dir."""
+ should_not_remove = os.path.join('results', 'swarming-456edf0')
+ self._job = self.make_job(os.path.join(should_not_remove, '1'))
+ self.make_job(os.path.join(should_not_remove, '2'))
+ self._mock_offload_dir_calls(['test', '-d'],
+ self._job.queue_args)
+
+ os.path.isfile(mox.IgnoreArg()).AndReturn(True)
+ self.should_remove_sarming_req_dir = False
+ self._mock_create_marker_file()
+ self._run_offload_dir(True, 0)
+
+
def test_sanitize_dir(self):
"""Test that folder/file name with invalid character can be corrected.
"""