Gonka GitHub Mirror · PR #1596

Стабилизировать mock-assertions ML-ноды в тестах event listener

Отдельная страница PR с русским переводом и параллельным режимом RU / Original с точным сопоставлением предложений.

Как пользоваться: включите RU / Original и кликните по предложению — соответствующее предложение в другой колонке доскроллится и подсветится.
PR #1596

Стабилизировать mock-assertions ML-ноды в тестах event listener

Оригинал: Stabilize ML node mock assertions in event listener tests

aikuznetsov avatar
aikuznetsovCollaboratorАвтор
2026-08-14

Резюме

  • исправить ненадежный сбой теста оболочки API, из-за которого MockClient.WithTryLock немедленно завершался сбоем из-за конфликта временных блокировок.
  • сериализовать тестовые утверждения с помощью асинхронных фиктивных клиентских вызовов вместо того, чтобы рассматривать фонового работника в полете как провал теста.

Ссылка на ошибку Tes: https://github.com/gonka-ai/gonka/actions/runs/31797682156/job/94758260624?pr=1594

Основная причина

TestRegularPocScenario может участвовать в гонках с nodeStatusQueryWorker: рабочий может удерживать мьютекс фиктивного клиента, пока тест считывает счетчики вызовов. Предыдущий помощник TryLock сразу же завершился сбоем, поскольку TryLock был вызван более одного раза, хотя это ожидаемо в асинхронных тестах.

Проверка

  • попыталась пройти тестирование ./internal/event_listener -run TestRegularPocScenario -count=5 -v локально; локальный запуск Docker завершился неудачно перед выполнением теста на github.com/supranational/blst ( undefined: Message ), что, по-видимому, зависит от локальной цепочки инструментов/архи, а не от этого изменения.
Русский перевод
aikuznetsov avatar
aikuznetsovCollaboratorАвтор
2026-08-14

Резюме

  • исправить ненадежный сбой теста оболочки API, из-за которого MockClient.WithTryLock немедленно завершался сбоем из-за конфликта временных блокировок.
  • сериализовать тестовые утверждения с помощью асинхронных фиктивных клиентских вызовов вместо того, чтобы рассматривать фонового работника в полете как провал теста.

Ссылка на ошибку Tes: https://github.com/gonka-ai/gonka/actions/runs/31797682156/job/94758260624?pr=1594

Основная причина

TestRegularPocScenario может участвовать в гонках с nodeStatusQueryWorker: рабочий может удерживать мьютекс фиктивного клиента, пока тест считывает счетчики вызовов. Предыдущий помощник TryLock сразу же завершился сбоем, поскольку TryLock был вызван более одного раза, хотя это ожидаемо в асинхронных тестах.

Проверка

  • попыталась пройти тестирование ./internal/event_listener -run TestRegularPocScenario -count=5 -v локально; локальный запуск Docker завершился неудачно перед выполнением теста на github.com/supranational/blst ( undefined: Message ), что, по-видимому, зависит от локальной цепочки инструментов/архи, а не от этого изменения.
Оригинал
aikuznetsov avatar
aikuznetsovCollaboratorАвтор
2026-08-14

Summary

fix a flaky API wrapper test failure where MockClient.WithTryLock failed immediately on transient lock contention

  • serialize test assertions with async mock client calls instead of treating an in-flight background worker as a test failure

Tes failure link: https://github.com/gonka-ai/gonka/actions/runs/31797682156/job/94758260624?pr=1594

Root cause

TestRegularPocScenario can race with nodeStatusQueryWorker : the worker may hold the mock client mutex while the test reads call counters. The previous TryLock helper failed immediately with TryLock called more than once , even though this is expected transient contention in async tests.

Verification

  • attempted go test ./internal/event_listener -run TestRegularPocScenario -count=5 -v locally; local Docker runner failed before test execution on github.com/supranational/blst ( undefined: Message ), which appears to be local toolchain/arch-specific and not this change.