42 lines
2.2 KiB
Bash
Executable File
42 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Task-owned Linux namespace only. Existing test logic and limits are unchanged.
|
|
set -euo pipefail
|
|
mkdir -p /task/tmp /task/data /task/results
|
|
export TMPDIR=/task/tmp
|
|
export XDG_DATA_HOME=/task/data
|
|
export OTOPCUA_SDK2_SOAK=1
|
|
export OTOPCUA_SDK2_SOAK_OUTPUT=/task/soak.jsonl
|
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
|
export DOTNET_NOLOGO=1
|
|
[[ $(uname -s) == Linux && $(uname -m) == aarch64 ]]
|
|
[[ -d /proc/self/fd ]]
|
|
printf 'kernel=%s machine=%s tmp=%s procfs=yes\n' "$(uname -s)" "$(uname -m)" "$(readlink -f "$TMPDIR")" > /task/linux-precheck.txt
|
|
dotnet --info > /task/container-dotnet-info.txt
|
|
dotnet vstest /app/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests.dll \
|
|
--TestCaseFilter:'FullyQualifiedName~Sdk2LifecycleSoakTests.Descriptor_probe_' \
|
|
--ResultsDirectory:/task/results '--Logger:trx;LogFileName=descriptor-controls.trx' > /task/descriptor-controls.log 2>&1
|
|
# VSTest launches the published xUnit v3 self-contained Linux ELF apphost.
|
|
# A distinct invocation gives the soak its own otherwise idle test process.
|
|
dotnet vstest /app/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests.dll \
|
|
--TestCaseFilter:'FullyQualifiedName=ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests.Sdk2LifecycleSoakTests.Repeated_lifecycles_return_resources_to_a_steady_baseline' \
|
|
--ResultsDirectory:/task/results '--Logger:trx;LogFileName=soak.trx' > /task/soak.log 2>&1 &
|
|
vstest_pid=$!
|
|
observed=0
|
|
for attempt in $(seq 1 600); do
|
|
if [[ -s /task/soak.jsonl ]]; then
|
|
test_pid=$(head -n 1 /task/soak.jsonl | sed -n 's/.*"processId":\([0-9]*\),.*/\1/p')
|
|
[[ -n "$test_pid" ]]
|
|
test_exe=$(readlink "/proc/$test_pid/exe")
|
|
[[ "$test_exe" == /app/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests ]]
|
|
printf 'testProcessId=%s\nactualExecutable=%s\n' "$test_pid" "$test_exe" > /task/linux-runtime-process.txt
|
|
awk '$6 ~ /\/(libcoreclr.so|libhostfxr.so|libhostpolicy.so|System.Private.CoreLib.dll)$/ {print $6}' "/proc/$test_pid/maps" | sort -u >> /task/linux-runtime-process.txt
|
|
grep -Fx /app/libcoreclr.so /task/linux-runtime-process.txt > /dev/null
|
|
observed=1
|
|
break
|
|
fi
|
|
kill -0 "$vstest_pid" 2>/dev/null || break
|
|
sleep 0.1
|
|
done
|
|
[[ "$observed" == 1 ]]
|
|
wait "$vstest_pid"
|