mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-08 00:20:38 -09:00
package/python-waitress: new package
The test runs the flask sample app through the waitress wsgi server instead of the flask development server. Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
02c765af35
commit
1d4a61247d
@@ -2259,8 +2259,10 @@ F: package/picotool/
|
||||
F: package/python-immutabledict/
|
||||
F: package/python-jc/
|
||||
F: package/python-ruamel-yaml-clib/
|
||||
F: package/python-waitress/
|
||||
F: support/testing/tests/package/test_python_fastapi.py
|
||||
F: support/testing/tests/package/test_python_ruamel_yaml.py
|
||||
F: support/testing/tests/package/test_python_waitress.py
|
||||
F: support/testing/tests/package/sample_python_fastapi.py
|
||||
F: support/testing/tests/package/sample_python_ruamel_yaml.py
|
||||
|
||||
|
||||
@@ -1466,6 +1466,7 @@ menu "External python modules"
|
||||
source "package/python-validators/Config.in"
|
||||
source "package/python-versiontools/Config.in"
|
||||
source "package/python-visitor/Config.in"
|
||||
source "package/python-waitress/Config.in"
|
||||
source "package/python-watchdog/Config.in"
|
||||
source "package/python-wcwidth/Config.in"
|
||||
source "package/python-weasyprint/Config.in"
|
||||
|
||||
11
package/python-waitress/Config.in
Normal file
11
package/python-waitress/Config.in
Normal file
@@ -0,0 +1,11 @@
|
||||
config BR2_PACKAGE_PYTHON_WAITRESS
|
||||
bool "python-waitress"
|
||||
help
|
||||
Waitress WSGI server.
|
||||
|
||||
Waitress is a production-quality pure-Python WSGI server
|
||||
with very acceptable performance. It has no dependencies
|
||||
except ones which live in the Python standard library.
|
||||
It supports HTTP/1.0 and HTTP/1.1.
|
||||
|
||||
https://github.com/Pylons/waitress
|
||||
5
package/python-waitress/python-waitress.hash
Normal file
5
package/python-waitress/python-waitress.hash
Normal file
@@ -0,0 +1,5 @@
|
||||
# md5, sha256 from https://pypi.org/pypi/waitress/json
|
||||
md5 b8c671ed131b84a0099493f445c98014 waitress-3.0.0.tar.gz
|
||||
sha256 005da479b04134cdd9dd602d1ee7c49d79de0537610d653674cc6cbde222b8a1 waitress-3.0.0.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c LICENSE.txt
|
||||
14
package/python-waitress/python-waitress.mk
Normal file
14
package/python-waitress/python-waitress.mk
Normal file
@@ -0,0 +1,14 @@
|
||||
################################################################################
|
||||
#
|
||||
# python-waitress
|
||||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_WAITRESS_VERSION = 3.0.0
|
||||
PYTHON_WAITRESS_SOURCE = waitress-$(PYTHON_WAITRESS_VERSION).tar.gz
|
||||
PYTHON_WAITRESS_SITE = https://files.pythonhosted.org/packages/70/34/cb77e5249c433eb177a11ab7425056b32d3b57855377fa1e38b397412859
|
||||
PYTHON_WAITRESS_SETUP_TYPE = setuptools
|
||||
PYTHON_WAITRESS_LICENSE = ZPL-2.1
|
||||
PYTHON_WAITRESS_LICENSE_FILES = LICENSE.txt
|
||||
|
||||
$(eval $(python-package))
|
||||
34
support/testing/tests/package/test_python_waitress.py
Normal file
34
support/testing/tests/package/test_python_waitress.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import time
|
||||
|
||||
from tests.package.test_python import TestPythonPackageBase
|
||||
|
||||
|
||||
class TestPythonWaitress(TestPythonPackageBase):
|
||||
__test__ = True
|
||||
config = TestPythonPackageBase.config + \
|
||||
"""
|
||||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_PYTHON_FLASK=y
|
||||
BR2_PACKAGE_PYTHON_WAITRESS=y
|
||||
"""
|
||||
|
||||
sample_scripts = ["tests/package/sample_python_flask.py"]
|
||||
|
||||
def test_run(self):
|
||||
self.login()
|
||||
self.check_sample_scripts_exist()
|
||||
cmd = self.interpreter + " -m waitress sample_python_flask:app > /dev/null 2>&1 &"
|
||||
# give some time to setup the server
|
||||
_, exit = self.emulator.run(cmd, timeout=self.timeout)
|
||||
|
||||
# Give enough time for the uvicorn server to start up
|
||||
for attempt in range(30):
|
||||
time.sleep(1)
|
||||
|
||||
cmd = "wget -q -O - http://127.0.0.1:8080/"
|
||||
output, exit_code = self.emulator.run(cmd, timeout=self.timeout)
|
||||
if exit_code == 0:
|
||||
self.assertEqual(output[0], 'Hello, World!')
|
||||
break
|
||||
else:
|
||||
self.assertTrue(False, "Timeout while waiting for waitress server")
|
||||
Reference in New Issue
Block a user