use of org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse in project incubator-servicecomb-java-chassis by apache.
the class TestMicroserviceInstanceHeartbeatTask method testHeartbeatNotRegistered.
@Test
public void testHeartbeatNotRegistered(@Mocked ServiceRegistryClient srClient, @Mocked ServiceRegistryConfig serviceRegistryConfig, @Mocked MicroserviceWatchTask watchTask) {
HeartbeatResponse response = new HeartbeatResponse();
response.setOk(false);
response.setMessage("FAIL");
new Expectations() {
{
srClient.heartbeat(anyString, anyString);
result = response;
watchTask.getMicroservice();
result = microservice;
}
};
MicroserviceInstanceHeartbeatTask heartbeatTask = new MicroserviceInstanceHeartbeatTask(eventBus, srClient, microservice);
watchTask.taskStatus = TaskStatus.READY;
eventBus.post(watchTask);
heartbeatTask.run();
Assert.assertEquals(HeartbeatResult.INSTANCE_NOT_REGISTERED, heartbeatTask.getHeartbeatResult());
Assert.assertEquals(true, heartbeatTask.isNeedRegisterInstance());
Assert.assertEquals(1, heartbeatTaskList.size());
}
use of org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse in project incubator-servicecomb-java-chassis by apache.
the class TestMicroserviceInstanceHeartbeatTask method testHeartbeatSuccess.
@Test
public void testHeartbeatSuccess(@Mocked ServiceRegistryClient srClient, @Mocked ServiceRegistryConfig serviceRegistryConfig, @Mocked MicroserviceWatchTask watchTask) {
HeartbeatResponse response = new HeartbeatResponse();
response.setOk(true);
response.setMessage("OK");
new Expectations() {
{
srClient.heartbeat(anyString, anyString);
result = response;
watchTask.getMicroservice();
result = microservice;
}
};
MicroserviceInstanceHeartbeatTask heartbeatTask = new MicroserviceInstanceHeartbeatTask(eventBus, srClient, microservice);
watchTask.taskStatus = TaskStatus.READY;
eventBus.post(watchTask);
heartbeatTask.run();
Assert.assertEquals(HeartbeatResult.SUCCESS, heartbeatTask.getHeartbeatResult());
Assert.assertEquals(false, heartbeatTask.isNeedRegisterInstance());
Assert.assertEquals(1, heartbeatTaskList.size());
}
use of org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse in project incubator-servicecomb-java-chassis by apache.
the class MicroserviceInstanceHeartbeatTask method heartbeat.
private HeartbeatResult heartbeat() {
HeartbeatResponse response = srClient.heartbeat(microserviceInstance.getServiceId(), microserviceInstance.getInstanceId());
if (response == null) {
LOGGER.error("Disconnected from service center and heartbeat failed for microservice instance={}/{}", microserviceInstance.getServiceId(), microserviceInstance.getInstanceId());
EventManager.post(new HeartbeatFailEvent());
return HeartbeatResult.DISCONNECTED;
}
if (!response.isOk()) {
LOGGER.error("Update heartbeat to service center failed, microservice instance={}/{} does not exist", microserviceInstance.getServiceId(), microserviceInstance.getInstanceId());
EventManager.post(new HeartbeatFailEvent());
return HeartbeatResult.INSTANCE_NOT_REGISTERED;
}
EventManager.post(new HeartbeatSuccEvent());
return HeartbeatResult.SUCCESS;
}
use of org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse in project incubator-servicecomb-java-chassis by apache.
the class ServiceRegistryClientImpl method heartbeat.
@Override
public HeartbeatResponse heartbeat(String microserviceId, String microserviceInstanceId) {
Holder<HttpClientResponse> holder = new Holder<>();
IpPort ipPort = ipPortManager.getAvailableAddress();
CountDownLatch countDownLatch = new CountDownLatch(1);
RestUtils.put(ipPort, String.format(Const.REGISTRY_API.MICROSERVICE_HEARTBEAT, microserviceId, microserviceInstanceId), new RequestParam().setTimeout(ServiceRegistryConfig.INSTANCE.getHeartBeatRequestTimeout()), syncHandler(countDownLatch, HttpClientResponse.class, holder));
try {
countDownLatch.await();
if (holder.value != null) {
HeartbeatResponse response = new HeartbeatResponse();
response.setMessage(holder.value.statusMessage());
if (holder.value.statusCode() == Status.OK.getStatusCode()) {
response.setOk(true);
return response;
}
LOGGER.warn(holder.value.statusMessage());
return response;
}
} catch (Exception e) {
LOGGER.error("update microservice instance {}/{} heartbeat failed", microserviceId, microserviceInstanceId, e);
}
return null;
}
use of org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse in project incubator-servicecomb-java-chassis by apache.
the class LocalServiceRegistryClientImpl method heartbeat.
@Override
public HeartbeatResponse heartbeat(String microserviceId, String microserviceInstanceId) {
HeartbeatResponse response = new HeartbeatResponse();
response.setMessage("OK");
response.setOk(true);
return response;
}
Aggregations