use of org.apache.servicecomb.serviceregistry.event.ExceptionEvent in project java-chassis by ServiceComb.
the class MicroserviceWatchTask method doRun.
@Override
public void doRun() {
// will always run watch when it is ready
if (!needToWatch()) {
return;
}
srClient.watch(microservice.getServiceId(), (event) -> {
if (event.failed()) {
eventBus.post(new ExceptionEvent(event.cause()));
return;
}
MicroserviceInstanceChangedEvent changedEvent = event.result();
if (isProviderInstancesChanged(changedEvent) && !serviceRegistryConfig.isWatch()) {
return;
}
if (!isProviderInstancesChanged(changedEvent) && !serviceRegistryConfig.isRegistryAutoDiscovery()) {
return;
}
onMicroserviceInstanceChanged(changedEvent);
}, open -> eventBus.post(new RecoveryEvent()), close -> {
});
}
use of org.apache.servicecomb.serviceregistry.event.ExceptionEvent in project incubator-servicecomb-java-chassis by apache.
the class TestMicroserviceWatchTask method testWatchFailed.
@Test
public void testWatchFailed(@Mocked ServiceRegistryConfig serviceRegistryConfig, @Mocked ServiceRegistryClient srClient, @Mocked Microservice microservice) {
initWatch(serviceRegistryConfig, srClient, microservice);
new MockUp<ServiceRegistryClient>(srClient) {
@Mock
void watch(String selfMicroserviceId, AsyncResultCallback<MicroserviceInstanceChangedEvent> callback, AsyncResultCallback<Void> onOpen, AsyncResultCallback<Void> onClose) {
callback.fail(new RuntimeExceptionWithoutStackTrace("test failed"));
}
};
Holder<Throwable> holder = new Holder<>();
eventBus.register(new Object() {
@Subscribe
public void onException(ExceptionEvent event) {
holder.value = event.getThrowable();
}
});
Assert.assertNull(holder.value);
microserviceWatchTask.run();
Assert.assertEquals("test failed", holder.value.getMessage());
}
use of org.apache.servicecomb.serviceregistry.event.ExceptionEvent in project incubator-servicecomb-java-chassis by apache.
the class MicroserviceWatchTask method doRun.
@Override
public void doRun() {
// will always run watch when it is ready
if (!needToWatch()) {
return;
}
srClient.watch(microservice.getServiceId(), (event) -> {
if (event.failed()) {
eventBus.post(new ExceptionEvent(event.cause()));
return;
}
MicroserviceInstanceChangedEvent changedEvent = event.result();
if (isProviderInstancesChanged(changedEvent) && !serviceRegistryConfig.isWatch()) {
return;
}
if (!isProviderInstancesChanged(changedEvent) && !serviceRegistryConfig.isRegistryAutoDiscovery()) {
return;
}
onMicroserviceInstanceChanged(changedEvent);
}, open -> eventBus.post(new RecoveryEvent()), close -> {
});
}
use of org.apache.servicecomb.serviceregistry.event.ExceptionEvent in project java-chassis by ServiceComb.
the class TestMicroserviceWatchTask method testWatchFailed.
@Test
public void testWatchFailed(@Mocked ServiceRegistryConfig serviceRegistryConfig, @Mocked ServiceRegistryClient srClient, @Mocked Microservice microservice) {
initWatch(serviceRegistryConfig, srClient, microservice);
new MockUp<ServiceRegistryClient>(srClient) {
@Mock
void watch(String selfMicroserviceId, AsyncResultCallback<MicroserviceInstanceChangedEvent> callback, AsyncResultCallback<Void> onOpen, AsyncResultCallback<Void> onClose) {
callback.fail(new RuntimeExceptionWithoutStackTrace("test failed"));
}
};
Holder<Throwable> holder = new Holder<>();
eventBus.register(new Object() {
@Subscribe
public void onException(ExceptionEvent event) {
holder.value = event.getThrowable();
}
});
Assert.assertNull(holder.value);
microserviceWatchTask.run();
Assert.assertEquals("test failed", holder.value.getMessage());
}
Aggregations