refactor: remove event file store contracts
This commit is contained in:
@@ -270,6 +270,26 @@ class MavenModuleProfileTest {
|
||||
.isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void legacyEventFileStoreContractsAreRemovedFromProductionSources() throws Exception {
|
||||
Path root = repositoryRoot();
|
||||
|
||||
assertThat(Files.exists(root.resolve("modules/core/ingest-api/src/main/java/com/lingniu/ingest/api/history")))
|
||||
.isFalse();
|
||||
assertThat(Files.exists(root.resolve(
|
||||
"modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/EventHistoryController.java")))
|
||||
.isFalse();
|
||||
assertThat(Files.exists(root.resolve(
|
||||
"modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/TelemetryEnvelopeRecordMapper.java")))
|
||||
.isFalse();
|
||||
assertThat(productionJavaContains("EventFileStore"))
|
||||
.isFalse();
|
||||
assertThat(productionJavaContains("EventFileRecord"))
|
||||
.isFalse();
|
||||
assertThat(productionJavaContains("EventFileQuery"))
|
||||
.isFalse();
|
||||
}
|
||||
|
||||
private static Document rootPom() throws Exception {
|
||||
return modulePom("pom.xml");
|
||||
}
|
||||
@@ -411,6 +431,22 @@ class MavenModuleProfileTest {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean productionJavaContains(String token) throws Exception {
|
||||
try (Stream<Path> files = Files.walk(repositoryRoot().resolve("modules"))) {
|
||||
return files
|
||||
.filter(Files::isRegularFile)
|
||||
.filter(path -> path.toString().endsWith(".java"))
|
||||
.filter(path -> !path.toString().contains("/src/test/"))
|
||||
.anyMatch(path -> {
|
||||
try {
|
||||
return Files.readString(path).contains(token);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("failed to read " + path, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static Element firstDirectChild(Element parent, String tagName) {
|
||||
NodeList children = parent.getChildNodes();
|
||||
for (int i = 0; i < children.getLength(); i++) {
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.lingniu.ingest.historyapp;
|
||||
import com.lingniu.ingest.api.consumer.EnvelopeConsumerProcessor;
|
||||
import com.lingniu.ingest.api.consumer.EnvelopeDeadLetterSink;
|
||||
import com.lingniu.ingest.api.consumer.EnvelopeIngestResult;
|
||||
import com.lingniu.ingest.api.history.EventFileStore;
|
||||
import com.lingniu.ingest.eventhistory.EventHistoryEnvelopeIngestor;
|
||||
import com.lingniu.ingest.eventhistory.Gb32960DecodedFrameService;
|
||||
import com.lingniu.ingest.eventhistory.Gb32960FrameController;
|
||||
@@ -19,14 +18,9 @@ import com.lingniu.ingest.sink.kafka.KafkaEnvelopeDeadLetterSink;
|
||||
import com.lingniu.ingest.sink.kafka.KafkaEventSink;
|
||||
import com.lingniu.ingest.sink.kafka.KafkaEnvelopeConsumerRunner;
|
||||
import com.lingniu.ingest.sink.kafka.KafkaSinkProperties;
|
||||
import com.lingniu.ingest.sink.kafka.proto.ParseStatusProto;
|
||||
import com.lingniu.ingest.sink.kafka.proto.RawArchiveRef;
|
||||
import com.lingniu.ingest.sink.kafka.proto.RawFrameFactPayload;
|
||||
import com.lingniu.ingest.sink.kafka.proto.VehicleEnvelope;
|
||||
import com.lingniu.ingest.sink.kafka.KafkaSinkAutoConfiguration;
|
||||
import com.lingniu.ingest.tdenginehistory.TdengineHistorySchema;
|
||||
import com.lingniu.ingest.tdenginehistory.TdengineHistoryWriter;
|
||||
import com.lingniu.ingest.tdenginehistory.TdengineRawFrameRow;
|
||||
import com.lingniu.ingest.tdenginehistory.config.TdengineHistoryAutoConfiguration;
|
||||
import org.apache.kafka.clients.producer.KafkaProducer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -37,16 +31,12 @@ import org.springframework.context.annotation.Bean;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
class VehicleHistoryAppCompositionTest {
|
||||
|
||||
@@ -171,32 +161,6 @@ class VehicleHistoryAppCompositionTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyIngestorIgnoresEventFileStoreBeanAndWritesTdengineOnly() {
|
||||
EventFileStore eventFileStore = mock(EventFileStore.class);
|
||||
CapturingTdengineWriter writer = new CapturingTdengineWriter();
|
||||
|
||||
new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(EventHistoryAutoConfiguration.class))
|
||||
.withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class)
|
||||
.withBean(EventFileStore.class, () -> eventFileStore)
|
||||
.withBean(TdengineHistoryWriter.class, () -> writer)
|
||||
.withBean(EnvelopeDeadLetterSink.class, () -> mock(EnvelopeDeadLetterSink.class))
|
||||
.withPropertyValues(
|
||||
"lingniu.ingest.event-history.enabled=true",
|
||||
"lingniu.ingest.sink.kafka.consumer.enabled=false")
|
||||
.run(context -> {
|
||||
EventHistoryEnvelopeIngestor ingestor = context.getBean(EventHistoryEnvelopeIngestor.class);
|
||||
|
||||
ingestor.tryIngest(rawFrameEnvelope().toByteArray());
|
||||
|
||||
verify(eventFileStore, never()).appendAll(any());
|
||||
assertThat(writer.rawFrames)
|
||||
.extracting(TdengineRawFrameRow::frameId)
|
||||
.containsExactly("raw-frame-1");
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static KafkaProducer<String, byte[]> kafkaProducer() {
|
||||
return mock(KafkaProducer.class);
|
||||
@@ -226,43 +190,4 @@ class VehicleHistoryAppCompositionTest {
|
||||
return binding;
|
||||
}
|
||||
|
||||
private static VehicleEnvelope rawFrameEnvelope() {
|
||||
return VehicleEnvelope.newBuilder()
|
||||
.setSchemaVersion("1.0")
|
||||
.setEventId("raw-event-1")
|
||||
.setVin("VINRAW001")
|
||||
.setSource("JT808")
|
||||
.setEventTimeMs(1_782_112_400_000L)
|
||||
.setIngestTimeMs(1_782_112_401_000L)
|
||||
.setRawArchive(RawArchiveRef.newBuilder()
|
||||
.setUri("archive://jt808/2026/06/29/raw-frame-1.bin")
|
||||
.setSizeBytes(68))
|
||||
.setRawFrameFact(RawFrameFactPayload.newBuilder()
|
||||
.setFrameId("raw-frame-1")
|
||||
.setVehicleKey("jt808:013800000000")
|
||||
.setVin("VINRAW001")
|
||||
.setPhone("013800000000")
|
||||
.setMessageId(0x0200)
|
||||
.setRawUri("archive://jt808/2026/06/29/raw-frame-1.bin")
|
||||
.setRawSizeBytes(68)
|
||||
.setParseStatus(ParseStatusProto.PARSE_STATUS_SUCCEEDED))
|
||||
.build();
|
||||
}
|
||||
|
||||
private static final class CapturingTdengineWriter implements TdengineHistoryWriter {
|
||||
private final List<TdengineRawFrameRow> rawFrames = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void appendRawFrames(List<TdengineRawFrameRow> rows) {
|
||||
rawFrames.addAll(rows);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendLocations(List<com.lingniu.ingest.tdenginehistory.TdengineLocationRow> rows) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendTelemetryFields(List<com.lingniu.ingest.tdenginehistory.TdengineTelemetryFieldRow> rows) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user