first commit: base 2024.08

Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
This commit is contained in:
tao89959
2025-02-12 17:59:29 +08:00
committed by maoxiaochuan
commit f3217a7708
14356 changed files with 572894 additions and 0 deletions
@@ -0,0 +1,57 @@
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()