summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2020-03-12 17:54:15 +0300
committerMax Romanov <max.romanov@nginx.com>2020-03-12 17:54:15 +0300
commitf3e6726098220701dc2193c440852d04508cf972 (patch)
tree21bc37225ad2c556d0c67520be797fcd8359fc4f
parent7c4db34b88eab0b468425186e9b3366081e24fbb (diff)
downloadunit-f3e6726098220701dc2193c440852d04508cf972.tar.gz
unit-f3e6726098220701dc2193c440852d04508cf972.tar.bz2
Tests: added Python input readline and iterator tests.
-rw-r--r--test/python/input_iter/wsgi.py17
-rw-r--r--test/python/input_readline/wsgi.py20
-rw-r--r--test/python/input_readline_size/wsgi.py16
-rw-r--r--test/python/input_readlines/wsgi.py5
-rw-r--r--test/test_python_application.py73
5 files changed, 125 insertions, 6 deletions
diff --git a/test/python/input_iter/wsgi.py b/test/python/input_iter/wsgi.py
index d3bf437f..04a6a06c 100644
--- a/test/python/input_iter/wsgi.py
+++ b/test/python/input_iter/wsgi.py
@@ -1,5 +1,16 @@
def application(environ, start_response):
- body = bytes(environ['wsgi.input'].__iter__())
+ body = []
+ content_length = 0
- start_response('200', [('Content-Length', str(len(body)))])
- return [body]
+ for l in environ['wsgi.input'].__iter__():
+ body.append(l)
+ content_length += len(l)
+
+ start_response(
+ '200',
+ [
+ ('Content-Length', str(content_length)),
+ ('X-Lines-Count', str(len(body))),
+ ],
+ )
+ return body
diff --git a/test/python/input_readline/wsgi.py b/test/python/input_readline/wsgi.py
new file mode 100644
index 00000000..ec42e0c8
--- /dev/null
+++ b/test/python/input_readline/wsgi.py
@@ -0,0 +1,20 @@
+def application(environ, start_response):
+ body = []
+ content_length = 0
+
+ while True:
+ l = environ['wsgi.input'].readline()
+ if not l:
+ break
+
+ body.append(l)
+ content_length += len(l)
+
+ start_response(
+ '200',
+ [
+ ('Content-Length', str(content_length)),
+ ('X-Lines-Count', str(len(body))),
+ ],
+ )
+ return body
diff --git a/test/python/input_readline_size/wsgi.py b/test/python/input_readline_size/wsgi.py
new file mode 100644
index 00000000..36cf07b0
--- /dev/null
+++ b/test/python/input_readline_size/wsgi.py
@@ -0,0 +1,16 @@
+def application(environ, start_response):
+ body = []
+
+ while True:
+ l = environ['wsgi.input'].readline(9)
+ if not l:
+ break
+
+ body.append(l)
+
+ if len(l) > 9:
+ body.append(b'len(l) > 9: ' + l)
+ break
+
+ start_response('200', [('X-Lines-Count', str(len(body)))])
+ return body
diff --git a/test/python/input_readlines/wsgi.py b/test/python/input_readlines/wsgi.py
new file mode 100644
index 00000000..64b03d79
--- /dev/null
+++ b/test/python/input_readlines/wsgi.py
@@ -0,0 +1,5 @@
+def application(environ, start_response):
+ body = environ['wsgi.input'].readlines()
+
+ start_response('200', [('X-Lines-Count', str(len(body)))])
+ return body
diff --git a/test/test_python_application.py b/test/test_python_application.py
index 818816d0..460cc804 100644
--- a/test/test_python_application.py
+++ b/test/test_python_application.py
@@ -384,13 +384,80 @@ Connection: close
self.assertEqual(self.get()['status'], 500, 'start response exit')
- @unittest.skip('not yet')
def test_python_application_input_iter(self):
self.load('input_iter')
- body = '0123456789'
+ body = '''0123456789
+next line
+
+last line'''
+
+ resp = self.post(body=body)
+ self.assertEqual(resp['body'], body, 'input iter')
+ self.assertEqual(
+ resp['headers']['X-Lines-Count'], '4', 'input iter lines'
+ )
+
+ def test_python_application_input_readline(self):
+ self.load('input_readline')
+
+ body = '''0123456789
+next line
+
+last line'''
+
+ resp = self.post(body=body)
+ self.assertEqual(resp['body'], body, 'input readline')
+ self.assertEqual(
+ resp['headers']['X-Lines-Count'], '4', 'input readline lines'
+ )
+
+ def test_python_application_input_readline_size(self):
+ self.load('input_readline_size')
+
+ body = '''0123456789
+next line
+
+last line'''
+
+ self.assertEqual(
+ self.post(body=body)['body'], body, 'input readline size'
+ )
+ self.assertEqual(
+ self.post(body='0123')['body'], '0123', 'input readline size less'
+ )
+
+ def test_python_application_input_readlines(self):
+ self.load('input_readlines')
+
+ body = '''0123456789
+next line
+
+last line'''
+
+ resp = self.post(body=body)
+ self.assertEqual(resp['body'], body, 'input readlines')
+ self.assertEqual(
+ resp['headers']['X-Lines-Count'], '4', 'input readlines lines'
+ )
+
+ def test_python_application_input_readlines_huge(self):
+ self.load('input_readlines')
+
+ body = (
+ '''0123456789 abcdefghi
+next line: 0123456789 abcdefghi
- self.assertEqual(self.post(body=body)['body'], body, 'input iter')
+last line: 987654321
+'''
+ * 512
+ )
+
+ self.assertEqual(
+ self.post(body=body, read_buffer_size=16384)['body'],
+ body,
+ 'input readlines huge',
+ )
def test_python_application_input_read_length(self):
self.load('input_read_length')