This commit is contained in:
2026-08-25 14:46:06 +08:00
parent 5abc7543ae
commit f325d57fc1
106 changed files with 3682 additions and 450 deletions
@@ -1,6 +1,11 @@
package com.baiyue.eventbridge.service;
import com.baiyue.eventbridge.domain.BridgeDeliveryAttempt;
import com.baiyue.eventbridge.domain.BridgeInbox;
import com.baiyue.eventbridge.mapper.BridgeDeliveryAttemptMapper;
import com.baiyue.eventbridge.mapper.BridgeInboxMapper;
import com.baiyue.eventbridge.metrics.EventBridgeMetrics;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import org.apache.ibatis.annotations.Update;
@@ -11,15 +16,31 @@ import static org.mockito.Mockito.*;
class EventReplayServiceTest {
private final BridgeInboxMapper mapper = mock(BridgeInboxMapper.class);
private final BridgeDeliveryAttemptMapper attemptMapper = mock(BridgeDeliveryAttemptMapper.class);
private final SimpleMeterRegistry registry = new SimpleMeterRegistry();
private final EventBridgeMetrics metrics = new EventBridgeMetrics(registry);
private final EventReplayService service = service();
@Test
void requeuesDeadEventWithAuditReason() {
when(mapper.replayDead(eq("event-1"), contains("incident-42"))).thenReturn(1);
BridgeInbox event = new BridgeInbox();
event.setEventId("event-1"); event.setSourceRegion("CN"); event.setTargetRegion("OVERSEAS");
event.setEventType(com.baiyue.common.event.EventTypes.FIRST_LEG_LOADING_PLAN_COMPLETED);
when(mapper.selectById("event-1")).thenReturn(event);
when(mapper.nextAttemptNo("event-1")).thenReturn(4);
service.replayDead("event-1", "operator-7", "incident-42 approved");
verify(mapper).replayDead(eq("event-1"), contains("operator-7"));
var captor = org.mockito.ArgumentCaptor.forClass(BridgeDeliveryAttempt.class);
verify(attemptMapper).insert(captor.capture());
assertThat(captor.getValue().getAttemptNo()).isEqualTo(4);
assertThat(captor.getValue().getStatus()).isEqualTo("MANUAL_REPLAY");
assertThat(captor.getValue().getErrorMessage()).contains("operator-7", "incident-42");
assertThat(registry.get(EventBridgeMetrics.TRANSPORT_METRIC)
.tags("target_region", "OVERSEAS", "event_type", event.getEventType(),
"result", "MANUAL_REPLAY").counter().count()).isEqualTo(1.0);
}
@Test
@@ -43,6 +64,8 @@ class EventReplayServiceTest {
private EventReplayService service() {
EventReplayService service = new EventReplayService();
ReflectionTestUtils.setField(service, "inboxMapper", mapper);
ReflectionTestUtils.setField(service, "attemptMapper", attemptMapper);
ReflectionTestUtils.setField(service, "metrics", metrics);
return service;
}
}