diff options
author | Caroline Tice <cmtice@google.com> | 2015-09-02 14:49:45 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-09-03 15:11:48 -0700 |
commit | 68c1d611c1ab7d92199f12456b097cd19e18ac1c (patch) | |
tree | 4aa3be08da47d8eeb56e06218d5679482046bb41 /crosperf/experiment_runner.py | |
parent | 2f56356f9b66da22a87058ab83b75b5690fe6fd8 (diff) | |
download | toolchain-utils-68c1d611c1ab7d92199f12456b097cd19e18ac1c.tar.gz |
Remove cache dirs before starting if --rerun=True.
Have Crosperf look for and remove any/all cache entries that match
the current experiment, if the flag --rerun=True was passed, before
starting the run. This is to prevent cases where the experiment dies
halfway through, leaving half the cache entries 'old' and half the cache
entries 'new' (i.e. leaving cache in an inconsistent state).
BUG=None
TEST=Tested in my directory; verified cache is deleted before run starts
but only when --rerun=True is passed.
Change-Id: I1b03792cba95b30b0270e0f26839618daa70c232
Reviewed-on: https://chrome-internal-review.googlesource.com/229355
Commit-Ready: Caroline Tice <cmtice@google.com>
Tested-by: Caroline Tice <cmtice@google.com>
Reviewed-by: Luis Lozano <llozano@chromium.org>
Diffstat (limited to 'crosperf/experiment_runner.py')
-rw-r--r-- | crosperf/experiment_runner.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index b2db368e..08d89d72 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -6,6 +6,7 @@ import getpass import os import random +import shutil import sys import time import traceback @@ -23,6 +24,8 @@ from threading import Thread import config from experiment_status import ExperimentStatus +from results_cache import CacheConditions +from results_cache import ResultsCache from results_report import HTMLResultsReport from results_report import TextResultsReport from results_report import JSONResultsReport @@ -126,6 +129,19 @@ class ExperimentRunner(object): lock_mgr.CheckMachineLocks(machine_states, "unlock") lock_mgr.UpdateMachines(False) + def _ClearCacheEntries(self, experiment): + for br in experiment.benchmark_runs: + cache = ResultsCache() + cache.Init (br.label.chromeos_image, br.label.chromeos_root, + br.benchmark.test_name, br.iteration, br.test_args, + br.profiler_args, br.machine_manager, br.label.board, + br.cache_conditions, br._logger, br.log_level, br.label, + br.share_cache, br.benchmark.suite, + br.benchmark.show_all_results, br.benchmark.run_local) + cache_dir = cache._GetCacheDirForWrite() + self.l.LogOutput("Removing cache dir: %s" % cache_dir) + shutil.rmtree(cache_dir) + def _Run(self, experiment): try: if not experiment.locks_dir: @@ -133,6 +149,8 @@ class ExperimentRunner(object): if self._using_schedv2: schedv2 = Schedv2(experiment) experiment.set_schedv2(schedv2) + if CacheConditions.FALSE in experiment.cache_conditions: + self._ClearCacheEntries(experiment) status = ExperimentStatus(experiment) experiment.Run() last_status_time = 0 |