test(webhook): re-enable WebhookE2ETest через no-op scheduler + manual ticks
Fix CI flakiness: тест больше не полагается на @Scheduled тики каждые 200ms. NoSchedulingConfig подменяет TaskScheduler на no-op stub — @Scheduled методы регистрируются, но никогда не запускаются. Тест вручную дёргает dispatcher.matchTick() / sendTick() — synchronous, deterministic, нет race с background threads. Что изменилось: - @Disabled убран - Inject WebhookDispatcher, manual matchTick + sendTick после setup - Await timeouts: 60s → 5s (manual ticks → нет 200ms scheduler delay) - Pool=4 / send-interval-ms / match-interval-ms убраны (не нужны) - Send-timeout-ms 1000 → 2000 (с запасом, но scheduler не работает) - @AutoConfigureMockMvc сохранён, port=RANDOM_PORT, allowed-hosts тот же Side-fix: @Autowired на Spring constructor WebhookTestPingService (добавлен ранее package-private constructor для unit-тестов сделал выбор конструктора неоднозначным; Spring 6 strict — требует explicit @Autowired когда есть >1 candidate). Локально: 2/2 PASSED 1.85s (было 9.9s — 5× быстрее). CI: 14 e2e всех тестов passed (Smoke, OutboxKafka, Auth, Bitemporal, Webhook).
This commit is contained in:
+5
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -57,7 +58,11 @@ public class WebhookTestPingService {
|
||||
* Spring constructor — собирает HttpClient с дефолтным connect timeout, читает
|
||||
* allowed-hosts CSV из config. Тестовый код использует package-private
|
||||
* конструктор {@link #WebhookTestPingService(ObjectMapper, List, HttpClient)}.
|
||||
*
|
||||
* <p>{@code @Autowired} обязателен — без него Spring не знает что выбрать
|
||||
* между этим и package-private constructor для тестов.
|
||||
*/
|
||||
@Autowired
|
||||
public WebhookTestPingService(
|
||||
ObjectMapper objectMapper,
|
||||
@Value("${ordinis.webhook.allowed-hosts:}") String allowedHostsCsv) {
|
||||
|
||||
Reference in New Issue
Block a user