use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestHighwayClient method doTestSend.
private Object doTestSend(Vertx vertx, HighwayClientConnectionPool pool, HighwayClientConnection tcpClient, Object decodedResponse) throws Exception {
new MockUp<VertxUtils>() {
@Mock
<VERTICLE extends AbstractVerticle> boolean blockDeploy(Vertx vertx, Class<VERTICLE> cls, DeploymentOptions options) {
return true;
}
};
new MockUp<ClientPoolManager<HighwayClientConnectionPool>>() {
@Mock
public HighwayClientConnectionPool findClientPool(boolean sync) {
return pool;
}
};
new MockUp<ProtobufManager>() {
@Mock
public OperationProtobuf getOrCreateOperation(Invocation operationMeta) {
return operationProtobuf;
}
};
new MockUp<HighwayClientConnectionPool>() {
@Mock
HighwayClientConnection findOrCreateClient(String endpoint) {
return tcpClient;
}
};
new MockUp<HighwayCodec>() {
@Mock
public Buffer encodeRequest(Invocation invocation, OperationProtobuf operationProtobuf, long msgId) {
return null;
}
@Mock
Response decodeResponse(Invocation invocation, OperationProtobuf operationProtobuf, TcpData tcpData) throws Throwable {
if (decodedResponse instanceof Response) {
return (Response) decodedResponse;
}
throw (Throwable) decodedResponse;
}
};
client.init(vertx);
Mockito.when(invocation.getOperationMeta()).thenReturn(operationMeta);
Mockito.when(invocation.getEndpoint()).thenReturn(endpoint);
Mockito.when(invocation.getEndpoint().getEndpoint()).thenReturn("endpoint");
Mockito.when(invocation.getResponseExecutor()).thenReturn(new ReactiveExecutor());
Mockito.when(invocation.getInvocationStageTrace()).thenReturn(invocationStageTrace);
Mockito.when(operationMeta.getConfig()).thenReturn(Mockito.mock(OperationConfig.class));
Holder<Object> result = new Holder<>();
client.send(invocation, ar -> {
result.value = ar.getResult();
});
return result.value;
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class DelayFaultTest method injectFaultNotDelay.
@Test
public void injectFaultNotDelay() throws InterruptedException {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "0");
assertEquals("10", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay").getString());
assertEquals("0", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent").getString());
DelayFault delayFault = new DelayFault();
FaultParam faultParam = new FaultParam(1);
Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
faultParam.setVertx(vertx);
Holder<String> resultHolder = new Holder<>();
CountDownLatch latch = new CountDownLatch(1);
delayFault.injectFault(invocation, faultParam, response -> {
resultHolder.value = response.getResult();
latch.countDown();
});
latch.await(3, TimeUnit.SECONDS);
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 DelayFaultTest method injectFaultVertxDelay.
@Test
public void injectFaultVertxDelay() throws InterruptedException {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "100");
assertEquals("10", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay").getString());
assertEquals("100", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent").getString());
DelayFault delayFault = new DelayFault();
FaultParam faultParam = new FaultParam(1);
Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
faultParam.setVertx(vertx);
Holder<String> resultHolder = new Holder<>();
CountDownLatch latch = new CountDownLatch(1);
delayFault.injectFault(invocation, faultParam, response -> {
resultHolder.value = response.getResult();
latch.countDown();
});
latch.await(10, TimeUnit.SECONDS);
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 DelayFaultTest method injectFaultNoDelayMsConfig.
@Test
public void injectFaultNoDelayMsConfig() {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "10");
assertEquals("10", DynamicProperty.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent").getString());
DelayFault delayFault = new DelayFault();
FaultParam faultParam = new FaultParam(10);
Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
faultParam.setVertx(vertx);
Holder<String> resultHolder = new Holder<>();
delayFault.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 TestFaultInjectHandler method testFaultInjectHandlerConfigChangeEvent3.
/**
* Tests the fault injection handler functionality with configuration change event for schema level config.
*/
@Test
public void testFaultInjectHandlerConfigChangeEvent3() throws Exception {
System.setProperty("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.delay.fixedDelay", "1");
System.setProperty("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.delay.percent", "100");
System.setProperty("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.abort.percent", "100");
System.setProperty("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.abort.httpStatus", "421");
Mockito.when(invocation.getMicroserviceQualifiedName()).thenReturn("MicroserviceQualifiedName9");
Mockito.when(invocation.getTransport()).thenReturn(transport);
Mockito.when(transport.getName()).thenReturn("rest");
Mockito.when(invocation.getOperationName()).thenReturn("sayBye3");
Mockito.when(invocation.getSchemaId()).thenReturn("testSchema3");
Mockito.when(invocation.getMicroserviceName()).thenReturn("carts3");
boolean validAssert;
long timeOld = System.currentTimeMillis();
List<Fault> faultInjectionFeatureList = Arrays.asList(delayFault, abortFault);
handler.setFaultFeature(faultInjectionFeatureList);
try {
validAssert = true;
handler.handle(invocation, ar);
} catch (Exception e) {
validAssert = false;
}
Assert.assertTrue(validAssert);
ArchaiusUtils.setProperty("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.delay.fixedDelay", 500);
Holder<Boolean> isAsserted = new Holder<>(false);
handler.handle(invocation, ar -> {
// check whether error code return, defaut is 421.
isAsserted.value = true;
assertEquals(421, response.getStatusCode());
assertTrue(response.isFailed());
long timeNow = System.currentTimeMillis();
// if really time delay is added it should be greater than 5s.
Assert.assertTrue((timeNow - timeOld) >= 500);
});
Assert.assertTrue(isAsserted.value);
System.getProperties().remove("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.delay.fixedDelay");
System.getProperties().remove("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.delay.percent");
System.getProperties().remove("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.abort.percent");
System.getProperties().remove("servicecomb.governance.Consumer.carts3.schemas.testSchema3.policy.fault.protocols.rest.abort.httpStatus");
AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName9");
assertEquals(3, count.get());
}
Aggregations