Search in sources :

Example 1 with HeartbeatResponse

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());
}
Also used : Expectations(mockit.Expectations) HeartbeatResponse(org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse) Test(org.junit.Test)

Example 2 with HeartbeatResponse

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());
}
Also used : Expectations(mockit.Expectations) HeartbeatResponse(org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse) Test(org.junit.Test)

Example 3 with HeartbeatResponse

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;
}
Also used : HeartbeatResponse(org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse) HeartbeatSuccEvent(org.apache.servicecomb.serviceregistry.task.event.HeartbeatSuccEvent) HeartbeatFailEvent(org.apache.servicecomb.serviceregistry.task.event.HeartbeatFailEvent)

Example 4 with HeartbeatResponse

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;
}
Also used : HeartbeatResponse(org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse) HttpClientResponse(io.vertx.core.http.HttpClientResponse) Holder(javax.xml.ws.Holder) IpPort(org.apache.servicecomb.foundation.common.net.IpPort) CountDownLatch(java.util.concurrent.CountDownLatch) ClientException(org.apache.servicecomb.serviceregistry.client.ClientException)

Example 5 with HeartbeatResponse

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;
}
Also used : HeartbeatResponse(org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse)

Aggregations

HeartbeatResponse (org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse)5 Expectations (mockit.Expectations)2 Test (org.junit.Test)2 HttpClientResponse (io.vertx.core.http.HttpClientResponse)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Holder (javax.xml.ws.Holder)1 IpPort (org.apache.servicecomb.foundation.common.net.IpPort)1 ClientException (org.apache.servicecomb.serviceregistry.client.ClientException)1 HeartbeatFailEvent (org.apache.servicecomb.serviceregistry.task.event.HeartbeatFailEvent)1 HeartbeatSuccEvent (org.apache.servicecomb.serviceregistry.task.event.HeartbeatSuccEvent)1