Files
InstanceBrick--nightcap/scripts/runtime_matrix.sh
T
2026-08-12 01:58:18 +03:00

85 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_DIR="${MOCKTAIL_BUILD_DIR:-${ROOT_DIR}/build}"
BINARY="${BUILD_DIR}/mocktail"
LIBROBLOX="${ROBLOX_LIB_PATH:-${ROOT_DIR}/rbx_bin/libroblox.so}"
LOG_DIR="${ROOT_DIR}/logs/runtime/matrix-$(date +%Y%m%d-%H%M%S)"
TIMEOUT_SECONDS="${TIMEOUT_SECONDS:-12}"
TIMEOUT_SIGNAL="${TIMEOUT_SIGNAL:-KILL}"
mkdir -p "${LOG_DIR}"
if [[ ! -x "${BINARY}" ]]; then
cmake -S "${ROOT_DIR}" -B "${BUILD_DIR}" -DCMAKE_BUILD_TYPE=Debug
fi
cmake --build "${BUILD_DIR}" -j"$(nproc)"
run_profile() {
local name="$1"
shift
local log="${LOG_DIR}/${name}.log"
local summary="${LOG_DIR}/${name}.summary"
echo "[matrix] ${name}" | tee "${summary}"
set +e
timeout -s "${TIMEOUT_SIGNAL}" "${TIMEOUT_SECONDS}s" env \
SDL_VIDEODRIVER="${SDL_VIDEODRIVER:-dummy}" \
ROBLOX_LIB_PATH="${LIBROBLOX}" \
"$@" \
"${BINARY}" >"${log}" 2>&1
local rc=$?
set -e
{
echo "rc=${rc}"
echo "log=${log}"
if rg -q "first Roblox frame presented|SwapBuffers #[0-9]+" "${log}"; then
echo "frame=yes"
else
echo "frame=no"
fi
if rg -q "Segmentation fault|Aborted|free\\(\\):|\\[crash\\]|SIGABRT" "${log}"; then
echo "fatal=yes"
else
echo "fatal=no"
fi
if rg -q "black waiting frame|presented \\(software\\)" "${log}"; then
echo "fallback_frame=yes"
else
echo "fallback_frame=no"
fi
rg -n "Stage6 GL helper state-slot|nativeGameGlobalInit returned|nativeAppBridgeV2InitWithParams returned|recovered|first Roblox frame presented|SwapBuffers|free\\(\\):|SIGABRT|\\[crash\\]" "${log}" | tail -20 || true
} | tee -a "${summary}"
}
run_profile safe-default \
MOCKTAIL_WINDOW_TRACE=1
run_profile helper-tls-slot \
MOCKTAIL_WINDOW_TRACE=1 \
MOCKTAIL_PATCH_STAGE6_GL_HELPER_STATE_SLOT=1
run_profile gameactivity-surface \
MOCKTAIL_WINDOW_TRACE=1 \
MOCKTAIL_STEP_GAME_ACTIVITY_INIT=1 \
MOCKTAIL_STEP_GAME_ACTIVITY_SURFACE=1 \
MOCKTAIL_STEP_ACTIVITY_LIFECYCLE=1 \
MOCKTAIL_STEP_START_APP_WITH_PARAMS=0 \
MOCKTAIL_START_LUA_APP_DM=0 \
MOCKTAIL_MAIN_THREAD_MESSAGE_PUMP=1 \
MOCKTAIL_MAIN_THREAD_MESSAGE_PUMP_LIMIT=1
run_profile real-workers-bounded \
MOCKTAIL_WINDOW_TRACE=1 \
MOCKTAIL_EXIT_EMPTY_GL_HELPER_LOOP=1 \
MOCKTAIL_STEP_START_APP_WITH_PARAMS=1 \
MOCKTAIL_CALL_REAL_APP_BRIDGE_UPDATE_SURFACE=1 \
MOCKTAIL_START_LUA_APP_DM=1 \
MOCKTAIL_MAIN_THREAD_MESSAGE_PUMP=1 \
MOCKTAIL_MAIN_THREAD_MESSAGE_PUMP_LIMIT=1
echo "[matrix] summaries: ${LOG_DIR}"