66 lines
2.1 KiB
Bash
66 lines
2.1 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
uname -m
|
|
test "$(uname -m)" = aarch64
|
|
test -e /proc/self/ns/user
|
|
echo ARM_KERNEL_READY
|
|
check_cleanup() {
|
|
for process in /proc/[0-9]*/exe; do
|
|
executable=$(readlink "$process" || true)
|
|
case "$executable" in
|
|
*/workers/*|*/process-runtime/lib/*)
|
|
echo "ERROR: Worker process leaked: $executable"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
mkdir -p /tmp/apps
|
|
for ecosystem in pip npm go; do
|
|
cp -a "/payload/apps/$ecosystem" "/tmp/apps/$ecosystem"
|
|
program="/tmp/apps/$ecosystem/program"
|
|
if ! "$program" sample.worker.probe '{}' > "/tmp/$ecosystem-first.json" 2> "/tmp/$ecosystem-first.log"; then
|
|
cat "/tmp/$ecosystem-first.json" "/tmp/$ecosystem-first.log"
|
|
exit 1
|
|
fi
|
|
grep -q '"data":true' "/tmp/$ecosystem-first.json"
|
|
check_cleanup
|
|
echo "ARM_WORKER_CALL_PASS=$ecosystem"
|
|
if "$program" sample.worker.reject '{}' > "/tmp/$ecosystem-reject.json" 2> "/tmp/$ecosystem-reject.log"; then
|
|
echo "ERROR: $ecosystem Worker failure unexpectedly succeeded"
|
|
exit 1
|
|
fi
|
|
grep -Fq '"level":"error"' "/tmp/$ecosystem-reject.log"
|
|
grep -Fq 'sample/worker/app.dever:3:' "/tmp/$ecosystem-reject.log"
|
|
grep -Fq 'cannot read component protocol frame header: early eof' "/tmp/$ecosystem-reject.log"
|
|
check_cleanup
|
|
echo "ARM_WORKER_ERROR_PASS=$ecosystem"
|
|
"$program" sample.worker.probe '{}' > "/tmp/$ecosystem-repeat.json"
|
|
grep -q '"data":true' "/tmp/$ecosystem-repeat.json"
|
|
check_cleanup
|
|
cat "/tmp/$ecosystem-first.json"
|
|
echo "ARM_WORKER_PASS=$ecosystem"
|
|
# 只清理当前 guest 用例的可写副本和缓存;原产物保留在只读 payload。
|
|
rm -r /tmp/apps
|
|
mkdir -p /tmp/apps
|
|
done
|
|
cp -a /payload/apps/http /tmp/apps/http
|
|
/tmp/apps/http/application > /tmp/http.log 2>&1 &
|
|
server=$!
|
|
trap 'kill "$server" 2>/dev/null || true; wait "$server" 2>/dev/null || true' EXIT
|
|
attempt=0
|
|
until wget -q -O /tmp/http.json http://127.0.0.1:18080/sample/http/hello; do
|
|
attempt=$((attempt + 1))
|
|
if test "$attempt" -ge 20; then
|
|
cat /tmp/http.log
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
grep -q '"data":"arm-http"' /tmp/http.json
|
|
cat /tmp/http.json
|
|
kill "$server"
|
|
wait "$server"
|
|
trap - EXIT
|
|
echo ARM_HTTP_PASS
|