package com.common.service; import com.influx.InfluxDBClient; import com.influx.raw.RawInfluxMetrics; import org.junit.jupiter.api.Test; import java.time.Instant; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.mockito.Mockito.mock; class InfluxSyslogServiceV2Test { @Test void shanghaiMidnightChangesDailyMeasurement() { assertEquals(Arrays.asList("syslog_security_20260813"), InfluxSyslogService.generateMeasurementNames(Instant.parse("2026-08-13T15:59:59.999Z"),Instant.parse("2026-08-13T16:00:00Z"))); assertEquals(Arrays.asList("syslog_security_20260814"), InfluxSyslogService.generateMeasurementNames(Instant.parse("2026-08-13T16:00:00Z"),Instant.parse("2026-08-13T16:00:00.001Z"))); } @Test void dualReadPrefersV2AndRemovesInternalMarker() { RawInfluxMetrics metrics=new RawInfluxMetrics(); InfluxSyslogService service=new InfluxSyslogService(mock(InfluxDBClient.class),metrics); Map v1=row("V1","old",Instant.parse("2026-08-13T16:00:00.002Z")); Map v2=row("V2","new",Instant.parse("2026-08-13T16:00:00.001Z")); List> merged=service.merge(Arrays.asList(v1,v2)); assertEquals(1,merged.size()); assertEquals("new",merged.get(0).get("message")); assertFalse(merged.get(0).containsKey("__raw_schema")); assertEquals(1L,metrics.snapshot().get("influx_dual_read_duplicate_total")); assertEquals(1L,metrics.snapshot().get("influx_dual_read_conflict_total")); } @Test void duplicateV2FallbackPointsSelectEarliestTime() { InfluxSyslogService service=new InfluxSyslogService(mock(InfluxDBClient.class),new RawInfluxMetrics()); Map later=row("V2","later",Instant.parse("2026-08-13T16:00:00.002Z")); Map earlier=row("V2","earlier",Instant.parse("2026-08-13T16:00:00.001Z")); assertEquals("earlier",service.merge(Arrays.asList(later,earlier)).get(0).get("message")); } private Map row(String schema,String message,Instant time){Map row=new LinkedHashMap<>();row.put("uuid","20260814-event");row.put("receive_time","20260814000000000");row.put("message",message);row.put("time",time);row.put("__raw_schema",schema);return row;} }