mirror of
https://github.com/PartialVolume/shredos.x86_64.git
synced 2026-02-25 20:12:12 +00:00
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
|
|
import os
|
||
|
|
import time
|
||
|
|
|
||
|
|
from tests.package.test_python import TestPythonPackageBase
|
||
|
|
|
||
|
|
|
||
|
|
class TestPythonPy3Fastapi(TestPythonPackageBase):
|
||
|
|
"""Test fastapi, uvicorn and pydantic2.
|
||
|
|
|
||
|
|
fastapi needs an asgi server to run. Since we select uvicorn as
|
||
|
|
asgi server here, uvicorn is tested as well.
|
||
|
|
|
||
|
|
pydantic is an major dependency of fastapi so it is implicitly
|
||
|
|
tested here as well.
|
||
|
|
"""
|
||
|
|
__test__ = True
|
||
|
|
config = \
|
||
|
|
"""
|
||
|
|
BR2_arm=y
|
||
|
|
BR2_cortex_a9=y
|
||
|
|
BR2_ARM_ENABLE_NEON=y
|
||
|
|
BR2_ARM_ENABLE_VFP=y
|
||
|
|
BR2_TOOLCHAIN_EXTERNAL=y
|
||
|
|
BR2_PACKAGE_PYTHON3=y
|
||
|
|
BR2_PACKAGE_PYTHON_FASTAPI=y
|
||
|
|
BR2_PACKAGE_PYTHON_UVICORN=y
|
||
|
|
BR2_TARGET_ROOTFS_CPIO=y
|
||
|
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||
|
|
"""
|
||
|
|
sample_scripts = ["tests/package/sample_python_fastapi.py"]
|
||
|
|
timeout = 60
|
||
|
|
|
||
|
|
def test_run(self):
|
||
|
|
self.login()
|
||
|
|
self.check_sample_scripts_exist()
|
||
|
|
cmd = "uvicorn sample_python_fastapi:app > /dev/null 2>&1 &"
|
||
|
|
|
||
|
|
_, exit_code = 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:8000/"
|
||
|
|
output, exit_code = self.emulator.run(cmd, timeout=self.timeout)
|
||
|
|
if exit_code == 0:
|
||
|
|
self.assertEqual(output[0], '{"message":"Hello World"}')
|
||
|
|
break
|
||
|
|
else:
|
||
|
|
self.assertTrue(False, "Timeout while waiting for fastapi server")
|
||
|
|
|
||
|
|
def login(self):
|
||
|
|
cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||
|
|
self.emulator.boot(arch="armv7",
|
||
|
|
kernel="builtin",
|
||
|
|
options=["-initrd", cpio_file])
|
||
|
|
self.emulator.login()
|