use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class Log4jUtilsTest method initOnMergedFileOutputDisabled.
@Test
public void initOnMergedFileOutputDisabled() {
Holder<Boolean> propertiesLoaded = new Holder<>(false);
Holder<Boolean> logConfigured = new Holder<>(false);
Holder<Boolean> mergedFileWritten = new Holder<>(false);
final Properties logProperties = new Properties();
logProperties.setProperty("log4j.logger.outputConfig.enabled", "false");
final ArrayList<Resource> logResList = new ArrayList<>();
new MockUp<PropertiesLoader>() {
@Mock
Properties load() {
propertiesLoaded.value = true;
return logProperties;
}
};
new MockUp<PropertyConfigurator>() {
@Mock
void configure(Properties properties) {
logConfigured.value = true;
Assert.assertSame(properties, logProperties);
}
};
new MockUp<Log4jUtils>() {
@Mock
void outputFile(List<Resource> resList, Properties properties) {
mergedFileWritten.value = true;
Assert.assertSame(logResList, resList);
Assert.assertSame(logProperties, properties);
}
};
Assert.assertFalse(Deencapsulation.getField(Log4jUtils.class, "inited"));
try {
Log4jUtils.init();
} catch (Exception e) {
fail(e.getMessage());
}
Assert.assertTrue(Deencapsulation.getField(Log4jUtils.class, "inited"));
Assert.assertTrue(propertiesLoaded.value);
Assert.assertTrue(logConfigured.value);
Assert.assertFalse(mergedFileWritten.value);
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestLoadbalanceHandler method send_success.
@Test
public void send_success(@Injectable LoadBalancer loadBalancer) {
MicroserviceInstance instance1 = new MicroserviceInstance();
instance1.setInstanceId("1234");
CacheEndpoint cacheEndpoint = new CacheEndpoint("rest://localhost:8080", instance1);
ServiceCombServer server = new ServiceCombServer(null, restTransport, cacheEndpoint);
LoadBalancerStats stats = new LoadBalancerStats("test");
new Expectations(loadBalancer) {
{
loadBalancer.chooseServer(invocation);
result = server;
loadBalancer.getLoadBalancerStats();
result = stats;
}
};
sendResponse = Response.ok("success");
Holder<String> result = new Holder<>();
Deencapsulation.invoke(handler, "send", invocation, (AsyncResponse) resp -> {
result.value = resp.getResult();
}, loadBalancer);
Assert.assertEquals(1, loadBalancer.getLoadBalancerStats().getSingleServerStat(server).getActiveRequestsCount());
Assert.assertEquals("success", result.value);
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestLoadbalanceHandler method send_failed2.
@Test
public void send_failed2(@Injectable LoadBalancer loadBalancer) {
MicroserviceInstance instance1 = new MicroserviceInstance();
instance1.setInstanceId("1234");
CacheEndpoint cacheEndpoint = new CacheEndpoint("rest://localhost:8080", instance1);
ServiceCombServer server = new ServiceCombServer(null, restTransport, cacheEndpoint);
LoadBalancerStats stats = new LoadBalancerStats("test");
new Expectations(loadBalancer) {
{
loadBalancer.chooseServer(invocation);
result = server;
loadBalancer.getLoadBalancerStats();
result = stats;
}
};
sendResponse = Response.create(Status.BAD_REQUEST, "send failed");
Holder<Throwable> result = new Holder<>();
Deencapsulation.invoke(handler, "send", invocation, (AsyncResponse) resp -> {
result.value = (Throwable) resp.getResult();
}, loadBalancer);
// InvocationException is not taken as a failure
Assert.assertEquals(0, loadBalancer.getLoadBalancerStats().getSingleServerStat(server).getSuccessiveConnectionFailureCount());
Assert.assertEquals("InvocationException: code=400;msg=send failed", result.value.getMessage());
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class TestFaultInjectHandler method testFaultInjectHandlerConfigChangeEvent4.
/**
* Tests the fault injection handler functionality with configuration change event for service level config.
*/
@Test
public void testFaultInjectHandlerConfigChangeEvent4() throws Exception {
System.setProperty("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.delay.fixedDelay", "1");
System.setProperty("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.delay.percent", "100");
System.setProperty("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.abort.percent", "100");
System.setProperty("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.abort.httpStatus", "421");
Mockito.when(invocation.getMicroserviceQualifiedName()).thenReturn("MicroserviceQualifiedName10");
Mockito.when(invocation.getTransport()).thenReturn(transport);
Mockito.when(transport.getName()).thenReturn("rest");
Mockito.when(invocation.getOperationName()).thenReturn("sayBye4");
Mockito.when(invocation.getSchemaId()).thenReturn("testSchema4");
Mockito.when(invocation.getMicroserviceName()).thenReturn("carts4");
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.carts4.policy.fault.protocols.rest.delay.fixedDelay", 500);
Holder<Boolean> isAsserted = new Holder<>(false);
handler.handle(invocation, ar -> {
// check whether error code return,
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.carts4.policy.fault.protocols.rest.delay.fixedDelay");
System.getProperties().remove("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.delay.percent");
System.getProperties().remove("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.abort.percent");
System.getProperties().remove("servicecomb.governance.Consumer.carts4.policy.fault.protocols.rest.abort.httpStatus");
AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName10");
assertEquals(3, count.get());
}
use of org.apache.servicecomb.foundation.common.Holder in project java-chassis by ServiceComb.
the class DelayFaultTest method injectFaultNoPercentageConfig.
@Test
public void injectFaultNoPercentageConfig() {
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", null);
assertNull(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<>();
delayFault.injectFault(invocation, faultParam, response -> resultHolder.value = response.getResult());
AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
assertEquals(1, count.get());
assertEquals("success", resultHolder.value);
}
Aggregations