diff options
author | Andrei Zeliankou <zelenkov@nginx.com> | 2024-05-17 17:42:11 +0100 |
---|---|---|
committer | Ava Hahn <110854134+avahahn@users.noreply.github.com> | 2024-08-20 11:38:51 -0700 |
commit | cad6aed526b38d52f13266120f9a4381f9a22cad (patch) | |
tree | 8108d85b8c56f01504fdf329de787b56c5b7d0a8 /test/unit/applications | |
parent | 593564fdd10da2bf4e76587a0482af72a9f1461b (diff) | |
download | unit-cad6aed526b38d52f13266120f9a4381f9a22cad.tar.gz unit-cad6aed526b38d52f13266120f9a4381f9a22cad.tar.bz2 |
Tests: initial "wasm-wasi-component" test
Diffstat (limited to 'test/unit/applications')
-rw-r--r-- | test/unit/applications/lang/wasm_component.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/unit/applications/lang/wasm_component.py b/test/unit/applications/lang/wasm_component.py new file mode 100644 index 00000000..6f7b5518 --- /dev/null +++ b/test/unit/applications/lang/wasm_component.py @@ -0,0 +1,60 @@ +from pathlib import Path +import shutil +import subprocess +from urllib.parse import quote + +from unit.applications.proto import ApplicationProto +from unit.option import option + + +class ApplicationWasmComponent(ApplicationProto): + @staticmethod + def prepare_env(script): + try: + subprocess.check_output(['cargo', 'component', '--help']) + except (subprocess.CalledProcessError, FileNotFoundError): + return None + + temp_dir = Path(f'{option.temp_dir}/wasm_component/') + + if not temp_dir.exists(): + temp_dir.mkdir() + + app_path = f'{temp_dir}/{script}' + + shutil.copytree(f'{option.test_dir}/wasm_component/{script}', app_path) + + try: + output = subprocess.check_output( + ['cargo', 'component', 'build', '--release'], + cwd=app_path, + stderr=subprocess.STDOUT, + ) + except KeyboardInterrupt: + raise + + except subprocess.CalledProcessError: + return None + + return output + + def load(self, script, **kwargs): + self.prepare_env(script) + + component_path = f'{option.temp_dir}/wasm_component/{script}/target/wasm32-wasi/release/test_wasi_component.wasm' + + self._load_conf( + { + "listeners": { + "*:8080": {"pass": f"applications/{quote(script, '')}"} + }, + "applications": { + script: { + "type": "wasm-wasi-component", + "processes": {"spare": 0}, + "component": component_path, + } + }, + }, + **kwargs, + ) |