mirror of
https://gitlab.steamos.cloud/frame-public/lepton.git
synced 2026-10-06 07:01:00 +02:00
Improve the repeated start test.
This commit is contained in:
1 parent
8b67f4397c
commit
b38304a609
4 files changed
+21
-81
No files matched your search
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
_RED="RED: "
|
||||
_GREEN="GREEN: "
|
||||
_PLAIN="PLAIN: "
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user