package com.ruoyi.device.bts;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import java.time.Duration;
|
import java.time.ZoneId;
|
import org.junit.jupiter.api.Test;
|
import com.ruoyi.device.model.DeviceWorkStatus;
|
import com.ruoyi.device.simulator.InMemoryBtsSimulatorStateStore;
|
|
/** Ticket13:开发检测柜历史合同与实时快照保持两条独立路径。 */
|
class BtsDevelopmentSimulatorHistoryContractTest
|
{
|
@Test
|
void workingObservationProducesPagedHistoryWithoutControlCommand() throws Exception
|
{
|
try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0, new InMemoryBtsSimulatorStateStore()))
|
{
|
simulator.updateChannel(1, 1, true, DeviceWorkStatus.WORKING);
|
try (BtsDeviceAdapter adapter = new BtsDeviceAdapter("dev-sim",
|
new BtsTcpTransport("127.0.0.1", simulator.port(), Duration.ofSeconds(2), Duration.ofSeconds(2)),
|
new BtsXmlCodec("dev-sim", ZoneId.of("Asia/Hong_Kong"))))
|
{
|
var channel = adapter.discoverChannels().stream().filter(item -> item.identity().chlid() == 1).findFirst().orElseThrow();
|
adapter.inquire(java.util.Set.of(channel.identity()));
|
var availability = adapter.inquireHistory(java.util.Set.of(channel.identity())).get(0);
|
assertFalse(availability.btsTestId().isBlank());
|
var page = adapter.downloadHistory(channel.identity(), availability.btsTestId(), 1, 1);
|
assertEquals(1, page.samples().size());
|
assertEquals(1, page.samples().get(0).sequenceId());
|
}
|
}
|
}
|
|
@Test
|
void historySurvivesSimulatorRestartForResume() throws Exception
|
{
|
InMemoryBtsSimulatorStateStore store = new InMemoryBtsSimulatorStateStore();
|
try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0, store))
|
{
|
simulator.updateChannel(1, 1, true, DeviceWorkStatus.WORKING);
|
try (BtsDeviceAdapter adapter = new BtsDeviceAdapter("dev-sim",
|
new BtsTcpTransport("127.0.0.1", simulator.port(), Duration.ofSeconds(2), Duration.ofSeconds(2)),
|
new BtsXmlCodec("dev-sim", ZoneId.of("Asia/Hong_Kong"))))
|
{
|
adapter.inquire(java.util.Set.of(adapter.discoverChannels().get(0).identity()));
|
}
|
}
|
try (BtsDevelopmentSimulator restarted = new BtsDevelopmentSimulator(0, store);
|
BtsDeviceAdapter adapter = new BtsDeviceAdapter("dev-sim",
|
new BtsTcpTransport("127.0.0.1", restarted.port(), Duration.ofSeconds(2), Duration.ofSeconds(2)),
|
new BtsXmlCodec("dev-sim", ZoneId.of("Asia/Hong_Kong"))))
|
{
|
var channel = adapter.discoverChannels().get(0);
|
assertEquals(1, adapter.inquireHistory(java.util.Set.of(channel.identity())).get(0).availableRecordCount());
|
}
|
}
|
}
|