|  | @@ -42,7 +42,6 @@ import static org.elasticsearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF
 | 
	
		
			
				|  |  |  import static org.elasticsearch.cluster.routing.ShardRoutingState.INITIALIZING;
 | 
	
		
			
				|  |  |  import static org.elasticsearch.cluster.routing.ShardRoutingState.STARTED;
 | 
	
		
			
				|  |  |  import static org.hamcrest.Matchers.equalTo;
 | 
	
		
			
				|  |  | -import static org.hamcrest.Matchers.not;
 | 
	
		
			
				|  |  |  import static org.hamcrest.Matchers.oneOf;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  public class RoutingNodesIntegrityTests extends ESAllocationTestCase {
 | 
	
	
		
			
				|  | @@ -142,59 +141,39 @@ public class RoutingNodesIntegrityTests extends ESAllocationTestCase {
 | 
	
		
			
				|  |  |              org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)
 | 
	
		
			
				|  |  |          ).metadata(metadata).routingTable(initialRoutingTable).build();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        logger.info("Adding one node and performing rerouting");
 | 
	
		
			
				|  |  | +        logger.info("Adding node-1 and performing reroute");
 | 
	
		
			
				|  |  |          clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1"))).build();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          clusterState = strategy.reroute(clusterState, "reroute");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        logger.info("Add another node and perform rerouting, nothing will happen since primary not started");
 | 
	
		
			
				|  |  | +        logger.info("Add node-2 and perform reroute, nothing will happen since primary not started");
 | 
	
		
			
				|  |  |          clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node2"))).build();
 | 
	
		
			
				|  |  |          clusterState = strategy.reroute(clusterState, "reroute");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        logger.info("Start the primary shard");
 | 
	
		
			
				|  |  | -        clusterState = startInitializingShardsAndReroute(strategy, clusterState);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        logger.info("Reroute, nothing should change");
 | 
	
		
			
				|  |  | -        clusterState = strategy.reroute(clusterState, "reroute");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        logger.info("Start the backup shard");
 | 
	
		
			
				|  |  | -        clusterState = startInitializingShardsAndReroute(strategy, clusterState);
 | 
	
		
			
				|  |  | +        logger.info("Start the all shards");
 | 
	
		
			
				|  |  | +        clusterState = startInitializingShardsAndReroute(strategy, clusterState); // primaries
 | 
	
		
			
				|  |  | +        clusterState = startInitializingShardsAndReroute(strategy, clusterState); // replicas
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        clusterState = startInitializingShardsAndReroute(strategy, clusterState);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        logger.info("Add another node and perform rerouting, relocate shards to new node");
 | 
	
		
			
				|  |  | +        logger.info("Add node-3 and perform reroute, relocate shards to new node");
 | 
	
		
			
				|  |  |          clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3"))).build();
 | 
	
		
			
				|  |  |          clusterState = strategy.reroute(clusterState, "reroute");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        logger.info("Reroute, nothing should change");
 | 
	
		
			
				|  |  | -        ClusterState newState = strategy.reroute(clusterState, "reroute");
 | 
	
		
			
				|  |  | -        assertThat(newState, equalTo(clusterState));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        logger.info("Start the backup shard");
 | 
	
		
			
				|  |  | -        newState = startInitializingShardsAndReroute(strategy, clusterState);
 | 
	
		
			
				|  |  | -        assertThat(newState, not(equalTo(clusterState)));
 | 
	
		
			
				|  |  | -        clusterState = newState;
 | 
	
		
			
				|  |  | +        logger.info("Await all shards reallocate");
 | 
	
		
			
				|  |  | +        clusterState = applyStartedShardsUntilNoChange(clusterState, strategy);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(clusterState.routingTable().index("test").size(), equalTo(3));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        newState = startInitializingShardsAndReroute(strategy, clusterState);
 | 
	
		
			
				|  |  | -        assertThat(newState, not(equalTo(clusterState)));
 | 
	
		
			
				|  |  | -        clusterState = newState;
 | 
	
		
			
				|  |  | -        RoutingNodes routingNodes = clusterState.getRoutingNodes();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          assertThat(clusterState.routingTable().index("test1").size(), equalTo(3));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node1").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node2").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node3").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node1").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node2").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node3").numberOfShardsWithState(STARTED), equalTo(4));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node1").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node2").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node3").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node1").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node2").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node3").shardsWithState("test", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node1").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node2").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | -        assertThat(routingNodes.node("node3").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node1").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node2").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  | +        assertThat(clusterState.getRoutingNodes().node("node3").shardsWithState("test1", STARTED).size(), equalTo(2));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testBalanceAllNodesStartedAddIndex() {
 |