コード例 #1
0
    def test_client_did_not_complete(self):
        client = Client()

        with warnings.catch_warnings(record=True) as warn_list:
            warnings.simplefilter("always")

            with client.session() as session:
                request = Request(self.get_url('/'))
                yield From(session.fetch(request))
                self.assertFalse(session.done())

            for warn_obj in warn_list:
                print(warn_obj)

            # Unrelated warnings may occur in PyPy
            # https://travis-ci.org/chfoo/wpull/jobs/51420202
            self.assertGreaterEqual(len(warn_list), 1)

            for warn_obj in warn_list:
                if str(warn_obj.message) == 'HTTP session did not complete.':
                    break
            else:
                self.fail('Warning did not occur.')

        client = Client()

        with self.assertRaises(MyException):
            with client.session() as session:
                request = Request(self.get_url('/'))
                yield From(session.fetch(request))
                raise MyException('Oops')
コード例 #2
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_client_did_not_complete(self):
        client = Client()

        with warnings.catch_warnings(record=True) as warn_list:
            warnings.simplefilter("always")

            with client.session() as session:
                request = Request(self.get_url('/'))
                yield From(session.fetch(request))
                self.assertFalse(session.done())

            for warn_obj in warn_list:
                print(warn_obj)

            # Unrelated warnings may occur in PyPy
            # https://travis-ci.org/chfoo/wpull/jobs/51420202
            self.assertGreaterEqual(len(warn_list), 1)

            for warn_obj in warn_list:
                if str(warn_obj.message) == 'HTTP session did not complete.':
                    break
            else:
                self.fail('Warning did not occur.')

        client = Client()

        with self.assertRaises(MyException):
            with client.session() as session:
                request = Request(self.get_url('/'))
                yield From(session.fetch(request))
                raise MyException('Oops')
コード例 #3
0
    def test_basic_requests(self):
        proxy_http_client = Client(recorder=DebugPrintRecorder())
        proxy_server = HTTPProxyServer(proxy_http_client)
        proxy_socket, proxy_port = tornado.testing.bind_unused_port()

        yield From(trollius.start_server(proxy_server, sock=proxy_socket))

        connection_pool = HTTPProxyConnectionPool(('127.0.0.1', proxy_port))
        http_client = Client(connection_pool=connection_pool,
                             recorder=DebugPrintRecorder())

        for dummy in range(3):
            with http_client.session() as session:
                response = yield From(session.fetch(Request(self.get_url('/'))))
                self.assertEqual(200, response.status_code)

                file = io.BytesIO()
                yield From(session.read_content(file=file))
                data = file.getvalue().decode('ascii', 'replace')
                self.assertTrue(data.endswith('</html>'))

            with http_client.session() as session:
                response = yield From(session.fetch(Request(
                    self.get_url('/always_error'))))
                self.assertEqual(500, response.status_code)
                self.assertEqual('Dragon In Data Center', response.reason)

                file = io.BytesIO()
                yield From(session.read_content(file=file))
                data = file.getvalue().decode('ascii', 'replace')
                self.assertEqual('Error', data)
コード例 #4
0
    def test_client_duration_timeout(self):
        client = Client()

        with self.assertRaises(DurationTimeout), client.session() as session:
            request = Request(self.get_url('/sleep_long'))
            yield From(session.fetch(request))
            yield From(session.read_content(duration_timeout=0.1))
コード例 #5
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_client_duration_timeout(self):
        client = Client()

        with self.assertRaises(DurationTimeout), client.session() as session:
            request = Request(self.get_url('/sleep_long'))
            yield From(session.fetch(request))
            yield From(session.read_content(duration_timeout=0.1))
コード例 #6
0
    def test_client_exception_throw(self):
        client = Client()

        with client.session() as session:
            request = Request('http://wpull-no-exist.invalid')

        with self.assertRaises(NetworkError):
            yield From(session.fetch(request))
コード例 #7
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_client_exception_throw(self):
        client = Client()

        with client.session() as session:
            request = Request('http://wpull-no-exist.invalid')

        with self.assertRaises(NetworkError):
            yield From(session.fetch(request))
コード例 #8
0
    def test_client_exception_recovery(self):
        connection_factory = functools.partial(Connection, timeout=2.0)
        connection_pool = ConnectionPool(connection_factory=connection_factory)
        client = Client(connection_pool=connection_pool)

        for dummy in range(7):
            with client.session() as session:
                request = Request(self.get_url('/header_early_close'))
                try:
                    yield From(session.fetch(request))
                except NetworkError:
                    pass
                else:
                    self.fail()  # pragma: no cover

        for dummy in range(7):
            with client.session() as session:
                request = Request(self.get_url('/'))
                response = yield From(session.fetch(request))
                self.assertEqual(200, response.status_code)
                yield From(session.read_content())
                self.assertTrue(session.done())
コード例 #9
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_client_exception_recovery(self):
        connection_factory = functools.partial(Connection, timeout=2.0)
        connection_pool = ConnectionPool(connection_factory=connection_factory)
        client = Client(connection_pool=connection_pool)

        for dummy in range(7):
            with client.session() as session:
                request = Request(self.get_url('/header_early_close'))
                try:
                    yield From(session.fetch(request))
                except NetworkError:
                    pass
                else:
                    self.fail()  # pragma: no cover

        for dummy in range(7):
            with client.session() as session:
                request = Request(self.get_url('/'))
                response = yield From(session.fetch(request))
                self.assertEqual(200, response.status_code)
                yield From(session.read_content())
                self.assertTrue(session.done())
コード例 #10
0
    def test_client_recorder(self):
        recorder = MockRecorder()
        client = Client(recorder=recorder)

        with client.session() as session:
            request = Request(self.get_url('/'))
            response = yield From(session.fetch(request))
            yield From(session.read_content())
            self.assertEqual(200, response.status_code)

        self.assertTrue(recorder.pre_request)
        self.assertTrue(recorder.request)
        self.assertTrue(recorder.pre_response)
        self.assertTrue(recorder.response)

        self.assertIn(b'GET', recorder.request_data)
        self.assertIn(b'hello', recorder.response_data)
コード例 #11
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_client_recorder(self):
        recorder = MockRecorder()
        client = Client(recorder=recorder)

        with client.session() as session:
            request = Request(self.get_url('/'))
            response = yield From(session.fetch(request))
            yield From(session.read_content())
            self.assertEqual(200, response.status_code)

        self.assertTrue(recorder.pre_request)
        self.assertTrue(recorder.request)
        self.assertTrue(recorder.pre_response)
        self.assertTrue(recorder.response)

        self.assertIn(b'GET', recorder.request_data)
        self.assertIn(b'hello', recorder.response_data)
コード例 #12
0
    def test_basic(self):
        client = Client()

        with client.session() as session:
            request = Request(self.get_url('/'))
            response = yield From(session.fetch(request))

            self.assertEqual(200, response.status_code)
            self.assertEqual(request, response.request)

            file_obj = io.BytesIO()
            yield From(session.read_content(file_obj))

            self.assertEqual(b'hello world!', file_obj.getvalue())

            self.assertTrue(request.url_info)
            self.assertTrue(request.address)
            self.assertTrue(response.body)
コード例 #13
0
ファイル: client_test.py プロジェクト: Willianvdv/wpull
    def test_basic(self):
        client = Client()

        with client.session() as session:
            request = Request(self.get_url('/'))
            response = yield From(session.fetch(request))

            self.assertEqual(200, response.status_code)
            self.assertEqual(request, response.request)

            file_obj = io.BytesIO()
            yield From(session.read_content(file_obj))

            self.assertEqual(b'hello world!', file_obj.getvalue())

            self.assertTrue(request.url_info)
            self.assertTrue(request.address)
            self.assertTrue(response.body)