Improve the repeated start test.

This commit is contained in:
Franz-Josef Haider committed 2026-09-24 14:43:51 +03:00
1 parent 8b67f4397c
commit b38304a609
4 files changed
+21 -81

No files matched your search

+9 -1
View File
@@ -47,6 +47,8 @@ sudo chown steamos:steamos /dev/kmsg
# We need to run with sw graphics on gitlab ci:
export LEPTON_FORCE_SOFTWARE=true
total=$(grep '^total=' "${OWD}/tests/test-repeated-start.sh" | cut -d= -f2-)
sudo mkdir -p /sys/fs/cgroup
sudo mount -t cgroup2 none /sys/fs/cgroup
@@ -59,6 +61,10 @@ sudo mkdir -p /sys/fs/cgroup/lepton-bootchart
sudo mkdir -p /sys/fs/cgroup/lepton-steamlaunch-3418470
sudo mkdir -p /sys/fs/cgroup/lepton-test-vulkan.apk
for ((i=1; i<=total; i++)); do
sudo mkdir -p /sys/fs/cgroup/lepton-test-instance-${i}
done
sudo chown steamos:steamos -R /sys/fs/cgroup
sudo chmod 777 -R /sys/fs/cgroup
@@ -71,7 +77,9 @@ sudo sh -c "echo $$ > /sys/fs/cgroup/lepton-bootchart/cgroup.procs"
sudo sh -c "echo $$ > /sys/fs/cgroup/lepton-steamlaunch-3418470/cgroup.procs"
sudo sh -c "echo $$ > /sys/fs/cgroup/lepton-test-vulkan.apk/cgroup.procs"
sudo sh -c "echo "+cpu +cpuset +memory +pids" > /sys/fs/cgroup/cgroup.subtree_control"
for ((i=1; i<=total; i++)); do
sudo sh -c "echo $$ > /sys/fs/cgroup/lepton-test-instance-${i}/cgroup.procs"
done
sudo tee /etc/containers/containers.conf >/dev/null <<'EOF'
[engine]
+1 -1
View File
@@ -12,7 +12,7 @@ function check_debugger()
for app_pid in $(pgrep -af "$1"); do
tracer_pid="$(awk '/^TracerPid:/ {print $2}' "/proc/${app_pid}/status")"
test_log "FOUND TRACER PID: ${tracer_pid} $(ps -p "${tracer_pid}" -o comm=)"
test_log "FOUND TRACER PID: ${tracer_pid} $(ps -p "${tracer_pid}" -o comm=) ... $2"
if [[ "${tracer_pid}" -gt 1 ]] &&
[[ "$(ps -p "${tracer_pid}" -o comm=)" == "$2" ]]; then
return 0
-2
View File
@@ -1,7 +1,5 @@
#!/bin/bash
set -euo pipefail
_RED="RED: "
_GREEN="GREEN: "
_PLAIN="PLAIN: "
+11 -77
View File
@@ -1,105 +1,39 @@
#!/bin/bash
set -euo pipefail
TESTS_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
source "$TESTS_DIR"/test-common.sh
sed -i "s/_RED=\"\"/_RED=\"RED: \"/g" lepton
sed -i "s/_GREEN=\"\"/_GREEN=\"GREEN: \"/g" lepton
sed -i "s/_PLAIN=\"\"/_PLAIN=\"PLAIN: \"/g" lepton
max_parallel=25
total=5000
max_parallel=10
total=50
function run_test() {
local i="$1"
local name="testapp-instance-${i}"
local STEAM_COMPAT_INSTALL_PATH="${HOME}/.local/share/Steam/steamnames/common/${name}"
local STEAM_COMPAT_CLIENT_INSTALL_PATH="${HOME}/.local/share/Steam"
local STEAM_COMPAT_DATA_PATH="${HOME}/.local/share/Steam/steamnames/compatdata/${name}"
local STEAM_COMPAT_SHADER_PATH="${HOME}/.local/share/Steam/steamnames/shadercache/${name}"
local STEAM_FOSSILIZE_DUMP_PATH="${STEAM_COMPAT_SHADER_PATH}/fozpipelinesv6/steamname_pipeline_cache"
local SteamAppId="${name}"
mkdir -p \
"${STEAM_COMPAT_INSTALL_PATH}" \
"${STEAM_COMPAT_CLIENT_INSTALL_PATH}" \
"${STEAM_COMPAT_DATA_PATH}" \
"${STEAM_COMPAT_SHADER_PATH}" \
"${STEAM_FOSSILIZE_DUMP_PATH}"
cp tests/test-apk.apk "${STEAM_COMPAT_INSTALL_PATH}/"
tee "/home/steamos/.local/share/Steam/steamnames/namemanifest_${name}.acf" > /dev/null <<EOF
"AppState"
{
"nameid" "${name}"
"name" "${name}"
"installdir" "${name}"
}
EOF
CG="/sys/fs/cgroup/lepton-steamlaunch-${name}"
if [ -d "$CG" ]; then
while read -r pid; do
echo "$pid" | sudo tee /sys/fs/cgroup/cgroup.procs >/dev/null
done < "$CG/cgroup.procs"
sudo rmdir "$CG"
fi
sudo mkdir -p "$CG"
sudo sh -c "echo $$ > '$CG/cgroup.procs'"
sudo chown steamos:steamos -R /sys/fs/cgroup
sudo chmod 777 -R /sys/fs/cgroup
sudo sh -c "echo "+cpu +cpuset +memory +pids" > /sys/fs/cgroup/cgroup.subtree_control"
local name="test-instance-${i}"
test_log "PASS$i"
(
STEAM_COMPAT_INSTALL_PATH="${HOME}/.local/share/Steam/steamnames/common/${name}" \
STEAM_COMPAT_CLIENT_INSTALL_PATH="${HOME}/.local/share/Steam" \
STEAM_COMPAT_DATA_PATH="${HOME}/.local/share/Steam/steamapps/compatdata/${name}" \
STEAM_COMPAT_SHADER_PATH="${HOME}/.local/share/Steam/steamapps/shadercache/${name}" \
STEAM_FOSSILIZE_DUMP_PATH="${HOME}/.local/share/Steam/steamapps/shadercache/${name}/fozpipelinesv6/steamapp_pipeline_cache" \
SteamAppId="${name}" \
LEPTON_ADB_PORT=$((5554 + i)) \
LEPTON_GDB_PORT=$((1336 + i)) \
LEPTON_LLDB_PORT=$((2336 + i)) ./lepton start "$name" ||
LEPTON_LLDB_PORT=$((2336 + i)) ./lepton start "${name}"||
test_log "$name failed to start."
) &
start_pid=$!
if ! wait_for_boot "$name" 360; then
return 1
fi
if ! wait_for_app "$name" com.example.neon42 360; then
return 1
fi
./lepton stop "$name" || true
if [[ "$(./lepton ps | grep "$name" | grep "${_GREEN}")" == "" ]]; then
test_log "repeated start test failed for $name, lepton ps inconsistent (1)!"
return 1
fi
wait "${start_pid}"
./lepton stop "$name"
rm -rf \
"${STEAM_COMPAT_INSTALL_PATH}" \
"${STEAM_COMPAT_DATA_PATH}" \
"${STEAM_COMPAT_SHADER_PATH}" \
"${STEAM_FOSSILIZE_DUMP_PATH}"
return 0
}
# Let's not waste too much time, many containers start at the same time
# But it means we need to fix ports ourselves
export LEPTON_LOCK_TIMEOUT=0
# App launches may be slow
export LEPTON_APP_LAUNCH_TIMEOUT=10000
export LEPTON_NO_PORT_FORWARDING=true
failed=0
@@ -125,7 +59,7 @@ done
for ((j=1; j<=max_parallel; j++)); do
if [[ -n "${pids[j]:-}" ]]; then
if ! wait "${pids[j]}"; then
((failed++))
((++failed))
fi
fi
done
@@ -136,7 +70,7 @@ function android_sdk_version()
}
if (( failed > 0 )); then
test_log "testapp repeated start test failed $failed times."
test_log "test repeated start test failed $failed times."
# Our android 30 image sometimes fails to start...
# Might be some patch that breaks it or some android bug...
@@ -145,5 +79,5 @@ if (( failed > 0 )); then
fi
fi
test_log "testapp repeated start test finished"
test_log "test repeated start test finished"