mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 17:54:03 +01:00
The shell tests under linux_configuration/tests/ never ran anywhere: no workflow executed them, so they rotted silently. Three referenced script paths that moved under scripts/periodic_background/ in an earlier reorganisation, and test_android_guardian_service.sh created its temp worktree at a different path from the one it copied into, so its cp could never succeed. The new workflow runs the bats suites plus an explicit allowlist of side-effect-free tests. Roughly eight others drive pacman, /etc, systemd or adb and need root plus an Arch container, so they stay out. Repairing the paths uncovered two genuine failures, deliberately left out of the allowlist because they look like real regressions in the scripts they cover rather than stale assertions: - test_music_parallelism.sh expects idle mode to wait IDLE_CHECK_INTERVAL (30s); the daemon waits 15s, so it wakes twice as often as intended when idle. - test_usage_monitoring_installer_efficiency.sh expects the logger template to sleep between day-rollover checks. Both need a fix in the covered scripts, not in the tests.
70 lines
2.9 KiB
Bash
Executable File
70 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Regression tests for android_guardian service loop cadence.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
|
REPO_DIR=$(cd -- "$SCRIPT_DIR/.." && pwd)
|
|
TARGET_SCRIPT="$REPO_DIR/scripts/periodic_background/utils/android_guardian/service.sh"
|
|
|
|
fail() {
|
|
printf 'FAIL: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
assert_equals() {
|
|
local expected="$1"
|
|
local actual="$2"
|
|
local context="$3"
|
|
if [[ "$expected" != "$actual" ]]; then
|
|
fail "$context (expected: '$expected', actual: '$actual')"
|
|
fi
|
|
}
|
|
|
|
TMP_DIR=$(mktemp -d)
|
|
cleanup() {
|
|
rm -rf "$TMP_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
WORKTREE="$TMP_DIR/worktree"
|
|
mkdir -p "$WORKTREE/scripts/periodic_background/utils/android_guardian"
|
|
cp "$TARGET_SCRIPT" "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh"
|
|
|
|
printf 'Checking skip-main avoids boot side effects...\n'
|
|
SKIP_MAIN_GUARDIAN_DIR="$TMP_DIR/skip-main-guardian"
|
|
ANDROID_GUARDIAN_SKIP_MAIN=1 \
|
|
ANDROID_GUARDIAN_DIR="$SKIP_MAIN_GUARDIAN_DIR" \
|
|
ANDROID_GUARDIAN_MODULE_DIR="$TMP_DIR/skip-main-module" \
|
|
sh "$TARGET_SCRIPT"
|
|
|
|
[[ ! -d "$SKIP_MAIN_GUARDIAN_DIR" ]] \
|
|
|| fail 'skip-main should prevent guardian boot setup side effects'
|
|
|
|
printf 'Checking guardian loop cadence constants...\n'
|
|
hosts_ticks=$(grep '^HOSTS_CHECK_EVERY_TICKS=' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" | cut -d= -f2)
|
|
apps_ticks=$(grep '^APPS_CHECK_EVERY_TICKS=' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" | cut -d= -f2)
|
|
sleep_seconds=$(grep '^LOOP_SLEEP_SECONDS=' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" | cut -d= -f2)
|
|
|
|
assert_equals '6' "$hosts_ticks" 'hosts protection should run every 6 ticks'
|
|
assert_equals '12' "$apps_ticks" 'blocked-app scan should run every 12 ticks'
|
|
assert_equals '5' "$sleep_seconds" 'guardian loop should keep the 5 second base sleep'
|
|
|
|
printf 'Checking guardian loop protects module every tick...\n'
|
|
grep -q 'protect_module' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" \
|
|
|| fail 'guardian loop must always protect the module each tick'
|
|
|
|
printf 'Checking blocked-app scans are cached per pass...\n'
|
|
grep -q 'installed_packages=$(pm list packages 2>/dev/null)' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" \
|
|
|| fail 'guardian service should cache installed packages once per blocked-app scan'
|
|
|
|
if grep -q 'pm list packages 2>/dev/null | grep -q' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh"; then
|
|
fail 'guardian service should not re-run pm list packages through grep for every blocked app'
|
|
fi
|
|
|
|
printf 'Checking guardian loop uses skip-main guard for tests...\n'
|
|
grep -q 'ANDROID_GUARDIAN_SKIP_MAIN' "$WORKTREE/scripts/periodic_background/utils/android_guardian/service.sh" \
|
|
|| fail 'guardian service should support skip-main testing'
|
|
|
|
printf 'android_guardian service regression checks passed.\n'
|