summaryrefslogtreecommitdiffhomepage
path: root/test/test_status.py
diff options
context:
space:
mode:
authorAndrei Zeliankou <zelenkov@nginx.com>2023-06-14 18:20:09 +0100
committerAndrei Zeliankou <zelenkov@nginx.com>2023-06-14 18:20:09 +0100
commitc183bd8749a19477390f8cb77efe5f6d223f0905 (patch)
tree4e821e9cb07be9a86bf2d442acb3ea6740ba5a99 /test/test_status.py
parentc6d05191a069ac150cc8eb2bece75cf79c0a465a (diff)
downloadunit-c183bd8749a19477390f8cb77efe5f6d223f0905.tar.gz
unit-c183bd8749a19477390f8cb77efe5f6d223f0905.tar.bz2
Tests: get rid of classes in test files.
Class usage came from the unittest framework and it was always redundant after migration to the pytest. This commit removes classes from files containing tests to make them more readable and understandable.
Diffstat (limited to 'test/test_status.py')
-rw-r--r--test/test_status.py359
1 files changed, 183 insertions, 176 deletions
diff --git a/test/test_status.py b/test/test_status.py
index 2fc235d4..11b140cf 100644
--- a/test/test_status.py
+++ b/test/test_status.py
@@ -1,75 +1,79 @@
import time
-from unit.applications.lang.python import TestApplicationPython
+from unit.applications.lang.python import ApplicationPython
from unit.option import option
from unit.status import Status
prerequisites = {'modules': {'python': 'any'}}
+client = ApplicationPython()
-class TestStatus(TestApplicationPython):
- def check_connections(self, accepted, active, idle, closed):
- assert Status.get('/connections') == {
- 'accepted': accepted,
- 'active': active,
- 'idle': idle,
- 'closed': closed,
- }
- def app_default(self, name="empty", module="wsgi"):
- name_dir = f'{option.test_dir}/python/{name}'
- return {
- "type": self.get_application_type(),
- "processes": {"spare": 0},
- "path": name_dir,
- "working_directory": name_dir,
- "module": module,
- }
+def check_connections(accepted, active, idle, closed):
+ assert Status.get('/connections') == {
+ 'accepted': accepted,
+ 'active': active,
+ 'idle': idle,
+ 'closed': closed,
+ }
- def test_status(self):
- assert 'error' in self.conf_delete('/status'), 'DELETE method'
- def test_status_requests(self, skip_alert):
- skip_alert(r'Python failed to import module "blah"')
+def app_default(name="empty", module="wsgi"):
+ name_dir = f'{option.test_dir}/python/{name}'
+ return {
+ "type": client.get_application_type(),
+ "processes": {"spare": 0},
+ "path": name_dir,
+ "working_directory": name_dir,
+ "module": module,
+ }
- assert 'success' in self.conf(
- {
- "listeners": {
- "*:7080": {"pass": "routes"},
- "*:7081": {"pass": "applications/empty"},
- "*:7082": {"pass": "applications/blah"},
- },
- "routes": [{"action": {"return": 200}}],
- "applications": {
- "empty": self.app_default(),
- "blah": {
- "type": self.get_application_type(),
- "processes": {"spare": 0},
- "module": "blah",
- },
+
+def test_status():
+ assert 'error' in client.conf_delete('/status'), 'DELETE method'
+
+
+def test_status_requests(skip_alert):
+ skip_alert(r'Python failed to import module "blah"')
+
+ assert 'success' in client.conf(
+ {
+ "listeners": {
+ "*:7080": {"pass": "routes"},
+ "*:7081": {"pass": "applications/empty"},
+ "*:7082": {"pass": "applications/blah"},
+ },
+ "routes": [{"action": {"return": 200}}],
+ "applications": {
+ "empty": app_default(),
+ "blah": {
+ "type": client.get_application_type(),
+ "processes": {"spare": 0},
+ "module": "blah",
},
},
- )
+ },
+ )
- Status.init()
+ Status.init()
- assert self.get()['status'] == 200
- assert Status.get('/requests/total') == 1, '2xx'
+ assert client.get()['status'] == 200
+ assert Status.get('/requests/total') == 1, '2xx'
- assert self.get(port=7081)['status'] == 200
- assert Status.get('/requests/total') == 2, '2xx app'
+ assert client.get(port=7081)['status'] == 200
+ assert Status.get('/requests/total') == 2, '2xx app'
- assert (
- self.get(headers={'Host': '/', 'Connection': 'close'})['status']
- == 400
- )
- assert Status.get('/requests/total') == 3, '4xx'
+ assert (
+ client.get(headers={'Host': '/', 'Connection': 'close'})['status']
+ == 400
+ )
+ assert Status.get('/requests/total') == 3, '4xx'
- assert self.get(port=7082)['status'] == 503
- assert Status.get('/requests/total') == 4, '5xx'
+ assert client.get(port=7082)['status'] == 503
+ assert Status.get('/requests/total') == 4, '5xx'
- self.http(
- b"""GET / HTTP/1.1
+ client.http(
+ b"""GET / HTTP/1.1
Host: localhost
GET / HTTP/1.1
@@ -77,159 +81,162 @@ Host: localhost
Connection: close
""",
- raw=True,
- )
- assert Status.get('/requests/total') == 6, 'pipeline'
+ raw=True,
+ )
+ assert Status.get('/requests/total') == 6, 'pipeline'
- sock = self.get(port=7081, no_recv=True)
+ sock = client.get(port=7081, no_recv=True)
- time.sleep(1)
+ time.sleep(1)
- assert Status.get('/requests/total') == 7, 'no receive'
+ assert Status.get('/requests/total') == 7, 'no receive'
- sock.close()
+ sock.close()
- def test_status_connections(self):
- assert 'success' in self.conf(
- {
- "listeners": {
- "*:7080": {"pass": "routes"},
- "*:7081": {"pass": "applications/delayed"},
- },
- "routes": [{"action": {"return": 200}}],
- "applications": {
- "delayed": self.app_default("delayed"),
- },
+
+def test_status_connections():
+ assert 'success' in client.conf(
+ {
+ "listeners": {
+ "*:7080": {"pass": "routes"},
+ "*:7081": {"pass": "applications/delayed"},
+ },
+ "routes": [{"action": {"return": 200}}],
+ "applications": {
+ "delayed": app_default("delayed"),
},
- )
+ },
+ )
+
+ Status.init()
- Status.init()
+ # accepted, closed
- # accepted, closed
+ assert client.get()['status'] == 200
+ check_connections(1, 0, 0, 1)
- assert self.get()['status'] == 200
- self.check_connections(1, 0, 0, 1)
+ # idle
- # idle
+ (_, sock) = client.get(
+ headers={'Host': 'localhost', 'Connection': 'keep-alive'},
+ start=True,
+ read_timeout=1,
+ )
- (_, sock) = self.get(
- headers={'Host': 'localhost', 'Connection': 'keep-alive'},
- start=True,
- read_timeout=1,
- )
+ check_connections(2, 0, 1, 1)
- self.check_connections(2, 0, 1, 1)
+ client.get(sock=sock)
+ check_connections(2, 0, 0, 2)
- self.get(sock=sock)
- self.check_connections(2, 0, 0, 2)
+ # active
- # active
+ (_, sock) = client.get(
+ headers={
+ 'Host': 'localhost',
+ 'X-Delay': '2',
+ 'Connection': 'close',
+ },
+ port=7081,
+ start=True,
+ read_timeout=1,
+ )
+ check_connections(3, 1, 0, 2)
- (_, sock) = self.get(
- headers={
- 'Host': 'localhost',
- 'X-Delay': '2',
- 'Connection': 'close',
+ client.get(sock=sock)
+ check_connections(3, 0, 0, 3)
+
+
+def test_status_applications():
+ def check_applications(expert):
+ apps = list(client.conf_get('/status/applications').keys()).sort()
+ assert apps == expert.sort()
+
+ def check_application(name, running, starting, idle, active):
+ assert Status.get(f'/applications/{name}') == {
+ 'processes': {
+ 'running': running,
+ 'starting': starting,
+ 'idle': idle,
},
- port=7081,
- start=True,
- read_timeout=1,
- )
- self.check_connections(3, 1, 0, 2)
-
- self.get(sock=sock)
- self.check_connections(3, 0, 0, 3)
-
- def test_status_applications(self):
- def check_applications(expert):
- apps = list(self.conf_get('/status/applications').keys()).sort()
- assert apps == expert.sort()
-
- def check_application(name, running, starting, idle, active):
- assert Status.get(f'/applications/{name}') == {
- 'processes': {
- 'running': running,
- 'starting': starting,
- 'idle': idle,
- },
- 'requests': {'active': active},
- }
+ 'requests': {'active': active},
+ }
+
+ client.load('delayed')
+ Status.init()
+
+ check_applications(['delayed'])
+ check_application('delayed', 0, 0, 0, 0)
- self.load('delayed')
- Status.init()
+ # idle
- check_applications(['delayed'])
- check_application('delayed', 0, 0, 0, 0)
+ assert client.get()['status'] == 200
+ check_application('delayed', 1, 0, 1, 0)
- # idle
+ assert 'success' in client.conf('4', 'applications/delayed/processes')
+ check_application('delayed', 4, 0, 4, 0)
- assert self.get()['status'] == 200
- check_application('delayed', 1, 0, 1, 0)
+ # active
- assert 'success' in self.conf('4', 'applications/delayed/processes')
- check_application('delayed', 4, 0, 4, 0)
+ (_, sock) = client.get(
+ headers={
+ 'Host': 'localhost',
+ 'X-Delay': '2',
+ 'Connection': 'close',
+ },
+ start=True,
+ read_timeout=1,
+ )
+ check_application('delayed', 4, 0, 3, 1)
+ sock.close()
- # active
+ # starting
- (_, sock) = self.get(
- headers={
- 'Host': 'localhost',
- 'X-Delay': '2',
- 'Connection': 'close',
+ assert 'success' in client.conf(
+ {
+ "listeners": {
+ "*:7080": {"pass": "applications/restart"},
+ "*:7081": {"pass": "applications/delayed"},
},
- start=True,
- read_timeout=1,
- )
- check_application('delayed', 4, 0, 3, 1)
- sock.close()
-
- # starting
-
- assert 'success' in self.conf(
- {
- "listeners": {
- "*:7080": {"pass": "applications/restart"},
- "*:7081": {"pass": "applications/delayed"},
- },
- "routes": [],
- "applications": {
- "restart": self.app_default("restart", "longstart"),
- "delayed": self.app_default("delayed"),
- },
+ "routes": [],
+ "applications": {
+ "restart": app_default("restart", "longstart"),
+ "delayed": app_default("delayed"),
},
- )
- Status.init()
+ },
+ )
+ Status.init()
- check_applications(['delayed', 'restart'])
- check_application('restart', 0, 0, 0, 0)
- check_application('delayed', 0, 0, 0, 0)
+ check_applications(['delayed', 'restart'])
+ check_application('restart', 0, 0, 0, 0)
+ check_application('delayed', 0, 0, 0, 0)
- self.get(read_timeout=1)
+ client.get(read_timeout=1)
- check_application('restart', 0, 1, 0, 1)
- check_application('delayed', 0, 0, 0, 0)
+ check_application('restart', 0, 1, 0, 1)
+ check_application('delayed', 0, 0, 0, 0)
- def test_status_proxy(self):
- assert 'success' in self.conf(
- {
- "listeners": {
- "*:7080": {"pass": "routes"},
- "*:7081": {"pass": "applications/empty"},
- },
- "routes": [
- {
- "match": {"uri": "/"},
- "action": {"proxy": "http://127.0.0.1:7081"},
- }
- ],
- "applications": {
- "empty": self.app_default(),
- },
+
+def test_status_proxy():
+ assert 'success' in client.conf(
+ {
+ "listeners": {
+ "*:7080": {"pass": "routes"},
+ "*:7081": {"pass": "applications/empty"},
+ },
+ "routes": [
+ {
+ "match": {"uri": "/"},
+ "action": {"proxy": "http://127.0.0.1:7081"},
+ }
+ ],
+ "applications": {
+ "empty": app_default(),
},
- )
+ },
+ )
- Status.init()
+ Status.init()
- assert self.get()['status'] == 200
- self.check_connections(2, 0, 0, 2)
- assert Status.get('/requests/total') == 2, 'proxy'
+ assert client.get()['status'] == 200
+ check_connections(2, 0, 0, 2)
+ assert Status.get('/requests/total') == 2, 'proxy'