Files
requests/tests/test_keep_alive.py
T
László Vaskó e8d20926d3 Added testcases for keep-alive handling
* Added a dummy_server module to check connection count
* Added testcases for proxy and direct connections
2012-12-02 01:06:52 +01:00

66 lines
2.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import unittest
# Path hack.
sys.path.insert(0, os.path.abspath('..'))
import requests
import dummy_server
class KeepAliveTests(unittest.TestCase):
server_and_proxy_port = 1234
request_count = 2
url = 'http://localhost:{0}'.format(server_and_proxy_port)
proxies={'http': url}
def setUp(self):
self.session = requests.session()
self.proxy_server = dummy_server.HttpServer(self.server_and_proxy_port)
self.proxy_server.start()
def tearDown(self):
self.proxy_server.close()
def test_keep_alive_with_direct_connection(self):
self.make_requests()
self.check_each_request_are_in_same_connection()
def test_no_keep_alive_with_direct_connection(self):
self.disable_keep_alive_in_session()
self.make_requests()
self.check_each_request_are_in_different_connection()
def test_keep_alive_with_proxy_connection(self):
self.make_proxy_requests()
self.check_each_request_are_in_same_connection()
def test_no_keep_alive_with_proxy_connection(self):
self.disable_keep_alive_in_session()
self.make_proxy_requests()
self.check_each_request_are_in_different_connection()
def make_proxy_requests(self):
self.make_requests(self.proxies)
def make_requests(self, proxies=None):
for _ in xrange(self.request_count):
self.session.get(self.url, proxies=proxies).text
def check_each_request_are_in_same_connection(self):
"""Keep-alive requests open a single connection to the server."""
self.assertEqual(self.proxy_server.connection_count, 1)
def check_each_request_are_in_different_connection(self):
"""Keep-alive requests open a single connection to the server."""
self.assertEqual(self.proxy_server.connection_count, self.request_count)
def disable_keep_alive_in_session(self):
self.session.config['keep_alive'] = False
if __name__ == '__main__':
unittest.main()