fix(tests): сторож документации называет непрошедшую проверку, кластерная больше не виснет
Зачем. Сторож `tests/docs-guards.sh` падал через `set -e`: единственным следом была единица в коде возврата, а какое именно утверждение о README перестало быть правдой — не сообщалось. Со стороны файл выглядел набором несвязанных grep без объяснения, зачем каждый из них нужен. Отдельно: `make smoke-cluster` мог зависнуть навсегда. У запроса INSERT clickhouse-client дочитывает данные из стандартного ввода и ждёт его конца; при запуске не из терминала, а из фонового процесса с открытым вводом конец не наступает никогда. Проверка молча висела больше двадцати минут. Что. - Проверки собраны в именованные функции, каждая с комментарием, зачем она существует и что ломается, когда она краснеет. - Обёртка `check` печатает утверждение и при успехе, и при провале, считает пройденные и выходит с понятным сообщением. - Ввод запросов ClickHouse закрыт через `</dev/null`, рядом — объяснение причины. - README: раздел «Какую проверку когда запускать» — лесенка от дешёвой статической проверки к дорогой интеграционной, с ответом, зачем внутри `make smoke-guards` три прогона `make smoke`. Проверка. make config-test — пройдено 3, 3 и 6, ошибок 0. Фальсификация сторожа: порт ноды 2 в README изменён — «ОШИБКА: не подтвердилось: README перечисляет HTTP- и нативные порты обеих нод», код 1; двоеточие в строке про перезапуск ClickHouse заменено на тире — «ОШИБКА: не подтвердилось: README требует перезапуск ClickHouse после изменения настройки метрик», код 1. README восстановлен из индекса. make smoke-cluster с открытым стандартным вводом — 8 проверок за 7 с; до починки та же команда висела 23 минуты и была снята вручную. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -67,6 +67,27 @@ Superset, создаёт администратора и импортирует
|
||||
останавливает Prometheus с Kafka. Общая проверка должна назвать Prometheus и
|
||||
оба пробника, после чего завершиться с ошибкой. В конце стенд восстанавливается.
|
||||
|
||||
### Какую проверку когда запускать
|
||||
|
||||
Проверки выстроены лесенкой: чем дороже прогон, тем больше связей он трогает.
|
||||
|
||||
- `make config-test` — секунды, стенд поднимать не нужно. Видит только то, что
|
||||
есть в файлах, и о работоспособности не говорит ничего. Дёшево настолько, что
|
||||
можно гонять перед каждым коммитом.
|
||||
- `make smoke` — минута-две на поднятом стенде. Дороже, но проверяет связи
|
||||
между службами, а не отдельные файлы: это интеграционная проверка.
|
||||
- `make smoke-cluster` — около минуты. Одна связь, зато до дна: межнодовое
|
||||
устройство ClickHouse.
|
||||
- `make smoke-guards` — около пяти минут, и отвечает на другой вопрос. Не
|
||||
«работает ли стенд», а «умеют ли проверки падать»: она намеренно ломает стенд
|
||||
и смотрит, покраснеет ли `make smoke` и назовёт ли виновника, потом чинит и
|
||||
убеждается, что стенд снова зелёный. Отсюда и три прогона `make smoke`
|
||||
внутри — до поломки, во время неё и после починки.
|
||||
|
||||
Обычный рабочий цикл — `make config-test` и `make smoke`. `make smoke-guards`
|
||||
нужна тому, кто правит сами проверки или пробники: без неё легко завести
|
||||
проверку, которая зелена всегда.
|
||||
|
||||
Остановить контейнеры без удаления данных можно командой `make down`. Для
|
||||
полного сброса с удалением всех именованных томов используйте `make clean`.
|
||||
Повторный `make up` безопасен: одноразовая подготовка приложений идемпотентна.
|
||||
|
||||
Reference in New Issue
Block a user