aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/exec/util
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2015-02-25 14:18:14 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-02-25 14:18:14 +0000
commitd5baac0122a72209553a338ea28648d9184ca37e (patch)
tree8d73a4dbac72f1e2f99ec0910e6ba3c848b81fcb /src/test/java/com/google/devtools/build/lib/exec/util
parent7d6a4f618488a778f4e5780a1ad6f8a3e27a6ec9 (diff)
Open-source BuildViewTestCase and the infrastructure required by it, as well as
the tests under analysis/actions. They don't run yet, because the mock client setup is still missing. -- MOS_MIGRATED_REVID=87149625
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/exec/util')
-rw-r--r--src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java
new file mode 100644
index 0000000000..1743349d9a
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java
@@ -0,0 +1,111 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.exec.util;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
+import com.google.common.eventbus.EventBus;
+import com.google.devtools.build.lib.actions.ActionContextProvider;
+import com.google.devtools.build.lib.actions.BlazeExecutor;
+import com.google.devtools.build.lib.actions.Executor.ActionContext;
+import com.google.devtools.build.lib.actions.ExecutorInitException;
+import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.config.BinTools;
+import com.google.devtools.build.lib.events.Reporter;
+import com.google.devtools.build.lib.exec.ExecutionOptions;
+import com.google.devtools.build.lib.exec.FileWriteStrategy;
+import com.google.devtools.build.lib.exec.SourceManifestActionContextImpl;
+import com.google.devtools.build.lib.exec.SymlinkTreeStrategy;
+import com.google.devtools.build.lib.runtime.CommonCommandOptions;
+import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.build.lib.util.BlazeClock;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.common.options.OptionsBase;
+import com.google.devtools.common.options.OptionsParser;
+import com.google.devtools.common.options.OptionsParsingException;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Builder for the test instance of the {@link BlazeExecutor} class.
+ */
+public class TestExecutorBuilder {
+ public static final List<Class<? extends OptionsBase>> DEFAULT_OPTIONS = ImmutableList.of(
+ ExecutionOptions.class, CommonCommandOptions.class);
+ private final BlazeDirectories directories;
+ private Reporter reporter = new Reporter();
+ private EventBus bus = new EventBus();
+ private OptionsParser optionsParser = OptionsParser.newOptionsParser(DEFAULT_OPTIONS);
+ private List<ActionContext> strategies = new ArrayList<>();
+ private Map<String, SpawnActionContext> spawnStrategyMap = new HashMap<>();
+
+ public TestExecutorBuilder(BlazeDirectories directories, BinTools binTools) {
+ this.directories = directories;
+
+ strategies.add(new SourceManifestActionContextImpl(
+ new PathFragment(TestConstants.RUNFILES_PREFIX)));
+ strategies.add(new FileWriteStrategy());
+ strategies.add(new SymlinkTreeStrategy(null, binTools));
+ }
+
+ public TestExecutorBuilder setReporter(Reporter reporter) {
+ this.reporter = reporter;
+ return this;
+ }
+
+ public TestExecutorBuilder setBus(EventBus bus) {
+ this.bus = bus;
+ return this;
+ }
+
+ public TestExecutorBuilder setOptionsParser(OptionsParser optionsParser) {
+ this.optionsParser = optionsParser;
+ return this;
+ }
+
+ public TestExecutorBuilder parseOptions(String... options) throws OptionsParsingException {
+ this.optionsParser.parse(options);
+ return this;
+ }
+
+ public TestExecutorBuilder addStrategy(ActionContext strategy) {
+ strategies.add(strategy);
+ return this;
+ }
+
+ public TestExecutorBuilder addStrategyFactory(ActionContextProvider factory) {
+ Iterables.addAll(strategies, factory.getActionContexts());
+ return this;
+ }
+
+ public TestExecutorBuilder setExecution(String mnemonic, SpawnActionContext strategy) {
+ spawnStrategyMap.put(mnemonic, strategy);
+ strategies.add(strategy);
+ return this;
+ }
+
+ public BlazeExecutor build() throws ExecutorInitException {
+ return new BlazeExecutor(directories.getExecRoot(), directories.getOutputPath(), reporter, bus,
+ BlazeClock.instance(), optionsParser,
+ optionsParser.getOptions(ExecutionOptions.class).verboseFailures,
+ optionsParser.getOptions(ExecutionOptions.class).showSubcommands,
+ strategies,
+ ImmutableMap.copyOf(spawnStrategyMap), ImmutableList.<ActionContextProvider>of());
+ }
+}