Кратко

  • Rapport теперь принимает разделённые пробелами списки категорий и тестов и строит все их сочетания. Если каталог пары отсутствует, функция возвращается до запуска, а пара не попадает ни в один из четырёх итогов.
  • Статический пример из зафиксированного дерева содержит четыре запрошенные ячейки: два пути существуют, два отсутствуют. Сумма может быть верна для выполненных сценариев, но не раскрывать весь запрос.

На входе четыре ячейки. В отчёте две. Место, где исчезли остальные, не оставляет записи.

Такой разрыв виден в официальном коммите Rapport от 7 сентября с сообщением «Allow running multiple specific categories and tests». Изменён только 2-test.sh, однако практический контракт расширился: два списка превращаются в декартово произведение, после чего наличие каталога определяет, получит ли запрошенная ячейка наблюдаемую судьбу.

Зафиксированный на этом коммите runner трактует первый аргумент как список категорий через пробел, а второй — как список имён тестов. Внешний цикл перебирает категории, внутренний применяет один и тот же список тестов к каждой из них. Для каждой пары строится tests/<category>/<test>, и путь передаётся в run_test.

Первым делом run_test проверяет, является ли путь каталогом. Если нет, функция немедленно возвращает нулевой статус. До этого не назначается TESTID, не печатается строка Test:, не вызывается сценарий run.sh и не увеличивается ни Success, ни Failure, ни Skipped, ни Unknown.

Поэтому отсутствующая ячейка не считается успешной. Она также не считается пропущенной. Её просто нет среди результатов.

Четыре запроса и две представленные проверки

Неизменяемое дерево этой ревизии содержит 21 каталог категорий и 337 путей вида tests/<category>/<test>/run.sh. В нём есть sample/100-simple и sample/500-multi-step, но нет rfc9286/100-simple и rfc9286/500-multi-step.

Сочетание категорий sample rfc9286 с тестами 100-simple 500-multi-step создаёт в исходном коде четыре пары. Два пути sample могут дойти до запуска. Два пути rfc9286 завершаются на проверке каталога. Только выполненные сценарии могут повлиять на четыре итоговых счётчика.

Это статический вывод из открытого кода и дерева, а не выполненный для статьи прогон Rapport. В пакете нет журнала CI, сообщения оператора или свидетельства производственного эффекта. Источники также не утверждают, что все категории обязаны использовать общий набор имён тестов. Разреженная матрица может быть нормой. Недостаёт не самой ячейки, а явной записи о том, как обработан запрошенный элемент.

Такая оговорка защищает и смысл итогов. Если оба существующих сценария успешны, «два успеха» точно описывают выполненные run.sh. Но эта цифра не описывает целиком четыре ячейки, выбранные оператором. Автоматически считать два отсутствующих пути ошибками также нельзя. Следует отдельно фиксировать запрос, развёртку, наличие, запуск и исход.

Возможности выбора расширились быстрее отчёта

Родительская версия runner поддерживала более узкие режимы: все категории, все тесты одной категории или одну точную пару. Новый коммит заменяет эти ветви вложенными циклами. В его сообщении отдельно показаны несколько категорий и несколько тестов, но не определён совместный вызов и не описана отсутствующая ячейка.

По этому молчанию нельзя судить о намерении автора или его знании конкретных пробелов. Доказуем лишь разрыв двух понятий завершения. Для shell-функции отсутствующий путь завершается нулём. Для отчёта такая пара никогда не получила ID теста. Инвентаря, связывающего эти множества, нет.

Зафиксированный README называет Rapport тестером RPKI relying party на ранней стадии разработки, реализованным shell-скриптами и направленным на одну реализацию за запуск. Runner распознаёт семейства fort, Routinator, rpki-client и rpki-prover. Его предупреждения допускают и ошибку самой тестовой системы, и расхождение между relying parties. При таких границах особенно важно знать фактический набор сравниваемых сценариев.

LACNIC помещает Rapport в контекст своих открытых проектов, а публичный репозиторий даёт возможность проверить механизм. Источники не называют его сертификацией, закупочным барьером или производственным валидатором. Предмет анализа — происхождение выбора в открытом инструменте тестирования.

Ведомость до выполнения

Четыре текущих исхода можно сохранить и добавить перед ними ведомость выбора. Она записывала бы исходные аргументы, нормализованные категории и тесты, а также все развёрнутые пары. Для каждой пары достаточно полей о наличии пути и решении execute либо absent-path; после запуска к ней добавлялись бы TESTID и обычный исход.

Ведомость не объявляет отсутствие ошибкой. Она помогает отличить намеренно разреженную матрицу от опечатки, устаревшего имени или неприменимого сценария. Автоматизация сможет отдельно сравнить числа запрошенных, найденных, выполненных и отражённых элементов, не угадывая знаменатель по тишине.

Существующие счётчики отвечают на вопрос «что вернул сценарий?». Недостающая ведомость отвечает на более ранний: «что случилось с каждой запрошенной ячейкой?»