reclient: Clear log dir between builds

Bug: b/287650736
Change-Id: I87c0226f428211ac99520b024edeaf5ccb6a674c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4629861
Commit-Queue: Ben Segall <bentekkie@google.com>
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Auto-Submit: Ben Segall <bentekkie@google.com>
changes/61/4629861/5
Ben Segall 2 years ago committed by LUCI CQ
parent 4ec095fa85
commit 2e6738447e

@ -9,6 +9,7 @@ for any reason e.g. build completion, keyboard interrupt etc."""
import contextlib import contextlib
import hashlib import hashlib
import os import os
import shutil
import subprocess import subprocess
import sys import sys
@ -142,6 +143,9 @@ def set_reproxy_path_flags(out_dir, make_dirs=True):
log_dir = os.path.join(tmp_dir, 'logs') log_dir = os.path.join(tmp_dir, 'logs')
cache_dir = find_cache_dir(tmp_dir) cache_dir = find_cache_dir(tmp_dir)
if make_dirs: if make_dirs:
if os.path.exists(log_dir):
# Clear log dir before each build to ensure correct metric aggregation.
shutil.rmtree(log_dir)
os.makedirs(tmp_dir, exist_ok=True) os.makedirs(tmp_dir, exist_ok=True)
os.makedirs(log_dir, exist_ok=True) os.makedirs(log_dir, exist_ok=True)
os.makedirs(cache_dir, exist_ok=True) os.makedirs(cache_dir, exist_ok=True)

@ -196,6 +196,40 @@ class NinjaReclientTest(trial_dir.TestCase):
]), ]),
]) ])
@unittest.mock.patch.dict(os.environ, {})
@unittest.mock.patch('subprocess.call', return_value=0)
@unittest.mock.patch('ninja.main', return_value=0)
@unittest.mock.patch('reclient_metrics.check_status', return_value=True)
def test_ninja_reclient_clears_log_dir(self, mock_metrics_status, mock_ninja,
mock_call):
reclient_bin_dir = os.path.join('src', 'buildtools', 'reclient')
reclient_cfg = os.path.join('src', 'buildtools', 'reclient_cfgs',
'reproxy.cfg')
write('.gclient', '')
write('.gclient_entries', 'entries = {"buildtools": "..."}')
write(os.path.join(reclient_bin_dir, 'version.txt'), '0.0')
write(reclient_cfg, '0.0')
argv = ["ninja_reclient.py", "-C", "out/a", "chrome"]
os.makedirs(os.path.join(self.root_dir, "out", "a", ".reproxy_tmp", "logs"),
exist_ok=True)
with open(
os.path.join(self.root_dir, "out", "a", ".reproxy_tmp", "logs",
"reproxy.rpl"), "w") as f:
print("Content", file=f)
self.assertEqual(0, ninja_reclient.main(argv))
self.assertTrue(
os.path.isdir(os.path.join(self.root_dir, "out", "a", ".reproxy_tmp")))
self.assertTrue(
os.path.isdir(
os.path.join(self.root_dir, "out", "a", ".reproxy_tmp", "logs")))
self.assertFalse(
os.path.isfile(
os.path.join(self.root_dir, "out", "a", ".reproxy_tmp", "logs",
"reproxy.rpl")))
@unittest.mock.patch('subprocess.call', return_value=0) @unittest.mock.patch('subprocess.call', return_value=0)
@unittest.mock.patch('ninja.main', side_effect=KeyboardInterrupt()) @unittest.mock.patch('ninja.main', side_effect=KeyboardInterrupt())
def test_ninja_reclient_ninja_interrupted(self, mock_ninja, mock_call): def test_ninja_reclient_ninja_interrupted(self, mock_ninja, mock_call):

Loading…
Cancel
Save