use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestAbstractRestInvocation method threadPoolReject.
@Test
public void threadPoolReject(@Mocked OperationMeta operationMeta) {
RejectedExecutionException rejectedExecutionException = new RejectedExecutionException("reject");
Executor executor = (task) -> {
throw rejectedExecutionException;
};
new Expectations() {
{
restOperation.getOperationMeta();
result = operationMeta;
operationMeta.getExecutor();
result = executor;
}
};
Holder<Throwable> holder = new Holder<>();
requestEx = new AbstractHttpServletRequestForTest();
restInvocation = new AbstractRestInvocationForTest() {
@Override
public void sendFailResponse(Throwable throwable) {
holder.value = throwable;
invocation.onFinish(Response.ok(null));
}
};
restInvocation.requestEx = requestEx;
restInvocation.restOperationMeta = restOperation;
restInvocation.scheduleInvocation();
Assert.assertSame(rejectedExecutionException, holder.value);
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestAbstractRestInvocation method scheduleInvocation_invocationContextDeserializeError.
@Test
public void scheduleInvocation_invocationContextDeserializeError(@Mocked AsyncContext asyncContext) {
requestEx = new AbstractHttpServletRequest() {
@Override
public String getHeader(String name) {
return "{\"x-cse-src-microservice\":'source\"}";
}
@Override
public AsyncContext getAsyncContext() {
return asyncContext;
}
};
Holder<Integer> status = new Holder<>();
Holder<String> reasonPhrase = new Holder<>();
Holder<Integer> endCount = new Holder<>(0);
responseEx = new AbstractHttpServletResponse() {
@SuppressWarnings("deprecation")
@Override
public void setStatus(int sc, String sm) {
status.value = sc;
reasonPhrase.value = sm;
}
@Override
public void flushBuffer() {
endCount.value = endCount.value + 1;
}
@Override
public void setContentType(String type) {
assertEquals("application/json; charset=utf-8", type);
}
};
restInvocation.requestEx = requestEx;
restInvocation.responseEx = responseEx;
restInvocation.scheduleInvocation();
assertEquals(Integer.valueOf(590), status.value);
assertEquals("Unexpected producer error, please check logs for details", reasonPhrase.value);
assertEquals(Integer.valueOf(1), endCount.value);
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class VertxUtils method blockDeploy.
// deploy Verticle and wait for its success. do not call this method in event-loop thread
public static <VERTICLE extends Verticle> boolean blockDeploy(Vertx vertx, Class<VERTICLE> cls, DeploymentOptions options) throws InterruptedException {
Holder<Boolean> result = new Holder<>();
CountDownLatch latch = new CountDownLatch(1);
vertx.deployVerticle(cls.getName(), options, ar -> {
result.value = ar.succeeded();
if (ar.failed()) {
LOGGER.error("deploy vertx failed, cause ", ar.cause());
}
latch.countDown();
});
latch.await();
return result.value;
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class AbortFaultTest method injectFaultNoError.
@Test
public void injectFaultNoError() {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "0");
assertEquals("421", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus").getString());
assertEquals("0", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent").getString());
AbortFault abortFault = new AbortFault();
FaultParam faultParam = new FaultParam(1);
Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
faultParam.setVertx(vertx);
Holder<String> resultHolder = new Holder<>();
abortFault.injectFault(invocation, faultParam, response -> resultHolder.value = response.getResult());
AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
assertEquals(1, count.get());
assertEquals("success", resultHolder.value);
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class AbortFaultTest method injectFaultError.
@Test
public void injectFaultError() {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "100");
assertEquals("421", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus").getString());
assertEquals("100", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent").getString());
AbortFault abortFault = new AbortFault();
FaultParam faultParam = new FaultParam(1);
Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
faultParam.setVertx(vertx);
Holder<InvocationException> resultHolder = new Holder<>();
abortFault.injectFault(invocation, faultParam, response -> resultHolder.value = response.getResult());
AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
assertEquals(1, count.get());
assertEquals(421, resultHolder.value.getStatusCode());
assertEquals("aborted by fault inject", resultHolder.value.getReasonPhrase());
assertEquals("CommonExceptionData [message=aborted by fault inject]", resultHolder.value.getErrorData().toString());
}
Aggregations