@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);
    }
@author <a href="mailto:zhanggeng.zg@antfin.com">GengZhang</a>
fault/fault-tolerance/src/test/java/com/alipay/sofa/rpc/client/aft/FaultToleranceSubscriberTest.java