import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
public class WatcherThreadTest {
@Test(timeout = 10000L)
public void kill_process_if_watcher_is_interrupted() throws Exception {
ProcessRef ref = mock(ProcessRef.class, Mockito.RETURNS_DEEP_STUBS);
- final AtomicBoolean waiting = new AtomicBoolean(false);
when(ref.getProcess().waitFor()).thenAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
- waiting.set(true);
- Thread.sleep(Long.MAX_VALUE);
- return 0;
+ throw new InterruptedException();
}
});
Monitor monitor = mock(Monitor.class);
WatcherThread watcher = new WatcherThread(ref, monitor);
watcher.start();
-
- while (!waiting.get()) {
- Thread.sleep(50L);
- }
- watcher.interrupt();
verify(ref).hardKill();
}
}