diff --git a/deploy/local/launchctl/README.md b/deploy/local/launchctl/README.md index fca4ae7a..b1f55fa0 100644 --- a/deploy/local/launchctl/README.md +++ b/deploy/local/launchctl/README.md @@ -10,10 +10,10 @@ `vehicle-history-app` 的生产高吞吐模板是 TDengine-only: -- 不暴露 DuckDB/EventFileStore 启动变量,避免文件型明细库进入实时消费热路径。 +- 不暴露 DuckDB 或文件型明细库启动变量,避免本地文件索引进入实时消费热路径。 - `TDENGINE_TELEMETRY_FIELDS_ENABLED=false`:默认只写 `raw_frames` 和协议位置表,避免逐字段写放大。 - 通用 RAW 查询默认直接返回 TDengine `raw_frames` 中的 `parsedJson`/`parsedFields`;后续解析器新增字段后,优先通过 replay 或专用解析任务补写 TDengine,而不是让 history 服务依赖本地 archive 挂载。 -- 如果需要兼容旧 `/api/event-history/records` 低层记录接口或逐字段趋势宽表,可以显式打开对应开关;开启后要重新压测 Kafka lag 和 TDengine 写入吞吐。 +- 如果需要逐字段趋势宽表,可以显式打开 `TDENGINE_TELEMETRY_FIELDS_ENABLED`;开启后要重新压测 Kafka lag 和 TDengine 写入吞吐。 ## 生成 plist diff --git a/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java b/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java index 133d7999..a1bf030f 100644 --- a/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java +++ b/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java @@ -25,7 +25,7 @@ import static org.mockito.Mockito.mock; class VehicleAnalyticsAppCompositionTest { @Test - void createsStatsBeansWithoutProtocolListenerOrEventFileStore() { + void createsStatsBeansWithoutProtocolListenerOrFileHistoryStore() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of( KafkaSinkAutoConfiguration.class, diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java index ea82fd46..77ab1871 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java @@ -101,7 +101,9 @@ class PortainerComposeResourceLimitsTest { .doesNotContain("__SHARED_ARCHIVE_PATH__"); assertThat(readme) .doesNotContain("三个服务必须使用同一个 `SINK_ARCHIVE_PATH`") - .doesNotContain("history 服务按同一个 archive root 读取原始帧"); + .doesNotContain("history 服务按同一个 archive root 读取原始帧") + .doesNotContain("EventFileStore") + .doesNotContain("/api/event-history/records"); } @Test @@ -137,7 +139,7 @@ class PortainerComposeResourceLimitsTest { } @Test - void splitRunbookUsesTdengineHistoryVerificationInsteadOfEventFileStore() throws IOException { + void splitRunbookUsesTdengineHistoryVerificationInsteadOfLegacyRecordApi() throws IOException { String splitRunbook = Files.readString(repositoryRoot() .resolve("docs/operations/gb32960-service-split-runbook.md")); diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java index 785a920c..bba184b4 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java @@ -75,7 +75,7 @@ class VehicleHistoryAppCompositionTest { } @Test - void createsTdengineHistoryStorageAndQueryBeansWithoutGb32960TcpServerEventFileStoreOrLocalArchiveSink() { + void createsTdengineHistoryStorageAndQueryBeansWithoutGb32960TcpServerOrLocalArchiveSink() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of( TdengineHistoryAutoConfiguration.class, @@ -118,7 +118,7 @@ class VehicleHistoryAppCompositionTest { } @Test - void createsHistoryIngestorWithoutEventFileStoreForTdengineOnlyRuntime() { + void createsHistoryIngestorForTdengineOnlyRuntime() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(EventHistoryAutoConfiguration.class)) .withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class) diff --git a/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/concurrency/DisruptorEventBusAwaitTest.java b/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/concurrency/DisruptorEventBusAwaitTest.java index d013707a..fbbaea9e 100644 --- a/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/concurrency/DisruptorEventBusAwaitTest.java +++ b/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/concurrency/DisruptorEventBusAwaitTest.java @@ -33,7 +33,7 @@ class DisruptorEventBusAwaitTest { @Test void publishAndAwaitDoesNotInvokeOptionalSinksWhenRequiredSinkIsAbsent() throws Exception { - CapturingSink optionalSink = new CapturingSink("event-file-store"); + CapturingSink optionalSink = new CapturingSink("raw-archive"); try (DisruptorEventBus bus = new DisruptorEventBus(1024, "blocking", List.of(optionalSink))) { assertThatThrownBy(() -> bus.publishAndAwait(event(), "kafka").join()) diff --git a/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/dispatcher/DispatcherDurableAckBoundaryTest.java b/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/dispatcher/DispatcherDurableAckBoundaryTest.java index 25c2c1e6..0512c463 100644 --- a/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/dispatcher/DispatcherDurableAckBoundaryTest.java +++ b/modules/core/ingest-core/src/test/java/com/lingniu/ingest/core/dispatcher/DispatcherDurableAckBoundaryTest.java @@ -31,9 +31,9 @@ class DispatcherDurableAckBoundaryTest { @Test void dispatchAndAwaitFailsWhenNoKafkaSinkAcceptsEvent() throws Exception { - EventSink fileSink = new NamedSink("event-file-store", true); + EventSink rawArchiveSink = new NamedSink("raw-archive", true); - try (Harness harness = new Harness(registryWithHeartbeatHandler(), List.of(fileSink), List.of())) { + try (Harness harness = new Harness(registryWithHeartbeatHandler(), List.of(rawArchiveSink), List.of())) { CompletionStage future = harness.dispatcher.dispatchAndAwait(frame(0x07, "payload")); assertThatThrownBy(() -> future.toCompletableFuture().join()) diff --git a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/EventHistoryEnvelopeIngestorTest.java b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/EventHistoryEnvelopeIngestorTest.java index fcd612be..fd14350e 100644 --- a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/EventHistoryEnvelopeIngestorTest.java +++ b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/EventHistoryEnvelopeIngestorTest.java @@ -105,7 +105,7 @@ class EventHistoryEnvelopeIngestorTest { } @Test - void tryIngestCanWriteTdengineFactsWithoutEventFileStore() { + void tryIngestCanWriteTdengineFactsDirectly() { CapturingTdengineWriter tdengineWriter = new CapturingTdengineWriter(); EventHistoryEnvelopeIngestor ingestor = new EventHistoryEnvelopeIngestor(tdengineWriter); diff --git a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/Gb32960DecodedFrameServiceTest.java b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/Gb32960DecodedFrameServiceTest.java index 600df17f..7973b4d8 100644 --- a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/Gb32960DecodedFrameServiceTest.java +++ b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/Gb32960DecodedFrameServiceTest.java @@ -218,7 +218,7 @@ class Gb32960DecodedFrameServiceTest { } @Test - void snapshotsCanUseTdengineRawFramesWhenEventFileStoreIsDisabled() throws Exception { + void snapshotsUseTdengineRawFrames() throws Exception { String vin = "LNVFC000000000001"; String key = "2026/06/22/GB32960/" + vin + "/tdengine-raw.bin"; String uri = "archive://" + key;