summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py')
-rwxr-xr-xfluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py224
1 files changed, 224 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py
new file mode 100755
index 000000000..09c36db5e
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/simple/sample_test_run.py
@@ -0,0 +1,224 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2019 Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+
+import argparse
+import shlex
+import subprocess
+import sys
+import time
+import traceback
+import glob
+
+WAMRC_CMD = "../../wamr-compiler/build/wamrc"
+
+def compile_wasm_files_to_aot(wasm_apps_dir):
+ wasm_files = glob.glob(wasm_apps_dir + "/*.wasm")
+ print("Compile wasm app into aot files")
+ for wasm_file in wasm_files:
+ aot_file = wasm_file[0 : len(wasm_file) - 5] + ".aot";
+ cmd = [ WAMRC_CMD, "-o", aot_file, wasm_file ]
+ subprocess.check_call(cmd)
+
+def start_server(cwd):
+ """
+ Startup the 'simple' process works in TCP server mode
+ """
+ app_server = subprocess.Popen(shlex.split("./simple -s "), cwd=cwd)
+ return app_server
+
+
+def query_installed_application(cwd):
+ """
+ Query all installed applications
+ """
+ qry_prc = subprocess.run(
+ shlex.split("./host_tool -q"), cwd=cwd, check=False, capture_output=True
+ )
+ assert qry_prc.returncode == 69
+ return qry_prc.returncode, qry_prc.stdout
+
+
+def install_wasm_application(wasm_name, wasm_file, cwd):
+ """
+ Install a wasm application
+ """
+ inst_prc = subprocess.run(
+ shlex.split(f"./host_tool -i {wasm_name} -f {wasm_file}"),
+ cwd=cwd,
+ check=False,
+ capture_output=True,
+ )
+ assert inst_prc.returncode == 65
+ return inst_prc.returncode, inst_prc.stdout
+
+
+def uninstall_wasm_application(wasm_name, cwd):
+ """
+ Uninstall a wasm application
+ """
+
+ unst_prc = subprocess.run(
+ shlex.split(f"./host_tool -u {wasm_name}"),
+ cwd=cwd,
+ check=False,
+ capture_output=True,
+ )
+ assert unst_prc.returncode == 66
+ return unst_prc.returncode, unst_prc.stdout
+
+
+def send_get_to_wasm_application(wasm_name, url, cwd):
+ """
+ send a request (GET) from host to an applicaton
+ """
+ qry_prc = subprocess.run(
+ shlex.split(f"./host_tool -r /app/{wasm_name}{url} -A GET"),
+ cwd=cwd,
+ check=False,
+ capture_output=True,
+ )
+ assert qry_prc.returncode == 69
+ return qry_prc.returncode, qry_prc.stdout
+
+
+def main():
+ """
+ GO!GO!!GO!!!
+ """
+ parser = argparse.ArgumentParser(description="run the sample and examine outputs")
+ parser.add_argument("working_directory", type=str)
+ parser.add_argument("--aot", action='store_true', help="Test with AOT")
+ args = parser.parse_args()
+
+ test_aot = False
+ suffix = ".wasm"
+ if not args.aot:
+ print("Test with interpreter mode")
+ else:
+ print("Test with AOT mode")
+ test_aot = True
+ suffix = ".aot"
+ wasm_apps_dir = args.working_directory + "/wasm-apps"
+ compile_wasm_files_to_aot(wasm_apps_dir)
+
+ ret = 1
+ app_server = None
+ try:
+ app_server = start_server(args.working_directory)
+
+ # wait for a second
+ time.sleep(1)
+
+ print("--> Install timer" + suffix + "...")
+ install_wasm_application(
+ "timer", "./wasm-apps/timer" + suffix, args.working_directory
+ )
+
+ # wait for a second
+ time.sleep(3)
+
+ print("--> Query all installed applications...")
+ query_installed_application(args.working_directory)
+
+ print("--> Install event_publisher" + suffix + "...")
+ install_wasm_application(
+ "event_publisher",
+ "./wasm-apps/event_publisher" + suffix,
+ args.working_directory,
+ )
+
+ print("--> Install event_subscriber" + suffix + "...")
+ install_wasm_application(
+ "event_subscriber",
+ "./wasm-apps/event_subscriber" + suffix,
+ args.working_directory,
+ )
+
+ print("--> Query all installed applications...")
+ query_installed_application(args.working_directory)
+
+ print("--> Uninstall timer" + suffix + "...")
+ uninstall_wasm_application("timer", args.working_directory)
+
+ print("--> Query all installed applications...")
+ query_installed_application(args.working_directory)
+
+ print("--> Uninstall event_publisher" + suffix + "...")
+ uninstall_wasm_application(
+ "event_publisher",
+ args.working_directory,
+ )
+
+ print("--> Uninstall event_subscriber" + suffix + "...")
+ uninstall_wasm_application(
+ "event_subscriber",
+ args.working_directory,
+ )
+
+ print("--> Query all installed applications...")
+ query_installed_application(args.working_directory)
+
+ print("--> Install request_handler" + suffix + "...")
+ install_wasm_application(
+ "request_handler",
+ "./wasm-apps/request_handler" + suffix,
+ args.working_directory,
+ )
+
+ print("--> Query again...")
+ query_installed_application(args.working_directory)
+
+ print("--> Install request_sender" + suffix + "...")
+ install_wasm_application(
+ "request_sender",
+ "./wasm-apps/request_sender" + suffix,
+ args.working_directory,
+ )
+
+ print("--> Send GET to the Wasm application named request_handler...")
+ send_get_to_wasm_application("request_handler", "/url1", args.working_directory)
+
+ print("--> Uninstall request_handler" + suffix + "...")
+ uninstall_wasm_application(
+ "request_handler",
+ args.working_directory,
+ )
+
+ print("--> Uninstall request_sender" + suffix + "...")
+ uninstall_wasm_application(
+ "request_sender",
+ args.working_directory,
+ )
+
+ # Install a wasm app named "__exit_app_manager__" just to make app manager exit
+ # while the wasm app is uninstalled, so as to collect the code coverage data.
+ # Only available when collecting code coverage is enabled.
+ print("--> Install timer" + suffix + "...")
+ install_wasm_application(
+ "__exit_app_manager__", "./wasm-apps/timer" + suffix, args.working_directory
+ )
+
+ print("--> Uninstall timer" + suffix + "...")
+ uninstall_wasm_application(
+ "__exit_app_manager__",
+ args.working_directory,
+ )
+
+ # wait for a second
+ time.sleep(1)
+
+ print("--> All pass")
+ ret = 0
+ except AssertionError:
+ traceback.print_exc()
+ finally:
+ app_server.kill()
+
+ return ret
+
+
+if __name__ == "__main__":
+ sys.exit(main())