Task #6128
openTask #6116: EPIC: Speed up the stats updater daemon (scripts/workflow/update_stats.sh)
66 тестов падают всегда — набор не может «падать быстро»
0%
Description
Обнаружено при написании тестов на #6116.
Проблема¶
./gradlew test — 66 падений из 559, стабильно, и до изменений, и после. Пока красное состояние постоянное, оно ничего не сообщает: регрессию в нём не видно, а BUILD FAILED перестаёт быть сигналом.
Причина не в коде. Тестам не хватает локальных файлов с учётными данными, которые лежат вне репозитория (и правильно, что вне — .gitignore:16 *_auth.json):
-
./test_iiko_server_auth.json— логин/пароль к тестовому iiko; -
yandex_authorized_keys.json— ключ для Yandex GPT / JWT.
Плюс tmp/mock/iiko_logo_pass/iiko_auth.json из application-test.properties: на этой машине файл лежал под именем tmp\mock\iiko_logo_pass\iiko_auth.json — с обратными слэшами внутри имени, одним файлом в корне tmp/. Похоже, его когда-то создали на Windows или скриптом, который не разложил путь. На macOS и Linux такой файл не находится ни одним тестом. Скопировал локально по правильному пути, падения после этого сменились с NoSuchFileException на JsonSyntaxException — то есть тесты пошли дальше и упёрлись уже в два файла выше.
Что стоит сделать¶
- Описать в README (или в
CONTRIBUTING), какие файлы с учётными данными нужны локально и где их взять — сейчас это знание нигде не записано. - Разделить тесты на те, что работают без внешних систем, и те, что требуют живых iiko/Yandex/базы. Вторые — в отдельный source set или под тег JUnit, чтобы обычный
./gradlew testбыл зелёным и падал только на настоящей регрессии. - Разобраться с файлом
tmp\mock\iiko_logo_pass\iiko_auth.json— он лишний, и его имя стоит починить или удалить его совсем.
Пока это не сделано, новые тесты (см. коммит ce3a1a2b) приходится гонять точечно через --tests, а не полным прогоном.
No data to display