use of com.facebook.buck.util.CapturingPrintStream in project buck by facebook.
the class DaemonIntegrationTest method whenClientTimeoutDetectedThenTestIsInterrupted.
/**
* This verifies that a client disconnection will be detected by a Nailgun
* NGInputStream reading from an empty heartbeat stream and that the generated
* InterruptedException will interrupt command execution causing it to fail.
*/
@Test
public void whenClientTimeoutDetectedThenTestIsInterrupted() throws InterruptedException, IOException {
// Sub process interruption not supported on Windows.
assumeTrue(Platform.detect() != Platform.WINDOWS);
final long timeoutMillis = 100;
final ProjectWorkspace workspace = TestDataHelper.createProjectWorkspaceForScenario(this, "exclusive_execution", tmp);
workspace.setUp();
// Start with an input stream that sends heartbeats at a regular rate.
final DelegatingInputStream inputStream = new DelegatingInputStream(TestContext.createHeartBeatStream(timeoutMillis / 10));
// Build an NGContext connected to an NGInputStream reading from stream that will timeout.
try (TestContext context = new TestContext(ImmutableMap.copyOf(System.getenv()), inputStream, timeoutMillis)) {
ProcessResult result = workspace.runBuckdCommand(context, new CapturingPrintStream() {
@Override
public void println(String x) {
if (x.contains("TESTING //:test")) {
// When tests start running, make the heartbeat stream simulate a disconnection.
inputStream.setDelegate(TestContext.createDisconnectionStream(2 * timeoutMillis));
}
super.println(x);
}
}, "test", "//:test");
result.assertFailure();
assertThat(result.getStderr(), containsString("InterruptedException"));
}
}
use of com.facebook.buck.util.CapturingPrintStream in project buck by facebook.
the class DaemonIntegrationTest method createRunnableCommand.
private Runnable createRunnableCommand(final int expectedExitCode, final String... args) {
return () -> {
try {
Main main = new Main(new CapturingPrintStream(), new CapturingPrintStream(), new ByteArrayInputStream("".getBytes("UTF-8")));
int exitCode = main.runMainWithExitCode(new BuildId(), tmp.getRoot(), Optional.of(new TestContext()), ImmutableMap.copyOf(System.getenv()), CommandMode.TEST, WatchmanWatcher.FreshInstanceAction.NONE, System.nanoTime(), args);
assertEquals("Unexpected exit code.", expectedExitCode, exitCode);
} catch (IOException e) {
fail("Should not throw exception.");
Throwables.throwIfUnchecked(e);
} catch (InterruptedException e) {
fail("Should not throw exception.");
Thread.currentThread().interrupt();
}
};
}
use of com.facebook.buck.util.CapturingPrintStream in project buck by facebook.
the class UserInputTest method testAsk.
@Test
public void testAsk() throws Exception {
String cannedAnswer = "answer";
UserInputFixture fixture = new UserInputFixture(cannedAnswer);
UserInput input = fixture.getUserInput();
CapturingPrintStream outputStream = fixture.getOutputStream();
String questionString = "question";
String response = input.ask(questionString);
assertThat(outputStream.getContentsAsString(Charsets.UTF_8), Matchers.containsString(questionString));
assertThat(response, Matchers.equalTo(cannedAnswer));
}
Aggregations