test: replace late portfolio sleep with started and done barriers (WealthLedger/backend#63) #101

Merged
codex-bot merged 1 commits from test/63-deterministic-source-races into develop 2026-10-15 12:23:14 +03:00
Owner

Refs #63

Ветка перебазирована на актуальный develop: PR #98 (#62) уже смержен, producer-only тесты удалены там.

Что изменено

  • tbank-local-reads (late portfolio after connection replacement): вместо delay(20) и локального GET (который не запускает upstream) реальный producer запускается через PortfolioService.request. Barrier started подтверждает, что upstream начат до замены соединения; late.done - барьер завершения вместо таймера.
  • tbank-portfolio-publish (новый): контрольный тест PortfolioRepository.publish на реальной SQLite-транзакции для running attempt текущей revision.

Что проверено

  • npm run verify и npm run test:e2e зелёные (на предыдущей базе; после rebase CI перезапущен).
  • Mutation-проверка: отключение claimed-fence в publish НЕ ловится tbank-local-reads.

Ограничения (issue #63 НЕ закрывается этим PR)

  • Прямого теста на отказ publish при устаревшем attempt написать нельзя: FK tbankSyncWork -> tbankConnection и каскад из put не допускают состояния «работа есть, соединение с этим revision уже другое». Защита обеспечивается двумя слоями, доказать claimed отдельно не получилось. Нужна инъекция падения между шагами репозитория.
  • Не сделаны: sleep-синхронизации в value-history, metadata, catalog, operations-sync, portfolio.service.spec, и rollback fault после первой Portfolio write.
  • Поэтому PR не использует Closes.
Refs #63 Ветка перебазирована на актуальный `develop`: PR #98 (#62) уже смержен, producer-only тесты удалены там. ## Что изменено - `tbank-local-reads` (late portfolio after connection replacement): вместо `delay(20)` и локального GET (который не запускает upstream) реальный producer запускается через `PortfolioService.request`. Barrier `started` подтверждает, что upstream начат до замены соединения; `late.done` - барьер завершения вместо таймера. - `tbank-portfolio-publish` (новый): контрольный тест `PortfolioRepository.publish` на реальной SQLite-транзакции для running attempt текущей revision. ## Что проверено - `npm run verify` и `npm run test:e2e` зелёные (на предыдущей базе; после rebase CI перезапущен). - Mutation-проверка: отключение `claimed`-fence в `publish` НЕ ловится `tbank-local-reads`. ## Ограничения (issue #63 НЕ закрывается этим PR) - Прямого теста на отказ `publish` при устаревшем attempt написать нельзя: FK `tbankSyncWork -> tbankConnection` и каскад из `put` не допускают состояния «работа есть, соединение с этим revision уже другое». Защита обеспечивается двумя слоями, доказать `claimed` отдельно не получилось. Нужна инъекция падения между шагами репозитория. - Не сделаны: sleep-синхронизации в `value-history`, `metadata`, `catalog`, `operations-sync`, `portfolio.service.spec`, и rollback fault после первой Portfolio write. - Поэтому PR не использует `Closes`.
codex-bot added 1 commit 2026-10-15 11:51:38 +03:00
test: replace late portfolio sleep with started and done barriers (WealthLedger/backend#63)
Backend verify / verify (pull_request) Successful in 5m21s
Backend verify / commits (pull_request) Successful in 30s
Backend verify / security (pull_request) Successful in 10s
efc13a9f67
codex-bot merged commit 7bc7d8ddec into develop 2026-10-15 12:23:14 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#101