diff options
author | cmtice <cmtice@google.com> | 2014-05-29 16:16:25 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-06-02 22:21:14 +0000 |
commit | 2a370f7af34f6b126e80ef55891b9bff6a2858bb (patch) | |
tree | 96bab70d1745bccd2fdc06b3662738e4db314852 | |
parent | 4d24b3a0e8a8fae5ac9cf00c3889288c0571b1fc (diff) | |
download | toolchain-utils-2a370f7af34f6b126e80ef55891b9bff6a2858bb.tar.gz |
Add --cache_only global setting to crosperf.
The CL adds a new setting, --cache_only, which causes crosperf to
ONLY report test results that it finds in the cache (it will NOT
rerun any tests, even if no cache results are found). This is partly
for implementing a weekly summary report, where we want to compare the
nightly results from the past week, but not actually rerun anything.
BUG=None
TEST=I tested this option while generating weekly test reports, and it
worked as it is supposed to.
Change-Id: Icb1f5343f76ce999bebd0810bb86ab64a7577313
Reviewed-on: https://chrome-internal-review.googlesource.com/164890
Reviewed-by: Yunlian Jiang <yunlian@google.com>
Commit-Queue: Caroline Tice <cmtice@google.com>
Tested-by: Caroline Tice <cmtice@google.com>
-rw-r--r-- | crosperf/benchmark_run.py | 12 | ||||
-rwxr-xr-x | crosperf/benchmark_run_unittest.py | 4 | ||||
-rw-r--r-- | crosperf/experiment_factory.py | 5 | ||||
-rw-r--r-- | crosperf/label.py | 6 | ||||
-rwxr-xr-x | crosperf/machine_manager_unittest.py | 4 | ||||
-rw-r--r-- | crosperf/mock_instance.py | 4 | ||||
-rwxr-xr-x | crosperf/results_cache_unittest.py | 2 | ||||
-rw-r--r-- | crosperf/settings_factory.py | 3 |
8 files changed, 29 insertions, 11 deletions
diff --git a/crosperf/benchmark_run.py b/crosperf/benchmark_run.py index e4fe693d..f35b6928 100644 --- a/crosperf/benchmark_run.py +++ b/crosperf/benchmark_run.py @@ -97,6 +97,18 @@ class BenchmarkRun(threading.Thread): self._logger.LogOutput(self.result.out, print_to_console=False) self._logger.LogError(self.result.err, print_to_console=False) + elif self.label.cache_only: + self._logger.LogOutput("%s: No cache hit." % self.name) + output = "%s: No Cache hit." % self.name + retval = 1 + err = "No cache hit." + self.result = Result.CreateFromRun(self._logger, self.log_level, + self.label, + output, err, retval, + self.benchmark.show_all_results, + self.benchmark.test_name, + self.benchmark.suite) + else: self._logger.LogOutput("%s: No cache hit." % self.name) self.timeline.Record(STATUS_WAITING) diff --git a/crosperf/benchmark_run_unittest.py b/crosperf/benchmark_run_unittest.py index a42e4598..d13806e8 100755 --- a/crosperf/benchmark_run_unittest.py +++ b/crosperf/benchmark_run_unittest.py @@ -44,7 +44,7 @@ class BenchmarkRunTest(unittest.TestCase): self.test_label = MockLabel("test1", "image1", "/tmp/test_benchmark_run", "x86-alex", "chromeos2-row1-rack4-host9.cros", image_args="", - cache_dir="") + cache_dir="", cache_only=False) self.test_cache_conditions = [CacheConditions.CACHE_FILE_EXISTS, CacheConditions.CHECKSUMS_MATCH] @@ -57,7 +57,7 @@ class BenchmarkRunTest(unittest.TestCase): my_label = MockLabel("test1", "image1", "/tmp/test_benchmark_run", "x86-alex", "chromeos2-row1-rack4-host9.cros", image_args="", - cache_dir="") + cache_dir="", cache_only=False) logging_level = "average" m = MockMachineManager("/tmp/chromeos_root", 0, logging_level) m.AddMachine("chromeos2-row1-rack4-host9.cros") diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 97d862a0..86bf19cd 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -104,6 +104,7 @@ class ExperimentFactory(object): perf_args = global_settings.GetField("perf_args") acquire_timeout= global_settings.GetField("acquire_timeout") cache_dir = global_settings.GetField("cache_dir") + cache_only = global_settings.GetField("cache_only") config.AddConfig("no_email", global_settings.GetField("no_email")) share_users = global_settings.GetField("share_users") results_dir = global_settings.GetField("results_dir") @@ -198,10 +199,10 @@ class ExperimentFactory(object): image_args = label_settings.GetField("image_args") if test_flag.GetTestMode(): label = MockLabel(label_name, image, chromeos_root, board, my_remote, - image_args, cache_dir, chrome_src) + image_args, cache_dir, cache_only, chrome_src) else: label = Label(label_name, image, chromeos_root, board, my_remote, - image_args, cache_dir, chrome_src) + image_args, cache_dir, cache_only, chrome_src) labels.append(label) email = global_settings.GetField("email") diff --git a/crosperf/label.py b/crosperf/label.py index bbcf18ae..91f6e97e 100644 --- a/crosperf/label.py +++ b/crosperf/label.py @@ -13,7 +13,7 @@ from utils import misc class Label(object): def __init__(self, name, chromeos_image, chromeos_root, board, remote, - image_args, cache_dir, chrome_src=None): + image_args, cache_dir, cache_only, chrome_src=None): self.image_type = self._GetImageType(chromeos_image) @@ -28,6 +28,7 @@ class Label(object): self.remote = remote self.image_args = image_args self.cache_dir = cache_dir + self.cache_only = cache_only if not chromeos_root: if self.image_type == "local": @@ -68,12 +69,13 @@ class Label(object): class MockLabel(object): def __init__(self, name, chromeos_image, chromeos_root, board, remote, - image_args, cache_dir, chrome_src=None): + image_args, cache_dir, cache_only, chrome_src=None): self.name = name self.chromeos_image = chromeos_image self.board = board self.remote = remote self.cache_dir = cache_dir + self.cache_only = cache_only if not chromeos_root: self.chromeos_root = "/tmp/chromeos_root" else: diff --git a/crosperf/machine_manager_unittest.py b/crosperf/machine_manager_unittest.py index 10a34884..059ce20a 100755 --- a/crosperf/machine_manager_unittest.py +++ b/crosperf/machine_manager_unittest.py @@ -32,10 +32,10 @@ CHROMEOS_ROOT = "/tmp/chromeos-root" MACHINE_NAMES = ["lumpy1", "lumpy2", "lumpy3", "daisy1", "daisy2"] LABEL_LUMPY = label.MockLabel("lumpy", "image", CHROMEOS_ROOT, "lumpy", ["lumpy1", "lumpy2", "lumpy3", "lumpy4"], - "", "", "") + "", "", False, "") LABEL_MIX = label.MockLabel("mix", "image", CHROMEOS_ROOT, "mix", ["daisy1", "daisy2", "lumpy3", "lumpy4"], - "", "", "") + "", "", False, "") class MachineManagerTest(unittest.TestCase): diff --git a/crosperf/mock_instance.py b/crosperf/mock_instance.py index 74fc21b3..06a574ae 100644 --- a/crosperf/mock_instance.py +++ b/crosperf/mock_instance.py @@ -16,12 +16,12 @@ perf_args = "record -a -e cycles" label1 = MockLabel("test1", "image1", "/tmp/test_benchmark_run", "x86-alex", "chromeos-alex1", image_args="", - cache_dir="") + cache_dir="", cache_only=False) label2 = MockLabel("test2", "image2", "/tmp/test_benchmark_run_2", "x86-alex", "chromeos-alex2", image_args="", - cache_dir="") + cache_dir="", cache_only=False) benchmark1 = Benchmark("benchmark1", "autotest_name_1", "autotest_args", 2, "", perf_args, "", "") diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 099aed81..6713a3eb 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -126,7 +126,7 @@ class MockResult(Result): class ResultTest(unittest.TestCase): mock_label = MockLabel("mock_label", "chromeos_image", "/tmp", "lumpy", - "remote", "image_args", "cache_dir") + "remote", "image_args", "cache_dir", False) def testCreateFromRun(self): result = MockResult.CreateFromRun(logger.GetLogger(), "average", self.mock_label, diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py index a5b0a549..78abbc82 100644 --- a/crosperf/settings_factory.py +++ b/crosperf/settings_factory.py @@ -117,6 +117,9 @@ class GlobalSettings(Settings): self.AddField(TextField("cache_dir", default="", description="The abs path of cache dir. " "Default is /home/$(whoami)/cros_scratch.")) + self.AddField(BooleanField("cache_only", default=False, + description="Whether to use only cached " + "results (do not rerun failed tests).")) self.AddField(BooleanField("no_email", default=False, description="Whether to disable the email to " "user after crosperf finishes.")) |