use of com.alipay.sofa.rpc.event.ProviderInfoRemoveEvent in project sofa-rpc by sofastack.
the class FaultToleranceSubscriberTest method onProviderEvent.
@Test
public void onProviderEvent() {
FaultToleranceConfig config = new FaultToleranceConfig();
config.setRegulationEffective(true);
FaultToleranceConfigManager.putAppConfig(APP_NAME1, config);
ProviderInfo providerInfo1 = ProviderHelper.toProviderInfo("127.0.0.1");
ProviderInfo providerInfo2 = ProviderHelper.toProviderInfo("127.0.0.2");
ProviderInfo providerInfo3 = ProviderHelper.toProviderInfo("127.0.0.3");
ProviderInfo providerInfo4 = ProviderHelper.toProviderInfo("127.0.0.4");
ProviderInfo providerInfo5 = ProviderHelper.toProviderInfo("127.0.0.5");
FaultToleranceSubscriber subscriber = new FaultToleranceSubscriber();
subscriber.onEvent(new ClientSyncReceiveEvent(consumerConfig, providerInfo1, new SofaRequest(), new SofaResponse(), null));
subscriber.onEvent(new ClientSyncReceiveEvent(consumerConfig, providerInfo2, new SofaRequest(), new SofaResponse(), null));
subscriber.onEvent(new ClientSyncReceiveEvent(consumerConfig, providerInfo3, new SofaRequest(), new SofaResponse(), null));
subscriber.onEvent(new ClientSyncReceiveEvent(consumerConfig, providerInfo4, new SofaRequest(), new SofaResponse(), null));
Assert.assertTrue(InvocationStatFactory.ALL_STATS.size() == 4);
subscriber.onEvent(new ProviderInfoRemoveEvent(consumerConfig, new ProviderGroup("x", Arrays.asList(ProviderHelper.toProviderInfo("127.0.0.1")))));
Assert.assertTrue(InvocationStatFactory.ALL_STATS.size() == 3);
subscriber.onEvent(new ProviderInfoUpdateEvent(consumerConfig, new ProviderGroup("x", Arrays.asList(ProviderHelper.toProviderInfo("127.0.0.2"), ProviderHelper.toProviderInfo("127.0.0.3"), ProviderHelper.toProviderInfo("127.0.0.4"))), new ProviderGroup("x", Arrays.asList(ProviderHelper.toProviderInfo("127.0.0.2"), ProviderHelper.toProviderInfo("127.0.0.4"), ProviderHelper.toProviderInfo("127.0.0.5")))));
Assert.assertTrue(InvocationStatFactory.ALL_STATS.size() == 2);
subscriber.onEvent(new ClientSyncReceiveEvent(consumerConfig, providerInfo5, new SofaRequest(), new SofaResponse(), null));
Assert.assertTrue(InvocationStatFactory.ALL_STATS.size() == 3);
subscriber.onEvent(new ProviderInfoUpdateAllEvent(consumerConfig, Arrays.asList(new ProviderGroup("x", Arrays.asList(ProviderHelper.toProviderInfo("127.0.0.2"), ProviderHelper.toProviderInfo("127.0.0.4"), ProviderHelper.toProviderInfo("127.0.0.5")))), Arrays.asList(new ProviderGroup("x", Arrays.asList(ProviderHelper.toProviderInfo("127.0.0.1"), ProviderHelper.toProviderInfo("127.0.0.4"))))));
Assert.assertTrue(InvocationStatFactory.ALL_STATS.size() == 1);
}
use of com.alipay.sofa.rpc.event.ProviderInfoRemoveEvent in project sofa-rpc by sofastack.
the class AbstractCluster method removeProvider.
@Override
public void removeProvider(ProviderGroup providerGroup) {
// 包装了各个组件的操作
addressHolder.removeProvider(providerGroup);
connectionHolder.removeProvider(providerGroup);
if (EventBus.isEnable(ProviderInfoRemoveEvent.class)) {
ProviderInfoRemoveEvent event = new ProviderInfoRemoveEvent(consumerConfig, providerGroup);
EventBus.post(event);
}
}
Aggregations