use of com.alipay.sofa.rpc.listener.ProviderInfoListener in project sofa-rpc by sofastack.
the class SofaRegistrySubscribeCallbackTest method handleData.
@Test
public void handleData() throws Exception {
Subscriber listSub = new MockSubscribe(5);
Configurator attrSub = new MockConfigurator(2);
final AtomicInteger ps = new AtomicInteger(0);
ProviderInfoListener listener = new ProviderInfoListener() {
@Override
public void addProvider(ProviderGroup providerGroup) {
ps.addAndGet(providerGroup.size());
}
@Override
public void removeProvider(ProviderGroup providerGroup) {
ps.addAndGet(-providerGroup.size());
}
@Override
public void updateProviders(ProviderGroup providerGroup) {
ps.set(providerGroup.size());
}
@Override
public void updateAllProviders(List<ProviderGroup> providerGroups) {
ps.set(0);
for (ProviderGroup providerGroup : providerGroups) {
ps.addAndGet(providerGroup.size());
}
}
};
SofaRegistrySubscribeCallback callback = new SofaRegistrySubscribeCallback();
callback.addProviderInfoListener("xxxxx", new ConsumerConfig(), listener);
Assert.assertTrue((!callback.flag[0].get()) && (!callback.flag[1].get()));
callback.handleData("xxxxx", buildConfigPs(2));
try {
Thread.sleep(200);
} finally {
}
Assert.assertTrue(callback.flag[1].get());
Assert.assertTrue(ps.get() == 0);
callback.handleData("xxxxx", buildPs(5));
try {
Thread.sleep(200);
} finally {
}
Assert.assertTrue(callback.flag == null);
// default+localZone
Assert.assertEquals(ps.get(), 5 + 5);
callback = new SofaRegistrySubscribeCallback();
ps.set(0);
callback.addProviderInfoListener("yyyyy", new ConsumerConfig(), listener);
callback.handleData("yyyyy", buildPs(5));
try {
Thread.sleep(200);
} finally {
}
callback.handleData("yyyyy", buildConfigPs(2));
try {
Thread.sleep(200);
} finally {
}
Assert.assertTrue(callback.flag == null);
Assert.assertEquals(ps.get(), 5 + 5);
}
Aggregations