-
Notifications
You must be signed in to change notification settings - Fork 4.5k
/
WasmRunnerAOTTemplate.sh
130 lines (107 loc) · 3.42 KB
/
WasmRunnerAOTTemplate.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env bash
# SetCommands defined in eng\testing\tests.wasm.targets
[[SetCommands]]
[[SetCommandsEcho]]
export PATH="$HOME/.jsvu/bin:$PATH"
export PATH=$PREPEND_PATH:$PATH
EXECUTION_DIR=$(dirname $0)
if [[ -n "$3" ]]; then
SCENARIO=$3
fi
if [[ -z "$HELIX_WORKITEM_UPLOAD_ROOT" ]]; then
XHARNESS_OUT="$EXECUTION_DIR/xharness-output"
else
XHARNESS_OUT="$HELIX_WORKITEM_UPLOAD_ROOT/xharness-output"
fi
if [[ -n "$XHARNESS_CLI_PATH" ]]; then
# When running in CI, we only have the .NET runtime available
# We need to call the XHarness CLI DLL directly via dotnet exec
HARNESS_RUNNER="dotnet exec $XHARNESS_CLI_PATH"
else
HARNESS_RUNNER="dotnet xharness"
fi
if [[ -z "$XHARNESS_COMMAND" ]]; then
if [[ "$SCENARIO" == "WasmTestOnBrowser" || "$SCENARIO" == "wasmtestonbrowser" ]]; then
XHARNESS_COMMAND="test-browser"
else
XHARNESS_COMMAND="test"
fi
fi
if [[ "$XHARNESS_COMMAND" == "test" ]]; then
if [[ -z "$JS_ENGINE_ARGS" ]]; then
JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000"
if [[ "$SCENARIO" != "WasmTestOnNodeJS" && "$SCENARIO" != "wasmtestonnodejs" ]]; then
JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--module"
fi
if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then
JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--experimental-wasm-eh"
fi
fi
if [[ -z "$MAIN_JS" ]]; then
MAIN_JS="--js-file=test-main.js"
fi
if [[ -z "$JS_ENGINE" ]]; then
if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then
JS_ENGINE="--engine=NodeJS"
else
JS_ENGINE="--engine=V8"
if [[ -n "$V8_PATH_FOR_TESTS" ]]; then
JS_ENGINE_ARGS="$JS_ENGINE_ARGS --js-engine-path=$V8_PATH_FOR_TESTS"
fi
fi
fi
fi
if [[ -z "$XHARNESS_ARGS" ]]; then
XHARNESS_ARGS="$JS_ENGINE $JS_ENGINE_ARGS $MAIN_JS"
fi
echo PATH=$PATH
echo EXECUTION_DIR=$EXECUTION_DIR
echo SCENARIO=$SCENARIO
echo XHARNESS_OUT=$XHARNESS_OUT
echo XHARNESS_CLI_PATH=$XHARNESS_CLI_PATH
echo HARNESS_RUNNER=$HARNESS_RUNNER
echo XHARNESS_COMMAND=$XHARNESS_COMMAND
echo MAIN_JS=$MAIN_JS
echo JS_ENGINE=$JS_ENGINE
echo JS_ENGINE_ARGS=$JS_ENGINE_ARGS
echo XHARNESS_ARGS=$XHARNESS_ARGS
function _buildAOTFunc()
{
local projectFile=$1
local binLog=$2
shift 2
time dotnet msbuild $projectFile /bl:$binLog $*
local buildExitCode=$?
echo "\n** Performance summary for the build **\n"
dotnet msbuild $binLog -clp:PerformanceSummary -v:q -nologo
if [[ "$(uname -s)" == "Linux" && $buildExitCode -ne 0 ]]; then
echo "\nLast few messages from dmesg:\n"
local lastLines=`dmesg | tail -n 20`
echo $lastLines
if [[ "$lastLines" =~ "oom-kill" ]]; then
return 9200 # OOM
fi
fi
echo
echo
if [[ $buildExitCode -ne 0 ]]; then
return 9100 # aot build failure
fi
return 0
}
pushd $EXECUTION_DIR
# ========================= BEGIN Test Execution =============================
echo ----- start $(date) =============== To repro directly: =====================================================
echo pushd $EXECUTION_DIR
# RunCommands defined in eng\testing\tests.wasm.targets
[[RunCommandsEcho]]
echo popd
echo ===========================================================================================================
pushd $EXECUTION_DIR
# RunCommands defined in eng\testing\tests.wasm.targets
[[RunCommands]]
_exitCode=$?
popd
echo ----- end $(date) ----- exit code $_exitCode ----------------------------------------------------------
echo "XHarness artifacts: $XHARNESS_OUT"
exit $_exitCode