summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrei Zeliankou <zelenkov@nginx.com>2021-05-24 22:28:23 +0100
committerAndrei Zeliankou <zelenkov@nginx.com>2021-05-24 22:28:23 +0100
commit39c0fda24c23b7b5358f473349d04752a70ceecc (patch)
tree104356cafc51f60c8eb0d2e859e6af98f8846e5d
parent1154ede862824331d24591c717c270e779a2b08c (diff)
downloadunit-39c0fda24c23b7b5358f473349d04752a70ceecc.tar.gz
unit-39c0fda24c23b7b5358f473349d04752a70ceecc.tar.bz2
Tests: added additional check in tests with timeouts.
Diffstat (limited to '')
-rw-r--r--test/test_settings.py195
1 files changed, 119 insertions, 76 deletions
diff --git a/test/test_settings.py b/test/test_settings.py
index ef4136e3..49041b62 100644
--- a/test/test_settings.py
+++ b/test/test_settings.py
@@ -14,33 +14,42 @@ class TestSettings(TestApplicationPython):
def test_settings_header_read_timeout(self):
self.load('empty')
- self.conf({'http': {'header_read_timeout': 2}}, 'settings')
-
- (resp, sock) = self.http(
- b"""GET / HTTP/1.1
+ def req():
+ (resp, sock) = self.http(
+ b"""GET / HTTP/1.1
""",
- start=True,
- read_timeout=1,
- raw=True,
- )
+ start=True,
+ read_timeout=1,
+ raw=True,
+ )
- time.sleep(3)
+ time.sleep(3)
- resp = self.http(
- b"""Host: localhost
+ return self.http(
+ b"""Host: localhost
Connection: close
-""",
- sock=sock,
- raw=True,
+ """,
+ sock=sock,
+ raw=True,
+ )
+
+ assert 'success' in self.conf(
+ {'http': {'header_read_timeout': 2}}, 'settings'
)
+ assert req()['status'] == 408, 'status header read timeout'
- assert resp['status'] == 408, 'status header read timeout'
+ assert 'success' in self.conf(
+ {'http': {'header_read_timeout': 7}}, 'settings'
+ )
+ assert req()['status'] == 200, 'status header read timeout 2'
def test_settings_header_read_timeout_update(self):
self.load('empty')
- self.conf({'http': {'header_read_timeout': 4}}, 'settings')
+ assert 'success' in self.conf(
+ {'http': {'header_read_timeout': 4}}, 'settings'
+ )
(resp, sock) = self.http(
b"""GET / HTTP/1.1
@@ -91,31 +100,40 @@ Connection: close
def test_settings_body_read_timeout(self):
self.load('empty')
- self.conf({'http': {'body_read_timeout': 2}}, 'settings')
-
- (resp, sock) = self.http(
- b"""POST / HTTP/1.1
+ def req():
+ (resp, sock) = self.http(
+ b"""POST / HTTP/1.1
Host: localhost
Content-Length: 10
Connection: close
""",
- start=True,
- raw_resp=True,
- read_timeout=1,
- raw=True,
- )
+ start=True,
+ raw_resp=True,
+ read_timeout=1,
+ raw=True,
+ )
- time.sleep(3)
+ time.sleep(3)
- resp = self.http(b"""0123456789""", sock=sock, raw=True)
+ return self.http(b"""0123456789""", sock=sock, raw=True)
- assert resp['status'] == 408, 'status body read timeout'
+ assert 'success' in self.conf(
+ {'http': {'body_read_timeout': 2}}, 'settings'
+ )
+ assert req()['status'] == 408, 'status body read timeout'
+
+ assert 'success' in self.conf(
+ {'http': {'body_read_timeout': 7}}, 'settings'
+ )
+ assert req()['status'] == 200, 'status body read timeout 2'
def test_settings_body_read_timeout_update(self):
self.load('empty')
- self.conf({'http': {'body_read_timeout': 4}}, 'settings')
+ assert 'success' in self.conf(
+ {'http': {'body_read_timeout': 4}}, 'settings'
+ )
(resp, sock) = self.http(
b"""POST / HTTP/1.1
@@ -150,6 +168,32 @@ Connection: close
def test_settings_send_timeout(self, temp_dir):
self.load('body_generate')
+ def req(addr, data_len):
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ sock.connect(addr)
+
+ req = (
+ """GET / HTTP/1.1
+Host: localhost
+X-Length: %d
+Connection: close
+
+"""
+ % data_len
+ )
+
+ sock.sendall(req.encode())
+
+ data = sock.recv(16).decode()
+
+ time.sleep(3)
+
+ data += self.recvall(sock).decode()
+
+ sock.close()
+
+ return data
+
sysctl_out = sysctl()
values = re.findall(
r'net.core.[rw]mem_(?:max|default).*?(\d+)', sysctl_out
@@ -158,83 +202,80 @@ Connection: close
data_len = 1048576 if len(values) == 0 else 10 * max(values)
- self.conf({'http': {'send_timeout': 1}}, 'settings')
-
addr = temp_dir + '/sock'
- self.conf(
+ assert 'success' in self.conf(
{"unix:" + addr: {'application': 'body_generate'}}, 'listeners'
)
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- sock.connect(addr)
-
- req = (
- """GET / HTTP/1.1
-Host: localhost
-X-Length: %d
-Connection: close
-
-"""
- % data_len
+ assert 'success' in self.conf(
+ {'http': {'send_timeout': 1}}, 'settings'
)
- sock.sendall(req.encode())
-
- data = sock.recv(16).decode()
-
- time.sleep(3)
+ data = req(addr, data_len)
+ assert re.search(r'200 OK', data), 'send timeout status'
+ assert len(data) < data_len, 'send timeout data '
- data += self.recvall(sock).decode()
+ self.conf({'http': {'send_timeout': 7}}, 'settings')
- sock.close()
-
- assert re.search(r'200 OK', data), 'status send timeout'
- assert len(data) < data_len, 'data send timeout'
+ data = req(addr, data_len)
+ assert re.search(r'200 OK', data), 'send timeout status 2'
+ assert len(data) > data_len, 'send timeout data 2'
def test_settings_idle_timeout(self):
self.load('empty')
- assert self.get()['status'] == 200, 'init'
+ def req():
+ (resp, sock) = self.get(
+ headers={'Host': 'localhost', 'Connection': 'keep-alive'},
+ start=True,
+ read_timeout=1,
+ )
- self.conf({'http': {'idle_timeout': 2}}, 'settings')
+ time.sleep(3)
- (resp, sock) = self.get(
- headers={'Host': 'localhost', 'Connection': 'keep-alive'},
- start=True,
- read_timeout=1,
- )
+ return self.get(sock=sock)
- time.sleep(3)
+ assert self.get()['status'] == 200, 'init'
- resp = self.get(
- headers={'Host': 'localhost', 'Connection': 'close'}, sock=sock
+ assert 'success' in self.conf(
+ {'http': {'idle_timeout': 2}}, 'settings'
)
+ assert req()['status'] == 408, 'status idle timeout'
- assert resp['status'] == 408, 'status idle timeout'
+ assert 'success' in self.conf(
+ {'http': {'idle_timeout': 7}}, 'settings'
+ )
+ assert req()['status'] == 200, 'status idle timeout 2'
def test_settings_idle_timeout_2(self):
self.load('empty')
- assert self.get()['status'] == 200, 'init'
+ def req():
+ _, sock = self.http(b'', start=True, raw=True, no_recv=True)
- self.conf({'http': {'idle_timeout': 1}}, 'settings')
+ time.sleep(3)
- _, sock = self.http(b'', start=True, raw=True, no_recv=True)
+ return self.get(sock=sock)
- time.sleep(3)
+ assert self.get()['status'] == 200, 'init'
- assert (
- self.get(
- headers={'Host': 'localhost', 'Connection': 'close'}, sock=sock
- )['status']
- == 408
- ), 'status idle timeout'
+ assert 'success' in self.conf(
+ {'http': {'idle_timeout': 1}}, 'settings'
+ )
+ assert req()['status'] == 408, 'status idle timeout'
+
+ assert 'success' in self.conf(
+ {'http': {'idle_timeout': 7}}, 'settings'
+ )
+ assert req()['status'] == 200, 'status idle timeout 2'
def test_settings_max_body_size(self):
self.load('empty')
- self.conf({'http': {'max_body_size': 5}}, 'settings')
+ assert 'success' in self.conf(
+ {'http': {'max_body_size': 5}}, 'settings'
+ )
assert self.post(body='01234')['status'] == 200, 'status size'
assert self.post(body='012345')['status'] == 413, 'status size max'
@@ -242,7 +283,9 @@ Connection: close
def test_settings_max_body_size_large(self):
self.load('mirror')
- self.conf({'http': {'max_body_size': 32 * 1024 * 1024}}, 'settings')
+ assert 'success' in self.conf(
+ {'http': {'max_body_size': 32 * 1024 * 1024}}, 'settings'
+ )
body = '0123456789abcdef' * 4 * 64 * 1024
resp = self.post(body=body, read_buffer_size=1024 * 1024)