From 7259e265b9237286996b09da03038ea5a133e1e0 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 17:45:07 +0800
Subject: [PATCH] 收敛模拟器为设备事实与实时观测
---
ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java | 47 +++++++++++++++++++++++++++++++----------------
1 files changed, 31 insertions(+), 16 deletions(-)
diff --git a/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java b/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
index a9fa7f8..91d10a9 100644
--- a/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
+++ b/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
@@ -30,6 +30,30 @@
class BtsDevelopmentSimulatorControllerTest
{
@Test
+ void restChangesSoftwareAndCollectorChannelFactsAndRetiresPlayback() throws Exception
+ {
+ try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
+ {
+ var mvc = org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup(controller(simulator)).build();
+ mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put("/dev/bts-simulator/software")
+ .contentType("application/json").content("{\"accessible\":false}"))
+ .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isOk());
+ assertFalse(simulator.snapshot().softwareAccessible());
+ mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put(
+ "/dev/bts-simulator/collectors/1/channels/S-01/status")
+ .contentType("application/json").content("{\"workStatus\":\"PROTECTED\"}"))
+ .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isOk());
+ assertEquals(DeviceWorkStatus.PROTECTED, simulator.snapshot().collectors().get(0).channels().get(0).workStatus());
+ for (String path : List.of("/devices/1/channels/1/playback/play", "/devices/1/channels/1/playback/next-step"))
+ mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post("/dev/bts-simulator" + path))
+ .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isNotFound());
+ for (String path : List.of("/collectors/1/history", "/devices/1/channels/1/records"))
+ mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get("/dev/bts-simulator" + path))
+ .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isNotFound());
+ }
+ }
+
+ @Test
void controllerUpdatesDeviceAndChannelState() throws Exception
{
try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
@@ -119,55 +143,46 @@
}
@Test
- void controllerExposesCollectorRealtimeAndPagedHistory() throws Exception
+ void controllerExposesOnlyCurrentCollectorMeasurements() throws Exception
{
try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
{
BtsDevelopmentSimulatorController controller = controller(simulator);
- controller.configureCollectorSampling(1,
- new BtsDevelopmentSimulatorController.CollectorSamplingCommand(
- 100, List.of(), null, null, false));
controller.configureCollectorChannel(1, "S-01",
new BtsDevelopmentSimulatorController.CollectorChannelCommand(List.of(
new BtsDevelopmentSimulatorController.CollectorMetricCommand(
"temperature", new BigDecimal("27.2"), "℃"),
new BtsDevelopmentSimulatorController.CollectorMetricCommand(
"custom_voltage", new BigDecimal("1.234"), "V"))));
- simulator.advanceCollectors(Instant.parse("2026-08-29T01:00:00Z"));
var realtime = controller.collectorRealtime(1);
- var firstPage = controller.collectorHistory(1, 0, 2);
assertTrue(realtime.online());
assertTrue(realtime.measurements().stream().anyMatch(item -> item.metricCode().equals("custom_voltage")));
- assertEquals(2, firstPage.records().size());
- assertTrue(firstPage.hasMore());
- assertEquals(2, firstPage.nextOffset());
+
}
}
@Test
- void controllerPowersAllSimulatorDevicesWithoutResettingHistory() throws Exception
+ void controllerChangesOnlineFactsWithoutResettingChannelStatus() throws Exception
{
try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
{
BtsDevelopmentSimulatorController controller = controller(simulator);
- simulator.advanceCollectors(Instant.now());
- long historyCount = controller.state().collectors().get(0).historyRecordCount();
+ simulator.updateChannel(1, 1, true, DeviceWorkStatus.PAUSED);
var poweredOff = controller.setPower(
new BtsDevelopmentSimulatorController.SimulatorPowerCommand(false));
- assertTrue(poweredOff.devices().stream().noneMatch(device -> device.online()
- || device.channels().stream().anyMatch(channel -> channel.online())));
+ assertTrue(poweredOff.devices().stream().noneMatch(device -> device.online()));
assertTrue(poweredOff.collectors().stream().noneMatch(collector -> collector.online()));
- assertEquals(historyCount, poweredOff.collectors().get(0).historyRecordCount());
+ assertEquals(DeviceWorkStatus.PAUSED, poweredOff.devices().get(0).channels().get(0).workStatus());
var poweredOn = controller.setPower(
new BtsDevelopmentSimulatorController.SimulatorPowerCommand(true));
assertTrue(poweredOn.devices().stream().allMatch(device -> device.online()
&& device.channels().stream().allMatch(channel -> channel.online()
- && channel.workStatus() == DeviceWorkStatus.STOPPED)));
+)));
assertTrue(poweredOn.collectors().stream().allMatch(collector -> collector.online()));
}
}
--
Gitblit v1.7.1