aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-06-16 15:25:42 +0200
committerGravatar Philipp Wollermann <philwo@google.com>2017-06-19 18:23:00 +0200
commitacd291a520d392977a2efff17949b75c2fa80eef (patch)
treea3da9f3eda8844425cdbb28d291eedee400c8069 /src/test/java/com/google/devtools/build
parent560bcb8653947d5d38fa9710c25b7eff6596b2fc (diff)
Rewrite StandaloneSpawnStrategy to use LocalSpawnRunner
PiperOrigin-RevId: 159221067
Diffstat (limited to 'src/test/java/com/google/devtools/build')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD2
-rw-r--r--src/test/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunnerTest.java47
-rw-r--r--src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java25
3 files changed, 59 insertions, 15 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 7a6fa64457..47bb2421d1 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -1130,11 +1130,13 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:clock",
"//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:os_util",
"//src/main/java/com/google/devtools/build/lib:shell",
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib:vfs",
"//src/main/java/com/google/devtools/build/lib/actions",
+ "//src/main/java/com/google/devtools/build/lib/exec/local",
"//src/main/java/com/google/devtools/build/lib/rules/apple",
"//src/main/java/com/google/devtools/build/lib/standalone",
"//src/main/java/com/google/devtools/common/options",
diff --git a/src/test/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunnerTest.java b/src/test/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunnerTest.java
index d2370b819f..cb4bad6db6 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunnerTest.java
@@ -41,6 +41,7 @@ import com.google.devtools.build.lib.shell.JavaSubprocessFactory;
import com.google.devtools.build.lib.shell.Subprocess;
import com.google.devtools.build.lib.shell.SubprocessBuilder;
import com.google.devtools.build.lib.util.NetUtil;
+import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.io.FileOutErr;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -218,7 +219,7 @@ public class LocalSpawnRunnerTest {
options.localSigkillGraceSeconds = 456;
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
timeoutMillis = 123 * 1000L;
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -253,7 +254,7 @@ public class LocalSpawnRunnerTest {
options.localSigkillGraceSeconds = 456;
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, NO_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, NO_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
timeoutMillis = 123 * 1000L;
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -283,7 +284,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
SpawnResult result = runner.exec(SIMPLE_SPAWN, policy);
@@ -313,7 +314,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
assertThat(fs.getPath("/out").createDirectory()).isTrue();
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -337,7 +338,7 @@ public class LocalSpawnRunnerTest {
options.allowedLocalAction = Pattern.compile("none");
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
outErr = new FileOutErr();
SpawnResult reply = runner.exec(SIMPLE_SPAWN, policy);
@@ -376,7 +377,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
try {
@@ -399,7 +400,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), mockPrefetcher, options, resourceManager,
- USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
timeoutMillis = 123 * 1000L;
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -418,7 +419,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), mockPrefetcher, options, resourceManager,
- USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
timeoutMillis = 123 * 1000L;
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -446,7 +447,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), mockPrefetcher, options, resourceManager,
- USE_WRAPPER, "product-name", LocalEnvProvider.UNMODIFIED);
+ USE_WRAPPER, OS.LINUX, "product-name", LocalEnvProvider.UNMODIFIED);
policy.inputMapping.put(PathFragment.create("relative/path"), null);
policy.inputMapping.put(
@@ -469,7 +470,7 @@ public class LocalSpawnRunnerTest {
LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
LocalSpawnRunner runner = new LocalSpawnRunner(
logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
- resourceManager, USE_WRAPPER, "product-name", localEnvProvider);
+ resourceManager, USE_WRAPPER, OS.LINUX, "product-name", localEnvProvider);
timeoutMillis = 123 * 1000L;
outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
@@ -478,4 +479,30 @@ public class LocalSpawnRunnerTest {
verify(localEnvProvider)
.rewriteLocalEnv(any(), eq(fs.getPath("/execroot")), eq("product-name"));
}
+
+ @Test
+ public void useCorrectExtensionOnWindows() throws Exception {
+ Subprocess.Factory factory = mock(Subprocess.Factory.class);
+ ArgumentCaptor<SubprocessBuilder> captor = ArgumentCaptor.forClass(SubprocessBuilder.class);
+ when(factory.create(captor.capture())).thenReturn(new FinishedSubprocess(0));
+ SubprocessBuilder.setSubprocessFactory(factory);
+
+ LocalExecutionOptions options = Options.getDefaults(LocalExecutionOptions.class);
+ options.localSigkillGraceSeconds = 654;
+ LocalSpawnRunner runner = new LocalSpawnRunner(
+ logger, execCount, fs.getPath("/execroot"), ActionInputPrefetcher.NONE, options,
+ resourceManager, USE_WRAPPER, OS.WINDOWS, "product-name", LocalEnvProvider.UNMODIFIED);
+
+ timeoutMillis = 321 * 1000L;
+ outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
+ SpawnResult result = runner.exec(SIMPLE_SPAWN, policy);
+ verify(factory).create(any(SubprocessBuilder.class));
+ assertThat(result.status()).isEqualTo(SpawnResult.Status.SUCCESS);
+
+ assertThat(captor.getValue().getArgv())
+ .isEqualTo(ImmutableList.of(
+ // process-wrapper timeout grace_time stdout stderr
+ "/execroot/_bin/process-wrapper.exe", "321.0", "654.0", "/out/stdout", "/out/stderr",
+ "/bin/echo", "Hi!"));
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index 5f437637f3..4935545909 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -22,6 +22,8 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
import com.google.devtools.build.lib.actions.BaseSpawn;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.Executor.ActionContext;
@@ -34,22 +36,26 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.events.PrintingEventHandler;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.exec.ActionContextProvider;
+import com.google.devtools.build.lib.exec.ActionInputPrefetcher;
import com.google.devtools.build.lib.exec.BlazeExecutor;
import com.google.devtools.build.lib.exec.ExecutionOptions;
import com.google.devtools.build.lib.exec.SingleBuildFileCache;
+import com.google.devtools.build.lib.exec.local.LocalExecutionOptions;
import com.google.devtools.build.lib.integration.util.IntegrationMock;
import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestFileOutErr;
import com.google.devtools.build.lib.testutil.TestUtils;
import com.google.devtools.build.lib.util.BlazeClock;
import com.google.devtools.build.lib.util.OS;
+import com.google.devtools.build.lib.util.io.FileOutErr;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.util.FileSystems;
+import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsParser;
import java.io.IOException;
import java.util.Arrays;
+import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -60,11 +66,19 @@ import org.junit.runners.JUnit4;
*/
@RunWith(JUnit4.class)
public class StandaloneSpawnStrategyTest {
+ private static final ArtifactExpander SIMPLE_ARTIFACT_EXPANDER =
+ new ArtifactExpander() {
+ @Override
+ public void expand(Artifact artifact, Collection<? super Artifact> output) {
+ output.add(artifact);
+ }
+ };
private Reporter reporter =
new Reporter(new EventBus(), PrintingEventHandler.ERRORS_AND_WARNINGS_TO_STDERR);
private BlazeExecutor executor;
private FileSystem fileSystem;
+ private FileOutErr outErr;
private Path createTestRoot() throws IOException {
fileSystem = FileSystems.getNativeFileSystem();
@@ -83,6 +97,7 @@ public class StandaloneSpawnStrategyTest {
Path testRoot = createTestRoot();
Path workspaceDir = testRoot.getRelative("workspace-name");
workspaceDir.createDirectory();
+ outErr = new FileOutErr(testRoot.getRelative("stdout"), testRoot.getRelative("stderr"));
// setup output base & directories
Path outputBase = testRoot.getRelative("outputBase");
@@ -94,6 +109,7 @@ public class StandaloneSpawnStrategyTest {
IntegrationMock.get().getIntegrationBinTools(directories, TestConstants.WORKSPACE_NAME);
OptionsParser optionsParser = OptionsParser.newOptionsParser(ExecutionOptions.class);
optionsParser.parse("--verbose_failures");
+ LocalExecutionOptions localExecutionOptions = Options.getDefaults(LocalExecutionOptions.class);
EventBus bus = new EventBus();
@@ -112,7 +128,8 @@ public class StandaloneSpawnStrategyTest {
ImmutableMap.<String, SpawnActionContext>of(
"",
new StandaloneSpawnStrategy(
- execRoot, false, "mock-product-name", resourceManager)),
+ execRoot, ActionInputPrefetcher.NONE, localExecutionOptions,
+ /*verboseFailures=*/false, "mock-product-name", resourceManager)),
ImmutableList.<ActionContextProvider>of());
executor.getExecRoot().createDirectory();
@@ -126,8 +143,6 @@ public class StandaloneSpawnStrategyTest {
ResourceSet.ZERO);
}
- private TestFileOutErr outErr = new TestFileOutErr();
-
private String out() {
return outErr.outAsLatin1();
}
@@ -155,7 +170,7 @@ public class StandaloneSpawnStrategyTest {
null,
outErr,
ImmutableMap.<String, String>of(),
- null);
+ SIMPLE_ARTIFACT_EXPANDER);
}
@Test