assertNull(listener.serviceName);
// trigger a strategy add
// first add a cluster
_state.listenToCluster("cluster-1", new NullStateListenerCallback());
_clusterRegistry.put("cluster-1", new ClusterProperties("cluster-1"));
// then add a service
_state.listenToService("service-1", new NullStateListenerCallback());
_serviceRegistry.put("service-1", new ServiceProperties("service-1",
"cluster-1",
"/test",
"random",
Collections.<String>emptyList(),
Collections.<String, Object>emptyMap(),
null,
null,
schemes,
null));
// this should trigger a refresh
assertEquals(listener.scheme, "http");
assertTrue(listener.strategy instanceof RandomLoadBalancerStrategy);
assertEquals(listener.serviceName, "service-1");
// then update the cluster
_clusterRegistry.put("cluster-1", new ClusterProperties("cluster-1"));
// this triggered a second refresh, but also an onStrategyRemoved. The onStrategyRemoved should
// be done first, and then the onStrategyAdd, so we should still see a valid strategy.
assertEquals(listener.scheme, "http");
assertTrue(listener.strategy instanceof RandomLoadBalancerStrategy);
assertEquals(listener.serviceName, "service-1");
_state.listenToCluster("partition-cluster-1", new NullStateListenerCallback());
_clusterRegistry.put("partition-cluster-1", new ClusterProperties("partition-cluster-1", null,
new HashMap<String, String>(), new HashSet<URI>(), new RangeBasedPartitionProperties("id=(\\d+)", 0, 100, 2)));
_state.listenToService("partition-service-1", new NullStateListenerCallback());
_serviceRegistry.put("partition-service-1",
new ServiceProperties("partition-service-1",
"partition-cluster-1", "/partition-test", "degraderV3",
Collections.<String>emptyList(),
Collections.<String, Object>emptyMap(),