'Same test as DCAwareRoundRobinPolicyTest.test_status_updates()'

def test_status_updates(self):

    hosts = [Host(i, SimpleConvictionPolicy) for i in range(4)]
    for h in hosts[:2]:
        h.set_location_info('dc1', 'rack1')
    for h in hosts[2:]:
        h.set_location_info('dc2', 'rack1')
    policy = TokenAwarePolicy(DCAwareRoundRobinPolicy('dc1', used_hosts_per_remote_dc=1))
    policy.populate(self.FakeCluster(), hosts)
    policy.on_down(hosts[0])
    policy.on_remove(hosts[2])
    new_local_host = Host(4, SimpleConvictionPolicy)
    new_local_host.set_location_info('dc1', 'rack1')
    policy.on_up(new_local_host)
    new_remote_host = Host(5, SimpleConvictionPolicy)
    new_remote_host.set_location_info('dc9000', 'rack1')
    policy.on_add(new_remote_host)
    qplan = list(policy.make_query_plan())
    self.assertEqual(set(qplan[:2]), set([hosts[1], new_local_host]))
    self.assertEqual(set(qplan[2:]), set([hosts[3], new_remote_host]))
    self.assertEqual(policy.distance(new_remote_host), HostDistance.REMOTE)
    policy.on_down(new_local_host)
    policy.on_down(hosts[1])
    qplan = list(policy.make_query_plan())
    self.assertEqual(set(qplan), set([hosts[3], new_remote_host]))
    policy.on_down(new_remote_host)
    policy.on_down(hosts[3])
    qplan = list(policy.make_query_plan())
    self.assertEqual(qplan, [])
