예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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")
예제 #4
0
    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")