aboutsummaryrefslogtreecommitdiff
path: root/crosperf/experiment_runner.py
diff options
context:
space:
mode:
authorCaroline Tice <cmtice@google.com>2015-09-02 14:49:45 -0700
committerchrome-bot <chrome-bot@chromium.org>2015-09-03 15:11:48 -0700
commit68c1d611c1ab7d92199f12456b097cd19e18ac1c (patch)
tree4aa3be08da47d8eeb56e06218d5679482046bb41 /crosperf/experiment_runner.py
parent2f56356f9b66da22a87058ab83b75b5690fe6fd8 (diff)
downloadtoolchain-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.py18
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