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.
         """