Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions samples/simple/sample_test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,18 @@
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
Expand Down Expand Up @@ -92,19 +101,8 @@ def main():
print("Test with AOT mode")
test_aot = True
suffix = ".aot"
wasm_files = [ "timer", "sensor", "connection",
"event_publisher", "event_subscriber",
"request_handler", "request_sender" ]
work_dir = args.working_directory
wasm_apps_dir = work_dir + "/wasm-apps"
print("Compile wasm app into aot files")
for wasm_file in wasm_files:
CMD = []
CMD.append(WAMRC_CMD)
CMD.append("-o")
CMD.append(wasm_apps_dir + "/" + wasm_file + ".aot")
CMD.append(wasm_apps_dir + "/" + wasm_file + ".wasm")
subprocess.check_call(CMD)
wasm_apps_dir = args.working_directory + "/wasm-apps"
compile_wasm_files_to_aot(wasm_apps_dir)

ret = 1
app_server = None
Expand Down
4 changes: 2 additions & 2 deletions samples/socket-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Say Hi from the Server
send and receive data via 127.0.0.1:1234.

```bash
$ ./iwasm --addr-pool=127.0.0.1/0 ./send_recv.wasm
$ ./iwasm --addr-pool=127.0.0.1/0 ./send_recv.wasm
```

The output is:
Expand Down Expand Up @@ -164,7 +164,7 @@ Datagram sent

`addr_resolve.wasm` demonstrates the usage of resolving a domain name
```
$ ./iwasm --allow-resolve=*.com addr_resolve.wasm github.com
$ ./iwasm --allow-resolve=*.com addr_resolve.wasm github.com
```

The command displays the host name and its corresponding IP address:
Expand Down
141 changes: 141 additions & 0 deletions samples/socket-api/sample_test_run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#!/usr/bin/env python3
#
# Copyright (C) 2023 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(cmd, cwd):
app_server = subprocess.Popen(shlex.split(cmd), cwd=cwd)
return app_server

def run_cmd(cmd, cwd):
qry_prc = subprocess.run(
shlex.split(cmd), cwd=cwd, check=False, capture_output=True
)
if (qry_prc.returncode != 0):
print("Run {} failed, return {}".format(cmd), qry_prc.returncode)
return
print("return code: {}, output:\n{}".format(qry_prc.returncode,
qry_prc.stdout.decode()))

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
compile_wasm_files_to_aot(wasm_apps_dir)

ret = 1
app_server = None
try:
print("\n================================")
print("Test TCP server and client")
cmd = "./iwasm --addr-pool=0.0.0.0/15 tcp_server" + suffix
app_server = start_server(cmd, args.working_directory)
# wait for a second
time.sleep(1)
cmd = "./iwasm --addr-pool=127.0.0.1/15 tcp_client" + suffix
for i in range(5):
run_cmd(cmd, args.working_directory)

print("\n================================")
print("Test UDP server and client")
cmd = "./iwasm --addr-pool=0.0.0.0/15 udp_server" + suffix
app_server = start_server(cmd, args.working_directory)
# wait for a second
time.sleep(1)
cmd = "./iwasm --addr-pool=127.0.0.1/15 udp_client" + suffix
for i in range(5):
run_cmd(cmd, args.working_directory)

print("\n=====================================================")
print("Sleep 80 seconds to wait TCP server port actually close")
time.sleep(80)

print("\n================================")
print("Test send and receive")
cmd = "./iwasm --addr-pool=127.0.0.1/0 ./send_recv" + suffix
run_cmd(cmd, args.working_directory)

print("\n================================")
print("Test socket options")
cmd = "./iwasm socket_opts" + suffix
run_cmd(cmd, args.working_directory)

print("\n================================")
print("Test timeout server and client")
cmd = "./iwasm --addr-pool=0.0.0.0/15 timeout_server" + suffix
app_server = start_server(cmd, args.working_directory)
# wait for a second
time.sleep(1)
cmd = "./iwasm --addr-pool=127.0.0.1/15 timeout_client" + suffix
run_cmd(cmd, args.working_directory)

print("\n==========================================")
print("Test multicast_client and multicast_server")
cmd = "./iwasm --addr-pool=0.0.0.0/0,::/0 multicast_client.wasm 224.0.0.1"
app_server = start_server(cmd, args.working_directory)
# wait for a second
time.sleep(1)
cmd = "./multicast_server 224.0.0.1"
run_cmd(cmd, args.working_directory)

cmd = "./iwasm --addr-pool=0.0.0.0/0,::/0 multicast_client.wasm FF02:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2"
app_server = start_server(cmd, args.working_directory)
# wait for a second
time.sleep(1)
cmd = "./multicast_server FF02:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2"
run_cmd(cmd, args.working_directory)

print("\n================================")
print("Test address resolving")
cmd = "./iwasm --allow-resolve=*.com addr_resolve.wasm github.com"
cmd = "./multicast_server FF02:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2"
run_cmd(cmd, 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())
15 changes: 14 additions & 1 deletion samples/socket-api/wasm-src/send_recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

static pthread_mutex_t lock = { 0 };
static pthread_cond_t cond = { 0 };
static bool server_create_failed = false;
static bool server_is_ready = false;

void *
Expand Down Expand Up @@ -46,13 +47,17 @@ run_as_server(void *arg)
pthread_mutex_lock(&lock);
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Create a socket failed");
return NULL;
}

#ifndef __wasi__
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on))) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Setsockopt failed");
goto fail1;
Expand All @@ -66,12 +71,16 @@ run_as_server(void *arg)

addrlen = sizeof(addr);
if (bind(sock, (struct sockaddr *)&addr, addrlen) < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Bind failed");
goto fail1;
}

if (listen(sock, 0) < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Listen failed");
goto fail1;
Expand Down Expand Up @@ -117,11 +126,15 @@ run_as_client(void *arg)
ssize_t recv_len = 0;

pthread_mutex_lock(&lock);
while (false == server_is_ready) {
while (!server_create_failed && !server_is_ready) {
pthread_cond_wait(&cond, &lock);
}
pthread_mutex_unlock(&lock);

if (server_create_failed) {
return NULL;
}

printf("Client is running...\n");
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
Expand Down
15 changes: 14 additions & 1 deletion samples/wasm-c-api-imports/wasm/send_recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

static pthread_mutex_t lock = { 0 };
static pthread_cond_t cond = { 0 };
static bool server_create_failed = false;
static bool server_is_ready = false;

#ifdef __wasi__
Expand Down Expand Up @@ -71,13 +72,17 @@ run_as_server(void *arg)
pthread_mutex_lock(&lock);
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Create a socket failed");
return NULL;
}

#ifndef __wasi__
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on))) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Setsockopt failed");
goto fail1;
Expand All @@ -91,12 +96,16 @@ run_as_server(void *arg)

addrlen = sizeof(addr);
if (bind(sock, (struct sockaddr *)&addr, addrlen) < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Bind failed");
goto fail1;
}

if (listen(sock, 0) < 0) {
server_create_failed = true;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);
perror("Listen failed");
goto fail1;
Expand Down Expand Up @@ -142,11 +151,15 @@ run_as_client(void *arg)
ssize_t recv_len = 0;

pthread_mutex_lock(&lock);
while (false == server_is_ready) {
while (!server_create_failed && !server_is_ready) {
pthread_cond_wait(&cond, &lock);
}
pthread_mutex_unlock(&lock);

if (server_create_failed) {
return NULL;
}

local_printf("Client is running...\n");
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
Expand Down
6 changes: 3 additions & 3 deletions samples/workload/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ExternalProject_Add(iwasm
CONFIGURE_COMMAND
${CMAKE_COMMAND} -S ${CMAKE_CURRENT_SOURCE_DIR}/../../product-mini/platforms/linux -B build -DWAMR_BUILD_LIBC_EMCC=1
BUILD_COMMAND
${CMAKE_COMMAND} --build build
${CMAKE_COMMAND} --build build --parallel 4
INSTALL_COMMAND
# FIXME: replace with --install
${CMAKE_COMMAND} -E copy_if_different
Expand All @@ -43,7 +43,7 @@ ExternalProject_Add(wamrc
CONFIGURE_COMMAND
${CMAKE_COMMAND} -S ${CMAKE_CURRENT_SOURCE_DIR}/../../wamr-compiler -B build
BUILD_COMMAND
${CMAKE_COMMAND} --build build
${CMAKE_COMMAND} --build build --parallel 4
INSTALL_COMMAND
# FIXME: replace with --install
${CMAKE_COMMAND} -E copy_if_different
Expand Down Expand Up @@ -113,4 +113,4 @@ add_test(
./iwasm --dir=. testavx.aot ./wasm-av1/elephants_dream_480p24.ivf
WORKING_DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}
)
)
4 changes: 2 additions & 2 deletions samples/workload/bwa/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ ExternalProject_Add(bwa
-DCMAKE_SYSROOT=${WASISDK_SYSROOT}
-DCMAKE_C_FLAGS=-isystem\ ${CMAKE_CURRENT_SOURCE_DIR}/../include/sse\ -isystem\ ${CMAKE_CURRENT_SOURCE_DIR}/../include/libc/musl
${CMAKE_CURRENT_SOURCE_DIR}/bwa
BUILD_COMMAND make bwa_wasm_opt
BUILD_COMMAND make bwa_wasm_opt -j 4
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ./bwa.opt.wasm ${CMAKE_CURRENT_BINARY_DIR}/bwa.wasm
)

Expand All @@ -70,4 +70,4 @@ ExternalProject_Add(bwa-kit
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_BINARY_DIR}/bwa-kit/src/bwa-kit/resource-GRCh38/hs38DH-extra.fa
${CMAKE_CURRENT_BINARY_DIR}/hs38DH-extra.fa
)
)
4 changes: 2 additions & 2 deletions samples/workload/meshoptimizer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ include(ExternalProject)
ExternalProject_Add(codecbench
PREFIX codecbench
GIT_REPOSITORY https://github.com/zeux/meshoptimizer.git
GIT_TAG f926b288264522e1b331a41b07ba40167f396913
GIT_TAG f734fd572aed5bf76e84d9ed62ca6f4f6c47d84e
GIT_SHALLOW ON
GIT_PROGRESS ON
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/meshoptimizer
Expand All @@ -33,6 +33,6 @@ ExternalProject_Add(codecbench
-DCMAKE_TOOLCHAIN_FILE=${WASISDK_TOOLCHAIN}
-DCMAKE_SYSROOT=${WASISDK_SYSROOT}
${CMAKE_CURRENT_SOURCE_DIR}/meshoptimizer
BUILD_COMMAND make codecbench
BUILD_COMMAND make codecbench -j 4
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ./codecbench.wasm ${CMAKE_CURRENT_BINARY_DIR}/codecbench.wasm
)
Loading