| | |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import org.junit.jupiter.api.Test; |
| | | import com.ruoyi.device.bts.BtsDevelopmentSimulator; |
| | | import com.ruoyi.device.simulator.BtsSimulatorStateStore.BtsHistoryRecord; |
| | | import com.ruoyi.device.simulator.BtsSimulatorStateStore.CollectorRealtimeMeasurement; |
| | | import com.ruoyi.device.simulator.DevelopmentCollectorSimulation.CollectorRealtimeSnapshot; |
| | | import com.battery.device.simulator.BtsDevelopmentSimulator; |
| | | import com.battery.device.simulator.BtsSimulatorStateStore.BtsHistoryRecord; |
| | | import com.battery.device.simulator.BtsSimulatorStateStore.CollectorRealtimeMeasurement; |
| | | import com.battery.device.simulator.DevelopmentCollectorSimulation.CollectorRealtimeSnapshot; |
| | | import com.ruoyi.system.domain.TTestCollectorChannel; |
| | | import com.ruoyi.system.domain.TTest; |
| | | import com.ruoyi.system.domain.TTestBattery; |
| | |
| | | } |
| | | |
| | | @Test |
| | | void ordinaryEditsDoNotMoveReceptionBoundary() |
| | | { |
| | | TTestMapper mapper = mock(TTestMapper.class); |
| | | ITTestService tests = mock(ITTestService.class); |
| | | BtsDevelopmentSimulator simulator = mock(BtsDevelopmentSimulator.class); |
| | | TTest test = test(Date.from(Instant.parse("2026-09-02T04:00:00Z"))); |
| | | test.setUpdateTime(Date.from(Instant.parse("2026-09-02T04:00:10Z"))); |
| | | when(mapper.selectReceivingTestIds()).thenReturn(List.of(1L)); |
| | | when(mapper.selectTestByIdForUpdate(1L)).thenReturn(test); |
| | | when(tests.selectTestById(1L)).thenReturn(test); |
| | | when(simulator.btsRecords(1, 1)).thenReturn(List.of( |
| | | record(1L, "2026-09-02T04:00:05Z"), record(2L, "2026-09-02T04:00:11Z"))); |
| | | when(mapper.selectBtsSampleContentHash(any(), anyString(), any())).thenReturn(null); |
| | | when(mapper.insertBtsSample(any(), any(), any(), anyString(), any(), any(Date.class), anyString(), |
| | | any(Date.class), anyInt(), anyInt(), anyString(), anyString(), isNull(), any(BigDecimal.class), |
| | | any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), any(byte[].class))).thenReturn(1); |
| | | |
| | | new TestDataReceptionServiceImpl(mapper, tests, simulator).captureDevelopmentCabinetRecords(); |
| | | |
| | | verify(mapper, times(2)).insertBtsSample(eq(1L), eq(2L), eq(3L), anyString(), any(), any(Date.class), |
| | | anyString(), any(Date.class), anyInt(), anyInt(), anyString(), anyString(), isNull(), |
| | | any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), |
| | | any(byte[].class)); |
| | | } |
| | | |
| | | @Test |
| | | void capturesOnlyMappedCollectorRealtimeMeasurementsAfterReceptionStart() |
| | | { |
| | | TTestMapper mapper = mock(TTestMapper.class); |
| | | ITTestService tests = mock(ITTestService.class); |
| | | BtsDevelopmentSimulator simulator = mock(BtsDevelopmentSimulator.class); |
| | | TTest test = test(Date.from(Instant.parse("2026-09-02T04:00:00Z"))); |
| | | test.setReceptionBoundaryAtUtc(Date.from(Instant.parse("2026-09-02T04:00:01.500Z"))); |
| | | test.getBatteries().get(0).setCollectorId(9L); |
| | | TTestCollectorChannel mapping = new TTestCollectorChannel(); |
| | | mapping.setMeasurementCode("temperature"); mapping.setChannelCode("S-01"); |
| | |
| | | CollectorRealtimeMeasurement ignored = new CollectorRealtimeMeasurement("dev-sim", "collector-9", "S-02", |
| | | 3L, matched.deviceTime(), matched.deviceTimeRaw(), matched.serverReceivedAt(), "temperature", |
| | | new BigDecimal("25.2"), "℃"); |
| | | CollectorRealtimeMeasurement beforeBoundary = new CollectorRealtimeMeasurement("dev-sim", "collector-9", "S-01", |
| | | 2L, Instant.parse("2026-09-02T04:00:00Z"), "2026-09-02 12:00:00.000", |
| | | Instant.parse("2026-09-02T04:00:01Z"), "temperature", new BigDecimal("24.9"), "℃"); |
| | | when(simulator.collectorRealtime(9)).thenReturn(new CollectorRealtimeSnapshot("collector-9", true, 1000, |
| | | List.of(matched, ignored))); |
| | | List.of(matched, ignored, beforeBoundary))); |
| | | when(mapper.selectCollectorSampleContentHash(any(), anyString(), any(), anyString())).thenReturn(null); |
| | | when(mapper.insertCollectorSample(any(), any(), any(), anyString(), anyString(), any(), any(Date.class), anyString(), |
| | | any(Date.class), anyString(), any(BigDecimal.class), anyString(), any(byte[].class))).thenReturn(1); |
| | |
| | | battery.setBinding(binding); |
| | | TTest test = new TTest(); |
| | | test.setTestId(1L); |
| | | test.setTestStatus("RUNNING"); |
| | | test.setReceptionStatus("RECEIVING"); |
| | | test.setStartedAtUtc(startedAt); |
| | | test.setBatteries(List.of(battery)); |
| | |
| | | |
| | | private static BtsHistoryRecord record(long sequenceId, String deviceTime) |
| | | { |
| | | return new BtsHistoryRecord(sequenceId, Instant.parse(deviceTime), 1d, 2d, 3d, 4d, |
| | | 1, 1, "恒流充电", "cc"); |
| | | Instant parsed = Instant.parse(deviceTime); |
| | | return new BtsHistoryRecord(sequenceId, parsed, 1d, 2d, 3d, 4d, |
| | | 1, 1, "恒流充电", "cc", parsed); |
| | | } |
| | | } |