package com.ruoyi.system.service.impl; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; import java.util.Set; import org.junit.jupiter.api.Test; import com.ruoyi.config.DevelopmentCollectorDiscoveryService; import com.ruoyi.config.DevelopmentCollectorStatusSynchronizer; import com.battery.device.simulator.BtsDevelopmentSimulator; import com.battery.device.discovery.InMemoryDeviceDiscoveryCandidateStore; import com.ruoyi.system.domain.vo.DiscoveredCollectorVo; import com.ruoyi.system.mapper.TCollectorMapper; import com.ruoyi.system.service.ITCollectorService; /** * 采集器设备发现服务测试。 */ public class CollectorDiscoveryServiceImplTest { @Test public void shouldReturnCollectorsWithoutMixingCabinets() throws Exception { try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0)) { ITCollectorService collectorService = mock(ITCollectorService.class); when(collectorService.selectRegisteredCollectorCodes()).thenReturn(Set.of()); InMemoryDeviceDiscoveryCandidateStore store = new InMemoryDeviceDiscoveryCandidateStore(); DevelopmentCollectorDiscoveryService service = new DevelopmentCollectorDiscoveryService(store, collectorService); TCollectorMapper collectorMapper = mock(TCollectorMapper.class); simulator.addDevice("127.0.0.8", 2); simulator.addCollector("127.0.1.3", 6); new DevelopmentCollectorStatusSynchronizer(simulator, store, collectorMapper).synchronizeOnlineStatus(); List result = service.selectDiscoveredCollectorList(); assertEquals(2, result.size()); DiscoveredCollectorVo first = result.get(0); assertEquals("dev-sim-collector-1", first.getDeviceCode()); assertEquals("127.0.1.2", first.getIp()); assertEquals("02:43:00:00:00:01", first.getMac()); assertEquals("dev-sim 采集器 1", first.getName()); assertEquals("开发模拟器", first.getManufacturer()); assertEquals("Virtual Collector", first.getModel()); assertEquals(4, first.getChannelCount()); assertEquals("在线", first.getOnlineStatus()); } } @Test public void shouldHideOfflineCollectors() throws Exception { try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0)) { ITCollectorService collectorService = mock(ITCollectorService.class); when(collectorService.selectRegisteredCollectorCodes()).thenReturn(Set.of()); InMemoryDeviceDiscoveryCandidateStore store = new InMemoryDeviceDiscoveryCandidateStore(); DevelopmentCollectorDiscoveryService service = new DevelopmentCollectorDiscoveryService(store, collectorService); TCollectorMapper collectorMapper = mock(TCollectorMapper.class); simulator.updateCollector(1, "127.0.1.9", 8, false); new DevelopmentCollectorStatusSynchronizer(simulator, store, collectorMapper).synchronizeOnlineStatus(); List result = service.selectDiscoveredCollectorList(); assertEquals(0, result.size()); } } @Test public void shouldExcludeRegisteredCollectorAndReturnItAfterDeletion() throws Exception { try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0)) { ITCollectorService collectorService = mock(ITCollectorService.class); InMemoryDeviceDiscoveryCandidateStore store = new InMemoryDeviceDiscoveryCandidateStore(); DevelopmentCollectorDiscoveryService service = new DevelopmentCollectorDiscoveryService(store, collectorService); TCollectorMapper collectorMapper = mock(TCollectorMapper.class); new DevelopmentCollectorStatusSynchronizer(simulator, store, collectorMapper).synchronizeOnlineStatus(); when(collectorService.selectRegisteredCollectorCodes()) .thenReturn(Set.of("dev-sim-collector-1")) .thenReturn(Set.of()); assertEquals(0, service.selectDiscoveredCollectorList().size()); assertEquals(1, service.selectDiscoveredCollectorList().size()); } } }