def get_page(self):
        self.application.http_client_factory.register_upstream(
            'retry_non_idempotent_503', {'retry_policy': 'non_idempotent_503'},
            [get_server(self, 'broken'),
             get_server(self, 'normal')])
        self.application.http_client_factory.register_upstream(
            'do_not_retry_non_idempotent_503', {},
            [get_server(self, 'broken'),
             get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'retry_non_idempotent_503')
            check_all_requests_done(self, 'do_not_retry_non_idempotent_503')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post_without_retry(_, response):
            if response.code != 503:
                raise HTTPError(500)

        def callback_post_with_retry(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = text

        self.post_url('retry_non_idempotent_503',
                      self.request.path,
                      callback=async_group.add(callback_post_with_retry))
        self.post_url('do_not_retry_non_idempotent_503',
                      self.request.path,
                      callback=async_group.add(callback_post_without_retry))
    def get_page(self):
        free_server = get_server(self, 'free')
        free_server.rack = 'rack1'
        normal_server_1 = get_server(self, 'normal')
        normal_server_1.weight = 100
        normal_server_1.rack = 'rack1'
        normal_server_2 = get_server(self, 'normal')
        normal_server_2.weight = 1
        normal_server_2.rack = 'rack2'

        self.application.http_client_factory.register_upstream(
            'retry_to_different_rack', {},
            [free_server, normal_server_1, normal_server_2])

        def callback_retry_to_different_rack(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            requests = (free_server.requests, normal_server_1.requests,
                        normal_server_2.requests)
            if requests != (1, 0, 1):
                raise HTTPError(500)

            self.text = text

        self.post_url('retry_to_different_rack',
                      self.request.path,
                      callback=callback_retry_to_different_rack)
Beispiel #3
0
    def get_page(self):
        self.application.http_client_factory.register_upstream(
            'retry_connect', {},
            [get_server(self, 'free'),
             get_server(self, 'normal')])
        self.text = ''

        def check_requests_cb():
            check_all_requests_done(self, 'retry_connect')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = self.text + text

        self.post_url('retry_connect',
                      self.request.path,
                      callback=async_group.add(callback_post))
        self.post_url('retry_connect',
                      self.request.path,
                      callback=async_group.add(callback_post))
        self.post_url('retry_connect',
                      self.request.path,
                      callback=async_group.add(callback_post))

        check_all_servers_occupied(self, 'retry_connect')
    def get_page(self):
        self.application.http_client_factory.register_upstream('retry_non_idempotent_503',
                                                               {'retry_policy': 'non_idempotent_503'},
                                                               [get_server(self, 'broken'), get_server(self, 'normal')])
        self.application.http_client_factory.register_upstream('do_not_retry_non_idempotent_503', {},
                                                               [get_server(self, 'broken'), get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'retry_non_idempotent_503')
            check_all_requests_done(self, 'do_not_retry_non_idempotent_503')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post_without_retry(_, response):
            if response.code != 503:
                raise HTTPError(500)

        def callback_post_with_retry(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = text

        self.post_url('retry_non_idempotent_503', self.request.path,
                      callback=async_group.add(callback_post_with_retry))
        self.post_url('do_not_retry_non_idempotent_503', self.request.path,
                      callback=async_group.add(callback_post_without_retry))
Beispiel #5
0
    def get_page(self):
        server = get_server(self, 'free')
        self.application.http_client_factory.register_upstream(
            'deactivate', {
                'max_fails': 1,
                'fail_timeout_sec': 0.1
            }, [server])
        self.text = ''

        def check_server_active():
            if server.is_active:
                self.text += ' activated'

            check_all_requests_done(self, 'deactivate')

        def callback_post(_, response):
            if response.error and response.code == 502 and not server.is_active:
                self.text = 'deactivated'

            self.add_timeout(
                IOLoop.current().time() + 0.2,
                self.finish_group.add(
                    self.check_finished(check_server_active)))

        self.post_url('deactivate', self.request.path, callback=callback_post)

        check_all_servers_occupied(self, 'deactivate')
Beispiel #6
0
    def get_page(self):
        self.application.http_client_factory.register_upstream(
            'no_retry_error', {},
            [get_server(self, 'broken'),
             get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'no_retry_error')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error and response.code == 500:
                self.text = 'no retry error'
                return

            self.text = text

        self.post_url('no_retry_error',
                      self.request.path,
                      callback=async_group.add(callback_post))
Beispiel #7
0
    def get_page(self):
        free_server = get_server(self, 'free')
        free_server.rack = 'rack1'
        normal_server = get_server(self, 'normal')
        normal_server.rack = 'rack1'
        normal_server.datacenter = 'dc2'

        self.application.http_client_factory.register_upstream(
            'different_datacenter', {}, [free_server, normal_server])

        def callback(text, response):
            if free_server.requests != 1:
                raise HTTPError(500)

            if response.error and response.code == 502:
                self.text = 'no backend available'
                return

            self.text = text

        self.post_url('different_datacenter', self.request.path, callback=callback)
Beispiel #8
0
    def get_page(self):
        self.application.http_client_factory.register_upstream(
            'retry_on_timeout', {},
            [get_server(self, 'broken'),
             get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'retry_on_timeout')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = text

        self.delete_url('retry_on_timeout',
                        self.request.path,
                        callback=async_group.add(callback_post),
                        connect_timeout=0.1,
                        request_timeout=0.3,
                        max_timeout_tries=2)
    def get_page(self):
        free_server = get_server(self, 'free')
        free_server.rack = 'rack1'
        normal_server = get_server(self, 'normal')
        normal_server.rack = 'rack1'
        normal_server.datacenter = 'dc2'

        self.application.http_client_factory.register_upstream(
            'different_datacenter', {}, [free_server, normal_server])

        def callback(text, response):
            if free_server.requests != 1:
                raise HTTPError(500)

            if response.error and response.code == 502:
                self.text = 'no backend available'
                return

            self.text = text

        self.post_url('different_datacenter',
                      self.request.path,
                      callback=callback)
Beispiel #10
0
    def get_page(self):
        free_server = get_server(self, 'free')
        free_server.rack = 'rack1'
        normal_server_1 = get_server(self, 'normal')
        normal_server_1.weight = 100
        normal_server_1.rack = 'rack1'
        normal_server_2 = get_server(self, 'normal')
        normal_server_2.weight = 1
        normal_server_2.rack = 'rack2'

        self.application.http_client_factory.register_upstream(
            'retry_to_different_rack', {}, [free_server, normal_server_1, normal_server_2])

        def callback_retry_to_different_rack(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            requests = (free_server.requests, normal_server_1.requests, normal_server_2.requests)
            if requests != (1, 0, 1):
                raise HTTPError(500)

            self.text = text

        self.post_url('retry_to_different_rack', self.request.path, callback=callback_retry_to_different_rack)
Beispiel #11
0
    def get_page(self):
        self.application.http_client_factory.register_upstream('no_retry_error', {},
                                                               [get_server(self, 'broken'), get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'no_retry_error')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error and response.code == 500:
                self.text = 'no retry error'
                return

            self.text = text

        self.post_url('no_retry_error', self.request.path, callback=async_group.add(callback_post))
Beispiel #12
0
    def get_page(self):
        self.application.http_client_factory.register_upstream('retry_on_timeout', {},
                                                               [get_server(self, 'broken'), get_server(self, 'normal')])

        def check_requests_cb():
            check_all_requests_done(self, 'retry_on_timeout')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = text

        self.delete_url('retry_on_timeout', self.request.path, callback=async_group.add(callback_post),
                        connect_timeout=0.1, request_timeout=0.3, max_timeout_tries=2)
Beispiel #13
0
    def get_page(self):
        self.application.http_client_factory.register_upstream('retry_connect', {},
                                                               [get_server(self, 'free'), get_server(self, 'normal')])
        self.text = ''

        def check_requests_cb():
            check_all_requests_done(self, 'retry_connect')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error or text is None:
                raise HTTPError(500)

            self.text = self.text + text

        self.post_url('retry_connect', self.request.path, callback=async_group.add(callback_post))
        self.post_url('retry_connect', self.request.path, callback=async_group.add(callback_post))
        self.post_url('retry_connect', self.request.path, callback=async_group.add(callback_post))

        check_all_servers_occupied(self, 'retry_connect')
    def get_page(self):
        server = get_server(self, 'normal')
        self.application.http_client_factory.register_upstream(
            'no_available_backend', {}, [server])
        server.is_active = False

        def check_requests_cb():
            check_all_requests_done(self, 'no_available_backend')

        async_group = AsyncGroup(check_requests_cb)

        def callback_post(text, response):
            if response.error and response.code == 502:
                self.text = 'no backend available'
                return

            self.text = text

        self.post_url('no_available_backend',
                      self.request.path,
                      callback=async_group.add(callback_post))
        check_all_requests_done(self, 'no_available_backend')
Beispiel #15
0
    def get_page(self):
        server = get_server(self, 'free')
        self.application.http_client_factory.register_upstream(
            'deactivate', {'max_fails': 1, 'fail_timeout_sec': 0.1}, [server])
        self.text = ''

        def check_server_active():
            if server.is_active:
                self.text += ' activated'

            check_all_requests_done(self, 'deactivate')

        def callback_post(_, response):
            if response.error and response.code == 502 and not server.is_active:
                self.text = 'deactivated'

            self.add_timeout(IOLoop.current().time() + 0.2,
                             self.finish_group.add(self.check_finished(check_server_active)))

        self.post_url('deactivate', self.request.path, callback=callback_post)

        check_all_servers_occupied(self, 'deactivate')