docstr: Ensure that delay times are longer for multiple failures
docstr_tok: ["Ensure","that","delay","times","are","longer","for","multiple","failures"]
code: def test_resurrecting_blacklisted_hosts_exponential_backoff(
      self, mock_get_min_start_hosts
  ):
      """Ensure that delay times are longer for multiple failures"""
      exit_mode = "exception"
      num_epochs = 5
      discovery_schedule = [
          (None, ["localhost:2", "127.0.0.1:2"]),
      ]
      exit_schedule = {
          str((1, 0)): [3],
          str((3, 0)): [3],
      }
  
      results = self._run(
          discovery_schedule=discovery_schedule,
          exit_schedule=exit_schedule,
          exit_mode=exit_mode,
          epoch_wait=0.25,
          epochs=num_epochs,
          cooldown_range=[1, 2],
      )
  
      self.assertEqual(len(results), num_epochs)
      self.assertEqual(results[0]["start_rank"], 0)
      self.assertEqual(results[0]["size"], 4)
      self.assertEqual(results[0]["rendezvous"], 1)
  
      self.assertEqual(results[1]["start_rank"], 0)
      self.assertEqual(results[1]["size"], 2)
      self.assertEqual(results[1]["rendezvous"], 2)
  
      self.assertEqual(results[2]["start_rank"], 0)
      self.assertEqual(results[2]["size"], 2)
      self.assertEqual(results[2]["rendezvous"], 2)
  
      self.assertEqual(results[4]["start_rank"], 0)
      self.assertEqual(results[4]["size"], 2)
      self.assertEqual(results[4]["rendezvous"], 2)
  
imports: import contextlib
  import json
  import os
  import sys
  from typing import Callable
  import mock
  import pytest
  from horovod.runner.common.util import config_parser
  from horovod.runner.elastic import constants
  from horovod.runner.launch import parse_args, _run_elastic
  from common import override_args, temppath
label_desc: Use image node_id 10 for calling the BaseElasticTests obj's underlying member method code with example usage: obj.test_resurrecting_blacklisted_hosts_exponential_backoff(mock_get_min_start_hosts) without return types