Commit 5a702aa3 authored by Jérome Perrin's avatar Jérome Perrin

software/erp5/test: check that balancer uses HTTP 1.1 with keep alive

parent 74d18b9d
...@@ -17,6 +17,7 @@ import idna ...@@ -17,6 +17,7 @@ import idna
import mock import mock
import OpenSSL.SSL import OpenSSL.SSL
import pexpect import pexpect
import psutil
import requests import requests
from cryptography import x509 from cryptography import x509
from cryptography.hazmat.backends import default_backend from cryptography.hazmat.backends import default_backend
...@@ -350,6 +351,42 @@ class TestBalancer(BalancerTestCase): ...@@ -350,6 +351,42 @@ class TestBalancer(BalancerTestCase):
'backend_web_server1') 'backend_web_server1')
class TestHTTP(BalancerTestCase):
"""Check HTTP protocol
"""
__partition_reference__ = 'h'
def test_http_version(self):
# type: () -> None
# https://stackoverflow.com/questions/37012486/python-3-x-how-to-get-http-version-using-requests-library/37012810
self.assertEqual(
requests.get(self.default_balancer_url, verify=False).raw.version, 11)
def test_keep_alive(self):
# type: () -> None
# when doing two requests, connection is established only once
session = requests.Session()
session.verify = False
# do a first request, which establish a first connection
session.get(self.default_balancer_url).raise_for_status()
# "break" new connection method and check we can make another request
with mock.patch(
"requests.packages.urllib3.connectionpool.HTTPSConnectionPool._new_conn",
) as new_conn:
session.get(self.default_balancer_url).raise_for_status()
new_conn.assert_not_called()
parsed_url = urlparse.urlparse(self.default_balancer_url)
# check that we have an open file for the ip connection
self.assertTrue([
c for c in psutil.Process(os.getpid()).connections()
if c.status == 'ESTABLISHED' and c.raddr.ip == parsed_url.hostname
and c.raddr.port == parsed_url.port
])
class TestTLS(BalancerTestCase): class TestTLS(BalancerTestCase):
"""Check TLS """Check TLS
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment