use of com.sun.xml.ws.api.pipe.EngineTest.SimpleCompletionCallback in project metro-jax-ws by eclipse-ee4j.
the class FiberTest method testNextActionAbortResponse.
public void testNextActionAbortResponse() {
TestTube tubeC = new TestTube() {
@Override
@NotNull
public NextAction processRequest(@NotNull Packet request) {
super.processRequest(request);
NextAction na = new NextAction();
na.abortResponse(request);
return na;
}
};
FilterTestTube tubeB = new FilterTestTube(tubeC);
FilterTestTube tubeA = new FilterTestTube(tubeB);
Packet request = new Packet();
SimpleCompletionCallback callback = new SimpleCompletionCallback();
Fiber fiber = engine.createFiber();
assertNotNull(fiber);
fiber.start(tubeA, request, callback, true);
assertEquals(request, callback.response);
assertNull(callback.error);
List<TubeCall> calls = tubeA.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
TubeCall firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeB.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeC.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
}
use of com.sun.xml.ws.api.pipe.EngineTest.SimpleCompletionCallback in project metro-jax-ws by eclipse-ee4j.
the class FiberTest method testStartTubePacketCompletionCallback.
public void testStartTubePacketCompletionCallback() {
final Holder<Boolean> isInExecutor = new Holder<Boolean>(Boolean.FALSE);
TestTube testTube = new TestTube() {
@Override
@NotNull
public NextAction processRequest(@NotNull Packet request) {
isInExecutor.value = executor.isInExecutor();
return super.processRequest(request);
}
};
Packet request = new Packet();
SimpleCompletionCallback callback = new SimpleCompletionCallback();
Fiber fiber = engine.createFiber();
assertNotNull(fiber);
fiber.start(testTube, request, callback);
assertEquals(request, callback.response);
assertNull(callback.error);
List<TubeCall> calls = testTube.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
TubeCall firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
assertTrue(isInExecutor.value);
}
use of com.sun.xml.ws.api.pipe.EngineTest.SimpleCompletionCallback in project metro-jax-ws by eclipse-ee4j.
the class FiberTest method testStartTubePacketCompletionCallbackBoolean.
public void testStartTubePacketCompletionCallbackBoolean() {
final Holder<Boolean> isInExecutor = new Holder<Boolean>(Boolean.FALSE);
TestTube testTube = new TestTube() {
@Override
@NotNull
public NextAction processRequest(@NotNull Packet request) {
isInExecutor.value = executor.isInExecutor();
return super.processRequest(request);
}
};
Packet request = new Packet();
SimpleCompletionCallback callback = new SimpleCompletionCallback();
Fiber fiber = engine.createFiber();
assertNotNull(fiber);
fiber.start(testTube, request, callback, true);
assertEquals(request, callback.response);
assertNull(callback.error);
List<TubeCall> calls = testTube.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
TubeCall firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
assertFalse(isInExecutor.value);
}
use of com.sun.xml.ws.api.pipe.EngineTest.SimpleCompletionCallback in project metro-jax-ws by eclipse-ee4j.
the class FiberTest method testSuspendNextRunnableResumeThrowablePacket.
public void testSuspendNextRunnableResumeThrowablePacket() throws InterruptedException {
final Semaphore atSuspend = new Semaphore(0);
final Semaphore checkCompleted = new Semaphore(0);
final Semaphore atEnd = new Semaphore(0);
final TestTube tubeC = new TestTube();
final FilterTestTube tubeB = new FilterTestTube(tubeC) {
@Override
@NotNull
public NextAction processRequest(@NotNull Packet request) {
super.processRequest(request);
return doSuspend(next, new Runnable() {
@Override
public void run() {
atSuspend.release();
try {
checkCompleted.acquire();
} catch (InterruptedException e) {
}
}
});
}
};
final FilterTestTube tubeA = new FilterTestTube(tubeB);
final Packet request = new Packet();
final SimpleCompletionCallback callback = new SimpleCompletionCallback() {
@Override
public void onCompletion(@NotNull Packet response) {
super.onCompletion(response);
atEnd.release();
}
@Override
public void onCompletion(@NotNull Throwable error) {
super.onCompletion(error);
atEnd.release();
}
};
final Fiber fiber = threadPoolEngine.createFiber();
assertNotNull(fiber);
fiber.start(tubeA, request, callback);
if (!atSuspend.tryAcquire(3, TimeUnit.MINUTES))
fail("timeout");
// ensure test thread really blocked
assertEquals(0, atEnd.availablePermits());
// thread is suspended
assertNull(callback.response);
assertNull(callback.error);
List<TubeCall> calls = tubeA.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
TubeCall firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeB.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeC.getCalls();
assertNotNull(calls);
assertEquals(0, calls.size());
checkCompleted.release();
Packet secondPacket = new Packet();
fiber.resume(new RuntimeException(), secondPacket);
if (!atEnd.tryAcquire(3, TimeUnit.MINUTES))
fail("timeout");
assertNull(callback.response);
assertTrue(callback.error instanceof RuntimeException);
calls = tubeA.getCalls();
assertNotNull(calls);
assertEquals(2, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
TubeCall secondCall = calls.get(1);
assertNotNull(secondCall);
assertEquals(TubeCallType.EXCEPTION, secondCall.callType);
assertEquals(testContainer, secondCall.container);
assertEquals(secondPacket, secondCall.packet);
calls = tubeB.getCalls();
assertNotNull(calls);
assertEquals(2, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
secondCall = calls.get(1);
assertNotNull(secondCall);
assertEquals(TubeCallType.EXCEPTION, secondCall.callType);
assertEquals(testContainer, secondCall.container);
calls = tubeC.getCalls();
assertNotNull(calls);
assertEquals(0, calls.size());
}
use of com.sun.xml.ws.api.pipe.EngineTest.SimpleCompletionCallback in project metro-jax-ws by eclipse-ee4j.
the class FiberTest method testSuspendRunnableResume.
public void testSuspendRunnableResume() throws InterruptedException {
final Semaphore atSuspend = new Semaphore(0);
final Semaphore checkCompleted = new Semaphore(0);
final Semaphore atEnd = new Semaphore(0);
final TestTube tubeC = new TestTube();
final FilterTestTube tubeB = new FilterTestTube(tubeC) {
@Override
@NotNull
public NextAction processRequest(@NotNull Packet request) {
super.processRequest(request);
return doSuspend(new Runnable() {
@Override
public void run() {
atSuspend.release();
try {
checkCompleted.acquire();
} catch (InterruptedException e) {
}
}
});
}
};
final FilterTestTube tubeA = new FilterTestTube(tubeB);
final Packet request = new Packet();
final SimpleCompletionCallback callback = new SimpleCompletionCallback() {
@Override
public void onCompletion(@NotNull Packet response) {
super.onCompletion(response);
atEnd.release();
}
@Override
public void onCompletion(@NotNull Throwable error) {
super.onCompletion(error);
atEnd.release();
}
};
final Fiber fiber = threadPoolEngine.createFiber();
assertNotNull(fiber);
fiber.start(tubeA, request, callback);
if (!atSuspend.tryAcquire(3, TimeUnit.MINUTES))
fail("timeout");
// ensure test thread really blocked
assertEquals(0, atEnd.availablePermits());
// thread is suspended
assertNull(callback.response);
assertNull(callback.error);
List<TubeCall> calls = tubeA.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
TubeCall firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeB.getCalls();
assertNotNull(calls);
assertEquals(1, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
calls = tubeC.getCalls();
assertNotNull(calls);
assertEquals(0, calls.size());
checkCompleted.release();
fiber.resume(request);
if (!atEnd.tryAcquire(3, TimeUnit.MINUTES))
fail("timeout");
assertEquals(request, callback.response);
assertNull(callback.error);
calls = tubeA.getCalls();
assertNotNull(calls);
assertEquals(2, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
TubeCall secondCall = calls.get(1);
assertNotNull(secondCall);
assertEquals(TubeCallType.RESPONSE, secondCall.callType);
assertEquals(testContainer, secondCall.container);
calls = tubeB.getCalls();
assertNotNull(calls);
assertEquals(2, calls.size());
firstCall = calls.get(0);
assertNotNull(firstCall);
assertEquals(TubeCallType.REQUEST, firstCall.callType);
assertEquals(testContainer, firstCall.container);
secondCall = calls.get(1);
assertNotNull(secondCall);
assertEquals(TubeCallType.RESPONSE, secondCall.callType);
assertEquals(testContainer, secondCall.container);
calls = tubeC.getCalls();
assertNotNull(calls);
assertEquals(0, calls.size());
}
Aggregations