From 9fed155adefdb73dd349ff99a897f2d2da5ea03e Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期五, 28 八月 2026 17:51:32 +0800
Subject: [PATCH] 修复:恢复 Redis 模拟器嵌套状态
---
ruoyi-admin/src/test/java/com/ruoyi/config/RedisStateStoreTest.java | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/ruoyi-admin/src/test/java/com/ruoyi/config/RedisStateStoreTest.java b/ruoyi-admin/src/test/java/com/ruoyi/config/RedisStateStoreTest.java
index b8884ef..94f9d19 100644
--- a/ruoyi-admin/src/test/java/com/ruoyi/config/RedisStateStoreTest.java
+++ b/ruoyi-admin/src/test/java/com/ruoyi/config/RedisStateStoreTest.java
@@ -15,6 +15,8 @@
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.device.model.DeviceWorkStatus;
import com.ruoyi.device.simulator.BtsSimulatorStateStore.ChannelState;
+import com.ruoyi.device.simulator.BtsSimulatorStateStore.ChannelTombstone;
+import com.ruoyi.device.simulator.BtsSimulatorStateStore.CollectorState;
import com.ruoyi.device.simulator.BtsSimulatorStateStore.DeviceState;
import com.ruoyi.device.simulator.BtsSimulatorStateStore.SimulatorState;
import com.ruoyi.device.discovery.DeviceDiscoveryCandidateStore.CabinetCandidate;
@@ -40,6 +42,26 @@
}
@Test
+ void restoresNestedSimulatorStateFromRedisSerializer()
+ {
+ SimulatorState expected = new SimulatorState(1,
+ List.of(new DeviceState(2, "127.0.0.3", false,
+ List.of(new ChannelState(1, true, DeviceWorkStatus.WORKING)))),
+ List.of(new CollectorState(3, "dev-sim-collector-3", "127.0.1.3",
+ "02:43:00:00:00:03", "模拟采集器", "开发模拟器",
+ "Virtual Collector", 3, true)),
+ 3, 4, List.of(new ChannelTombstone(1, "127.0.0.2", 4, 2)));
+ FastJson2JsonRedisSerializer<Object> serializer = new FastJson2JsonRedisSerializer<>(Object.class);
+ AtomicReference<Object> stored = new AtomicReference<>(
+ serializer.deserialize(serializer.serialize(JSON.toJSONString(expected))));
+
+ SimulatorState restored = store(stored).loadOrInitialize(state(1, "127.0.0.2"));
+
+ assertEquals(expected, restored);
+ assertEquals(DeviceWorkStatus.WORKING, restored.devices().get(0).channels().get(0).workStatus());
+ }
+
+ @Test
void rejectsIncompatibleVersionWithoutOverwritingIt()
{
AtomicReference<Object> stored = new AtomicReference<>("{\"version\":2,\"devices\":[],"
--
Gitblit v1.7.1