scripts/

directory
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: AGPL-3.0

README

tests/newman/scripts — Newman runner

Скрипты newman regression pipeline:

  • gen.py — генератор Postman-коллекций из cases/*.py
  • run.sh — full-run по всем сервисам или одному (SERVICE=iam-account)

Вердиктный слой ВЕНДОРЕН СЮДА, а не лежит в корне чужого дерева. assert-suites-green.sh, exec-coverage.py и coverage.py судят в дереве платформы семь её наборов и потому не принадлежат ни одному; набор службы — восьмой, и он уехал в отдельный репозиторий, где подъём по дереву корня монорепо не достаёт by construction. Без слоя прогонщик, генератор и сверщик кейсов отказывают ПЕРВОЙ СТРОКОЙ, до любого обращения к стенду.

Поэтому слой и общий слой отбора (../kacholib/) здесь СКОПИРОВАНЫ, а расхождение копии с оригиналом держит vendor_provenance_test.py: ../vendor-provenance.json несёт отпечаток каждого файла и ПЕРЕЧИСЛЯЕТ каждую подстановку — что стояло в оригинале, что стоит здесь и почему. Правка копии без правки записи роняет пробу с именем файла; сверка с самим оригиналом — по ручке KANAME_VENDOR_UPSTREAM, и перепись на каждом прогоне называет, сверялась она или нет. Подтянуть копию заново — vendor_provenance_sync.py --upstream <дерево> --pull.

Сверку с оригиналом конвейер ТРЕБУЕТ, а не предлагает (с 2026-09-12). Прежде ручка была единственным входом, и при незаданной ручке держатель печатал «сверено с оригиналом 0» — правду — и выходил кодом 0: конвейер читает КОД, поэтому неизмеренная ось выглядела ровно как измеренная и не измерилась ни разу. Теперь --require-upstream даёт при отсутствии дерева код 3 — третий исход, не проход и не находка, — а дерево платформы выбирается в e2e-newman.yml по ревизии, объявленной в записи ЕДИНСТВЕННЫМ местом. Провязку держит vendor_upstream_wiring_test.py — ВОСЕМЬ осей: пин в годной форме · пин объявлен один раз, и это дом записи · сверка потребована · дерево дано тому же шагу · дерево берётся по пину из записи · выборка в подкаталог и раньше сверки · КОД ДЕРЖАТЕЛЯ ДОЕЗЖАЕТ до вердикта шага · ПОСЛАБЛЕНИЕ у выборки спарено с тем, кто ловит отказ. Судит она РАЗОБРАННОЕ описание процесса: флаг встречается в комментариях, и проверка подстрокой зеленела бы на собственном объяснении. Разбор у пробы СВОЙ, а pyyaml — контроль: общий прогонщик проб третьего исхода для гейта не знает, и обязательная зависимость давала бы красное о дереве там, где вердикта нет.

  • validate-cases.py — сверщик КАТАЛОГА кейсов: перепись docs/CASES-INDEX.md против дерева (итог и по каждому модулю) + покрытие каждого идентификатора. Тело общее на дерево (tests/newman/kacholib/casesindex.py), здесь — только решения набора; доказательство инъекцией — casesindex_test.py. Уникальность идентификаторов держит не он, а хребет генератора (_scan_suite): дубль роняет сам gen.py

Форма базового удостоверения (#1253) — объявлена ОДИН раз в ../credential-secret-form.json; читают её двое, и вторая копия образца не заводится:

  • credsecretmint/ — программа чеканки настоящим кодом продукта (ids.NewID + credsecret.Mint) и Go-проба form_test.go, сверяющая объявление с тем, что продукт ЧЕКАНИТ. Идёт обычным make test-unit (её вторым прогоном, go test ./...), отдельного вызова не требует;
  • gen.py — helper credential_secret_pattern(вид) подставляет вид и вставляет образец в порождаемый скрипт кейса.

Самопроверки (стенд не нужен; одна провязана в конвейер, вторая — нет):

  • selftest_basic_access_token.py — настоящий newman по настоящей коллекции против подставного края; секрет в законном ответе чеканит продукт. Законный вход обязан пройти молча, девять инъекций — упасть, назвав себя. В ЭТОМ РЕПОЗИТОРИИ НЕ ПРОВЯЗАНА, и это долг, а не норма. Прежняя редакция адресовала её «e2e-newman.yml, job plan, шаг „форма базового удостоверения сверена с чеканкой продукта"». Координата мёртвая по трём осям сразу, и у каждой свой предикат: заданий у процесса ДВА — suite и stand; названного шага нет ни в одном процессе дерева (grep -rl "форма базового удостоверения" .github/ → ни одного файла); держателя internal/repohygiene здесь нет вовсе (git ls-files | grep -c "^internal/repohygiene/" → 0) — он живёт в дереве платформы. Зовёт эту самопробу СЕГОДНЯ ноль мест: имя встречается в трёх файлах (git grep -l selftest_basic_access_token | wc -l → 3), и это она сама, эта страница и проза в комментарии credsecretmint/main.go. Про предикат #1253 и гейт платформы всё сказанное верно ТАМ; здесь производителя зелёного утверждения нет, и написанное иначе читалось бы как выполненная провязка. Вердикт стоит на ПОЛУ: «упавших ноль» приходит и от полосы, где нечего было исполнять, поэтому законный вход обязан быть ИСПОЛНЕН, а не только не упасть. Пол сам есть утверждение, и его доказательство (--self-test, девять осей по три утверждения) идёт ПЕРВЫМ действием каждого запуска — отдельной строкой в конвейере оно было бы вторым местом об одном предмете и снималось бы молча, а вызывающего по построению снять нельзя, не сняв сам производитель;
  • selftest_token_facade_forms.py — в конвейер НЕ провязана; предмет своей задачи, здесь не чинится. Перепись по дереву на день провязки (единица счёта — отслеживаемый git файл tests/newman/scripts/selftest_*.py): самопроверок 15, без единого вызывающего 5. Число — ориентир, а не гейт: перемеряйте предикатом из шапки internal/repohygiene/basiccredentialproofrun_test.go;

Третий исход набора — «условие не создано», и он отличим МАШИННО:

  • gen.py::PRECONDITION_MARK — единственный производитель метки. Её несёт утверждение стража адреса (require_env_url), которое падает тогда и только тогда, когда прогонщик не инъектировал переменную с адресом поверхности;
  • tests/newman/scripts/assert-suites-green.sh — читает метку у производителя ЭТОГО набора (не выписывает её) и считает помеченное ОТДЕЛЬНОЙ строкой. Кодов возврата три: 0 зелено, 1 находка, 3 условие не создано. Тройка НИКОГДА не приходит вместе с находкой — иначе категория стала бы маской. Вычитания метка не заводит: помеченное остаётся в общем числе падений, прогон остаётся ненулевым;
  • tests/newman/scripts/precondition_mark_test.py (+ precondition_mark_injection_test.py) — держат единственность производителя: кейс, поставивший метку себе, вывел бы своё падение из находок без чьего-либо решения;
  • tests/newman/scripts/precondition_outcome_test.py — гоняет НАСТОЯЩИЙ вердиктный гейт на синтетических отчётах и утверждает ПАРУ «текст + код возврата» по каждой оси. newman для него не нужен. Все три идут прогонщиком .github/scripts/run-python-probes.py по суффиксу _test.py, отдельного шага в конвейере не требуют.

Адрес собственных REST-фронтов службы приходит от deploy/scripts/ own-rest-front-address.py: порт — ПО ИМЕНИ порта Service, транспорт и режим проверки клиента — из переменных процесса, всё ОДНИМ обращением к посадке. Оттуда же приходит РЕШЕНИЕ, требует ли фронт проверенного клиентского листа на рукопожатии: прогонщик его не вычисляет — предикат живёт у продукта (MTLSConfig.InternalRESTRequiresClientCert), а вторая его копия разошлась бы с первой молча. Транспорт этого вопроса не решает: фронт под TLS бывает и односторонним, и на нём лист подан впустую. Прогонщик ничего из этого не выписывает, и это держит гейт deploy/scripts/assert-own-front-address-is-read.py.

Структурно адаптировано от kacho-vpc/tests/newman/scripts/.

Координаты в прозе: ДВА дерева, и который из них — сказано здесь один раз

Набор приехал из монорепо PRO-Robotech/kacho вместе со своей прозой, и проза ссылается на оба дерева сразу. Перечислять это у каждого упоминания значило бы завести сотни мест об одном предмете, поэтому соглашение объявлено ЗДЕСЬ, один раз.

Резолвятся в этом репозитории (и обязаны резолвиться — мёртвая координата тут есть находка): tests/newman/**, internal/**, cmd/**, pkg/** нет — фундамент приезжает модулем, tools/** кроме названного ниже, deploy/Chart.yaml и deploy/values*.yaml, .github/**.

НЕ резолвятся и не должны — это координаты ДЕРЕВА ПЛАТФОРМЫ, где живут остальные семь наборов и машинерия её стенда. Перепись на момент вендоринга вердиктного слоя:

префикс вхождений в прозе набора что это
deploy/scripts/ 270 подъём стенда платформы, проброс переменных, гейты посадки и шардов
internal/repohygiene/ 25 гейты дерева платформы
tools/pythonprobes 22 гейт проводки проб платформы; ЗДЕСЬ его нет — см. долг ниже
gateway/ 20 край платформы: он производит свойства, которые проверяют 40 модулей кейсов из 41
proto/kaname/ 12 контракты; сюда они приезжают модулем платформы, а не файлами
services/{vpc,storage,compute,nlb,registry}/ 10 соседние наборы и их домены

КТО ЭТИ ПРОБЫ ЗОВЁТ. .github/workflows/e2e-newman.yml, задание suite (отображаемое имя — «набор — оснастка, пробы, покрытие, долг»; ключ и имя разные, и адресовать надо КЛЮЧОМ: по отображаемому имени задание не выбирается) — шагом python3 .github/scripts/run-python-probes.py, и перед ним отдельным шагом идёт --self-test прогонщика: способность вердикта упасть доказывается ДО того, как ему поверят. Состав прогонщик собирает ОБХОДОМ отслеживаемого дерева и ни одного файла по имени не называет, поэтому новая проба попадает под прогон по построению, а не после того, как кто-то вспомнит.

ДОЛГ, НАЗВАННЫЙ ЧИСЛОМ. Проводку проб — «всякий отслеживаемый файл *_test.py покрыт образцом прогонщика» — в дереве платформы держит гейт tools/pythonprobes; в этом репозитории его НЕТ. Половина свойства здесь есть и работает: прогонщик печатает перепись по каждому образцу и отказывает на пустом обходе. Вторая половина (файл проб, которого не покрывает ни один образец) сегодня не держится ничем, и это надо читать как долг, а не как норму.

Directories

Path Synopsis
credsecretmint — печатает базовое удостоверение, ОТЧЕКАНЕННОЕ КОДОМ ПРОДУКТА.
credsecretmint — печатает базовое удостоверение, ОТЧЕКАНЕННОЕ КОДОМ ПРОДУКТА.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL