summaryrefslogtreecommitdiffhomepage
path: root/test/test_settings.py
diff options
context:
space:
mode:
authorAndrei Zeliankou <zelenkov@nginx.com>2022-12-13 14:51:11 +0000
committerAndrei Zeliankou <zelenkov@nginx.com>2022-12-13 14:51:11 +0000
commit6313cffd26bf88009a871361f3da56444def0288 (patch)
tree1283eac5aee955df2c680461c55c2b664413dee1 /test/test_settings.py
parentf88371ff1d5173da44b8bf152e1b261e444a6eac (diff)
downloadunit-6313cffd26bf88009a871361f3da56444def0288.tar.gz
unit-6313cffd26bf88009a871361f3da56444def0288.tar.bz2
Tests: added tests for the large header buffer settings.
Added tests for the "large_header_buffer_size" and "large_header_buffers" configuration options.
Diffstat (limited to '')
-rw-r--r--test/test_settings.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/test_settings.py b/test/test_settings.py
index 1bc9a432..ad8929f8 100644
--- a/test/test_settings.py
+++ b/test/test_settings.py
@@ -10,6 +10,66 @@ from unit.utils import sysctl
class TestSettings(TestApplicationPython):
prerequisites = {'modules': {'python': 'any'}}
+ def test_settings_large_header_buffer_size(self):
+ self.load('empty')
+
+ def set_buffer_size(size):
+ assert 'success' in self.conf(
+ {'http': {'large_header_buffer_size': size}},
+ 'settings',
+ )
+
+ def header_value(size, expect=200):
+ headers = {'Host': 'a' * (size - 1), 'Connection': 'close'}
+ assert self.get(headers=headers)['status'] == expect
+
+ set_buffer_size(4096)
+ header_value(4096)
+ header_value(4097, 431)
+
+ set_buffer_size(16384)
+ header_value(16384)
+ header_value(16385, 431)
+
+ def test_settings_large_header_buffers(self):
+ self.load('empty')
+
+ def set_buffers(buffers):
+ assert 'success' in self.conf(
+ {'http': {'large_header_buffers': buffers}},
+ 'settings',
+ )
+
+ def big_headers(headers_num, expect=200):
+ headers = {'Host': 'localhost', 'Connection': 'close'}
+
+ for i in range(headers_num):
+ headers['Custom-header-' + str(i)] = 'a' * 8000
+
+ assert self.get(headers=headers)['status'] == expect
+
+ set_buffers(1)
+ big_headers(1)
+ big_headers(2, 431)
+
+ set_buffers(2)
+ big_headers(2)
+ big_headers(3, 431)
+
+ set_buffers(8)
+ big_headers(8)
+ big_headers(9, 431)
+
+ @pytest.mark.skip('not yet')
+ def test_settings_large_header_buffer_invalid(self):
+ def check_error(conf):
+ assert 'error' in self.conf({'http': conf}, 'settings')
+
+ check_error({'large_header_buffer_size': -1})
+ check_error({'large_header_buffer_size': 0})
+ check_error({'large_header_buffers': -1})
+ check_error({'large_header_buffers': 0})
+
def test_settings_header_read_timeout(self):
self.load('empty')