This commit is contained in:
2026-09-29 18:47:37 +08:00
parent 2c60a29e0f
commit c2927ab9a6
291 changed files with 4008 additions and 6298 deletions
@@ -8,6 +8,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.List;
import java.util.UUID;
import com.baiyue.common.core.outbox.EventDeliveryJournal;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
@@ -16,13 +21,18 @@ class OverseasFeeOutboxRetryTest {
var repository = mock(OverseasFeeOutboxRepository.class);
var client = mock(DirectEventClient.class);
var relay = new OverseasFeeOutboxRelay();
var dataSource = new DriverManagerDataSource("jdbc:h2:mem:" + UUID.randomUUID() + ";MODE=MySQL;DB_CLOSE_DELAY=-1", "sa", "");
var jdbc = new JdbcTemplate(dataSource);
jdbc.execute("CREATE TABLE event_delivery_attempt(attempt_id VARCHAR(36) PRIMARY KEY,service_name VARCHAR(32) NOT NULL,event_type VARCHAR(96) NOT NULL,entry_id VARCHAR(128) NOT NULL,event_id VARCHAR(128),target_name VARCHAR(64) NOT NULL,started_at TIMESTAMP(3) NOT NULL,finished_at TIMESTAMP(3),duration_ms BIGINT,outcome VARCHAR(24) NOT NULL,error_code VARCHAR(64),next_retry_at TIMESTAMP(3))");
ReflectionTestUtils.setField(relay, "journal", new EventDeliveryJournal(jdbc, new DataSourceTransactionManager(dataSource)));
when(repository.dead(anyLong(), anyString(), anyInt(), anyString())).thenReturn(1);
ReflectionTestUtils.setField(relay, "repository", repository);
ReflectionTestUtils.setField(relay, "client", client);
ReflectionTestUtils.setField(relay, "objectMapper", new ObjectMapper());
var row = new LastlegEventOutbox();
row.setId(1L); row.setRetryCount(11); row.setPayloadJson("invalid-json");
row.setId(1L); row.setEventType("BusinessFeeSourceChanged"); row.setRetryCount(11); row.setPayloadJson("invalid-json");
when(repository.pending(eq(50), any(), any())).thenReturn(List.of(row));
when(repository.claim(eq(1L), anyString(), any(), any())).thenReturn(true);
when(repository.claim(eq(1L), anyString(), any())).thenReturn(true);
when(repository.claimed(eq(1L), anyString())).thenReturn(row);
relay.relay();
row.setRetryCount(12);