@Test
public void testFuture() throws Exception {

	// Time out on standard error processing
	String[] arguments = _buildArguments(Pause.class);
	Future<?> future = ProcessUtil.execute(
		ConsumerOutputProcessor.INSTANCE, arguments);
	Assert.assertFalse(future.isCancelled());
	Assert.assertFalse(future.isDone());
	try {
		future.get(1, TimeUnit.SECONDS);
		Assert.fail();
	}
	catch (TimeoutException timeoutException) {
	}
	future.cancel(true);
	// Cancel twice to satisfy code coverage
	future.cancel(true);
	// Time out on standard out processing
	future = ProcessUtil.execute(
		new ConsumerOutputProcessor() {
			@Override
			public Void processStdErr(InputStream stdOutInputStream) {
				return null;
			}
		},
		arguments);
	Assert.assertFalse(future.isCancelled());
	Assert.assertFalse(future.isDone());
	try {
		future.get(1, TimeUnit.SECONDS);
		Assert.fail();
	}
	catch (TimeoutException timeoutException) {
	}
	future.cancel(true);
	// Success time out get
	future = ProcessUtil.execute(
		ConsumerOutputProcessor.INSTANCE, _buildArguments(Echo.class, "0"));
	future.get(1, TimeUnit.MINUTES);
}