#!/usr/bin/env bash # Сквозной E2E Штурмана в Lima-VM (приёмка v0.1/v0.6 + шагающий скелет, спека §9.3/§9.4). # Запуск: just e2e (внутри VM через limactl shell). Системная шина устройства. # Часть 2 Плана 5 — здесь финализируются weston-screenshot и калибровка eMMC-порога. set -euo pipefail REPO=/shturman cd "$REPO" echo "== сборка ==" cargo build --release --workspace sudo install -m755 target/release/shturman-firstboot /usr/local/bin/ sudo install -m755 target/release/shturman-settings /usr/local/bin/ sudo install -m755 target/release/shturman-power /usr/local/bin/ sudo install -m755 target/release/shturman-shell /usr/local/bin/ echo "== старт target ==" sudo systemctl daemon-reload sudo systemctl start shturman.target sleep 3 fail() { echo "E2E FAIL: $*" >&2; exit 1; } echo "== 1. /data смонтирован до сервисов, реальные опции ==" findmnt /data || fail "/data не смонтирован" findmnt -no OPTIONS /data | grep -q errors=remount-ro || fail "нет errors=remount-ro" echo "== 2. first-boot идемпотентен ==" test -f /data/.shturman-provisioned || fail "нет маркера provisioned" test -f /data/state/machine-id || fail "нет machine-id" echo "== 3. per-unit critical set active (не довольствуемся degraded) ==" for u in shturman-power shturman-settings shturman-shell; do systemctl is-active --quiet "$u" || fail "$u не active" done echo "== 4. имена на системной шине ==" busctl --system list | grep -q ru.shturman.Power || fail "нет ru.shturman.Power" busctl --system list | grep -q ru.shturman.Settings || fail "нет ru.shturman.Settings" echo "== 5. fake-ACC: SetAcc -> AccChanged ==" # (подписка+вызов dev.PowerMock1; реализация ассерта — busctl monitor/call, финал в части 2) echo "== 6. персист настроек через reboot + machine-id стабилен ==" # (Settings.Set -> sudo reboot -> повторный прогон сверяет; оформляется в части 2) echo "== 7. первый кадр (software-render PNG не пустой) ==" # (weston headless + shturman-shell + screenshot; финал — часть 2) echo "== 8. база: journald volatile / zram / eMMC-прокси ==" journalctl --header 2>/dev/null | grep -qi volatile || echo "WARN: journald не volatile?" zramctl | grep -q zram0 || echo "WARN: zram0 не активен?" echo "E2E OK (каркас; пункты 5–7 финализируются в части 2)"