@Test
  public void testZoneAffinityEnabled() throws Exception {
    ConfigurationManager.getConfigInstance()
        .setProperty(
            "DefaultNIWSServerListFilterTest1.ribbon.DeploymentContextBasedVipAddresses",
            "l10nservicegeneral.cloud.netflix.net:7001");
    ConfigurationManager.getConfigInstance()
        .setProperty(
            "DefaultNIWSServerListFilterTest1.ribbon.NFLoadBalancerClassName",
            DynamicServerListLoadBalancer.class.getName());
    ConfigurationManager.getConfigInstance()
        .setProperty(
            "DefaultNIWSServerListFilterTest1.ribbon.NIWSServerListClassName",
            DiscoveryEnabledNIWSServerList.class.getName());

    ConfigurationManager.getConfigInstance()
        .setProperty("DefaultNIWSServerListFilterTest1.ribbon.EnableZoneAffinity", "true");
    DynamicServerListLoadBalancer lb =
        (DynamicServerListLoadBalancer)
            ClientFactory.getNamedLoadBalancer("DefaultNIWSServerListFilterTest1");
    assertTrue(lb.getRule() instanceof AvailabilityFilteringRule);
    ZoneAffinityServerListFilter filter = (ZoneAffinityServerListFilter) lb.getFilter();
    LoadBalancerStats loadBalancerStats = lb.getLoadBalancerStats();
    List<DiscoveryEnabledServer> servers = new ArrayList<DiscoveryEnabledServer>();
    servers.add(createServer(1, "a"));
    servers.add(createServer(2, "a"));
    servers.add(createServer(3, "a"));
    servers.add(createServer(4, "a"));
    servers.add(createServer(1, "b"));
    servers.add(createServer(2, "b"));
    servers.add(createServer(3, "b"));
    servers.add(createServer(1, "c"));
    servers.add(createServer(2, "c"));
    servers.add(createServer(3, "c"));
    servers.add(createServer(4, "c"));
    servers.add(createServer(5, "c"));
    List<DiscoveryEnabledServer> filtered = filter.getFilteredListOfServers(servers);
    List<DiscoveryEnabledServer> expected = new ArrayList<DiscoveryEnabledServer>();
    expected.add(createServer(1, "c"));
    expected.add(createServer(2, "c"));
    expected.add(createServer(3, "c"));
    expected.add(createServer(4, "c"));
    expected.add(createServer(5, "c"));
    assertEquals(expected, filtered);
    lb.setServersList(filtered);
    for (int i = 1; i <= 4; i++) {
      loadBalancerStats.incrementActiveRequestsCount(createServer(i, "c"));
    }
    filtered = filter.getFilteredListOfServers(servers);
    assertEquals(servers, filtered);
  }