aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-08-19 14:40:20 +0000
committerGravatar Yue Gan <yueg@google.com>2016-08-22 08:11:02 +0000
commit3d97e2245dbbd34d3428218e745a3770c6d1c0ee (patch)
treea93a61ffc98339b363dea6d06cfa7e35530c870e /src/test/java
parentf5cf200376dd7ebd201138283b2585a6e0cab260 (diff)
Implement timeouts on Windows.
Makes #1664 much less acute. -- MOS_MIGRATED_REVID=130750731
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/windows/MockSubprocess.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java15
2 files changed, 20 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/windows/MockSubprocess.java b/src/test/java/com/google/devtools/build/lib/windows/MockSubprocess.java
index 1562532b3d..540162caf7 100644
--- a/src/test/java/com/google/devtools/build/lib/windows/MockSubprocess.java
+++ b/src/test/java/com/google/devtools/build/lib/windows/MockSubprocess.java
@@ -34,6 +34,7 @@ import java.util.Map;
* <li><code>O&lt;register&gt;</code>: Write the contents of a register to stdout</li>
* <li><code>E&lt;register&gt;</code>: Write the contents of a register to stderr</li>
* <li><code>X&lt;exit code%gt;</code>: Exit with the specified exit code</li>
+ * <li><code>S&lt;seconds&gt;</code>: Wait the specified number of seconds</li>
* </ul>
*
* <p>Registers are single characters. Each command line argument is interpreted as a single
@@ -95,6 +96,15 @@ public class MockSubprocess {
writeBytes(System.out, arg);
break;
+ case 'W':
+ try {
+ Thread.sleep(Integer.parseInt(arg.substring(1)) * 1000);
+ } catch (InterruptedException e) {
+ // This is good enough for a mock process
+ throw new IllegalStateException(e);
+ }
+ break;
+
case 'X':
System.exit(Integer.parseInt(arg.substring(1)));
}
diff --git a/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java b/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java
index 074c81d6b5..0b09216978 100644
--- a/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java
@@ -133,7 +133,7 @@ public class WindowsProcessesTest {
@Test
public void testExitCode() throws Exception {
process = WindowsProcesses.nativeCreateProcess(mockArgs("X42"), null, null, null, null);
- assertThat(WindowsProcesses.nativeWaitFor(process)).isTrue();
+ assertThat(WindowsProcesses.nativeWaitFor(process, -1)).isEqualTo(0);
assertThat(WindowsProcesses.nativeGetExitCode(process)).isEqualTo(42);
assertNoProcessError();
}
@@ -302,7 +302,7 @@ public class WindowsProcessesTest {
null, null, stdoutFile, stderrFile);
assertThat(process).isGreaterThan(0L);
assertNoProcessError();
- assertThat(WindowsProcesses.nativeWaitFor(process)).isTrue();
+ assertThat(WindowsProcesses.nativeWaitFor(process, -1)).isEqualTo(0);
WindowsProcesses.nativeGetExitCode(process);
assertNoProcessError();
byte[] stdout = Files.readAllBytes(Paths.get(stdoutFile));
@@ -319,7 +319,7 @@ public class WindowsProcessesTest {
null, null, file, file);
assertThat(process).isGreaterThan(0L);
assertNoProcessError();
- assertThat(WindowsProcesses.nativeWaitFor(process)).isTrue();
+ assertThat(WindowsProcesses.nativeWaitFor(process, -1)).isEqualTo(0);
WindowsProcesses.nativeGetExitCode(process);
assertNoProcessError();
byte[] bytes = Files.readAllBytes(Paths.get(file));
@@ -337,7 +337,7 @@ public class WindowsProcessesTest {
byte[] buf = new byte[1];
assertThat(readStdout(buf, 0, 1)).isEqualTo(-1);
assertThat(readStderr(buf, 0, 1)).isEqualTo(-1);
- WindowsProcesses.nativeWaitFor(process);
+ WindowsProcesses.nativeWaitFor(process, -1);
}
@Test
@@ -352,7 +352,7 @@ public class WindowsProcessesTest {
process = WindowsProcesses.nativeCreateProcess(mockArgs("O-out2", "E-err2"), null,
null, stdoutFile, stderrFile);
assertNoProcessError();
- WindowsProcesses.nativeWaitFor(process);
+ WindowsProcesses.nativeWaitFor(process, -1);
WindowsProcesses.nativeGetExitCode(process);
assertNoProcessError();
byte[] stdoutBytes = Files.readAllBytes(Paths.get(stdoutFile));
@@ -372,6 +372,11 @@ public class WindowsProcessesTest {
int len = readStdout(buf, 0, 1024);
assertNoProcessError();
assertThat(new String(buf, 0, len, UTF8).replace("\\", "/")).isEqualTo(dir1);
+ }
+ @Test
+ public void testTimeout() throws Exception {
+ process = WindowsProcesses.nativeCreateProcess(mockArgs("W5", "X0"), null, null, null, null);
+ assertThat(WindowsProcesses.nativeWaitFor(process, 1000)).isEqualTo(1);
}
}