def test_trying_all_providers_before_giving_up_with_retries(self): config = { "providers": [ { "name": "should_fail_0", "type": "dummy_provider", "priority": 5, "countries": ["a", "b", "c"] }, { "name": "should_fail_1", "type": "dummy_provider", "priority": 1, "countries": ["a", "b", "e"] }, { "name": "should_fail_2", "type": "dummy_provider", "priority": 1, "countries": ["a", "d"] }, ] } teleport = Teleport(config) with self.assertRaisesRegexp(RuntimeError, "failed to teleport to 'a'"): teleport.goto("a") self.assertEqual(len(teleport.who_can_teleport_to("a")), 3) for provider in teleport.who_can_teleport_to("a"): self.assertEqual(provider.callCount, 1)
def test_once_provider_connects_stop_trying_to_connect(self): config = { "providers": [ { "name": "pita", "type": "dummy_provider", "priority": 5, "countries": ["a"] }, { "name": "vova", "type": "dummy_provider", "priority": 2, "countries": ["a"] }, { "name": "should_fail", "type": "dummy_provider", "priority": 1, "countries": ["a"] }, ] } teleport = Teleport(config) # shouldn't raise an exception provider = teleport.goto("a") providers = teleport.who_can_teleport_to("a") self.assertEqual(len(providers), 3) self.assertEqual(providers[0].callCount, 1) self.assertEqual(providers[1].callCount, 1) self.assertEqual(providers[2].callCount, 0) self.assertEqual(provider.name, "vova")