}));
t.start();
//
ServerAutomaton server = new ServerAutomaton(serverOOS, serverOIS);
ShellProcess process = server.createProcess("hello");
final BaseProcessContext context = BaseProcessContext.create(process);
//
final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
Thread u = new Thread() {
@Override
public void run() {
context.execute();
ShellResponse response = context.getResponse();
assertInstance(ShellResponse.Cancelled.class, response);
}
};
u.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
error.set(e);
}
});
u.start();
//
synchronized (waiting) {
if (!waiting.get()) {
waiting.set(true);
waiting.wait();
}
}
//
process.cancel();
//
latch.await();
//