Files
core/test/ecosystem-release/arm64/guest.sh
T

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