use of org.apache.dubbo.common.status.Status in project dubbo by alibaba.
the class ConsulRegistryTest method testStatusChecker.
@Test
public void testStatusChecker() {
RegistryStatusChecker registryStatusChecker = new RegistryStatusChecker();
Status status = registryStatusChecker.check();
assertThat(status.getLevel(), is(Status.Level.UNKNOWN));
Registry registry = consulRegistryFactory.getRegistry(registryUrl);
assertThat(registry, not(nullValue()));
status = registryStatusChecker.check();
assertThat(status.getLevel(), is(Status.Level.OK));
registry.register(serviceUrl);
status = registryStatusChecker.check();
assertThat(status.getLevel(), is(Status.Level.OK));
}
use of org.apache.dubbo.common.status.Status in project dubbo by alibaba.
the class MemoryStatusCheckerTest method test.
@Test
public void test() throws Exception {
MemoryStatusChecker statusChecker = new MemoryStatusChecker();
Status status = statusChecker.check();
assertThat(status.getLevel(), anyOf(is(OK), is(WARN)));
logger.info("memory status level: " + status.getLevel());
logger.info("memory status message: " + status.getMessage());
}
use of org.apache.dubbo.common.status.Status in project dubbo by alibaba.
the class DataSourceStatusChecker method check.
@Override
public Status check() {
Optional<ApplicationContext> context = SpringExtensionFactory.getContexts().stream().filter(Objects::nonNull).findFirst();
if (!context.isPresent()) {
return new Status(Status.Level.UNKNOWN);
}
Map<String, DataSource> dataSources = context.get().getBeansOfType(DataSource.class, false, false);
if (CollectionUtils.isEmptyMap(dataSources)) {
return new Status(Status.Level.UNKNOWN);
}
Status.Level level = Status.Level.OK;
StringBuilder buf = new StringBuilder();
for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) {
DataSource dataSource = entry.getValue();
if (buf.length() > 0) {
buf.append(", ");
}
buf.append(entry.getKey());
try (Connection connection = dataSource.getConnection()) {
DatabaseMetaData metaData = connection.getMetaData();
try (ResultSet resultSet = metaData.getTypeInfo()) {
if (!resultSet.next()) {
level = Status.Level.ERROR;
}
}
buf.append(metaData.getURL());
buf.append("(");
buf.append(metaData.getDatabaseProductName());
buf.append("-");
buf.append(metaData.getDatabaseProductVersion());
buf.append(")");
} catch (Throwable e) {
logger.warn(e.getMessage(), e);
return new Status(level, e.getMessage());
}
}
return new Status(level, buf.toString());
}
use of org.apache.dubbo.common.status.Status in project dubbo by alibaba.
the class ServerStatusCheckerTest method testServerStatusChecker.
@Test
public void testServerStatusChecker() throws Exception {
int port = NetUtils.getAvailablePort(7000);
URL url = URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName());
DemoService service = new DemoServiceImpl();
DubboProtocol.getDubboProtocol().export(proxy.getInvoker(service, DemoService.class, url));
StatusChecker server = ExtensionLoader.getExtensionLoader(StatusChecker.class).getExtension("server");
Assertions.assertEquals(ServerStatusChecker.class, server.getClass());
Status status = server.check();
Assertions.assertEquals(Status.Level.OK, status.getLevel());
ProtocolUtils.closeAll();
}
use of org.apache.dubbo.common.status.Status in project dubbo by alibaba.
the class ThreadPoolStatusChecker method check.
@Override
public Status check() {
DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();
Map<String, Object> executors = dataStore.get(CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY);
StringBuilder msg = new StringBuilder();
Status.Level level = Status.Level.OK;
for (Map.Entry<String, Object> entry : executors.entrySet()) {
String port = entry.getKey();
ExecutorService executor = (ExecutorService) entry.getValue();
if (executor instanceof ThreadPoolExecutor) {
ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;
boolean ok = tp.getActiveCount() < tp.getMaximumPoolSize() - 1;
Status.Level lvl = Status.Level.OK;
if (!ok) {
level = Status.Level.WARN;
lvl = Status.Level.WARN;
}
if (msg.length() > 0) {
msg.append(";");
}
msg.append("Pool status:").append(lvl).append(", max:").append(tp.getMaximumPoolSize()).append(", core:").append(tp.getCorePoolSize()).append(", largest:").append(tp.getLargestPoolSize()).append(", active:").append(tp.getActiveCount()).append(", task:").append(tp.getTaskCount()).append(", service port: ").append(port);
}
}
return msg.length() == 0 ? new Status(Status.Level.UNKNOWN) : new Status(level, msg.toString());
}
Aggregations