yeg
2026-08-27 210663040bf65ee00b5f86545fdc31bd0356fddf
ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/CollectorDiscoveryServiceImplTest.java
@@ -1,38 +1,87 @@
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.ruoyi.device.bts.BtsDevelopmentSimulator;
import com.ruoyi.device.discovery.InMemoryDeviceDiscoveryCandidateStore;
import com.ruoyi.system.domain.vo.DiscoveredCollectorVo;
import com.ruoyi.system.service.ITCollectorService;
/**
 * 采集器设备发现服务测试。
 */
public class CollectorDiscoveryServiceImplTest
{
    private final CollectorDiscoveryServiceImpl service = new CollectorDiscoveryServiceImpl();
    @Test
    public void shouldReturnExpectedTestDevices()
    public void shouldReturnCollectorsWithoutMixingCabinets() throws Exception
    {
        List<DiscoveredCollectorVo> result = service.selectDiscoveredCollectorList();
        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);
            simulator.addDevice("127.0.0.8", 2);
            simulator.addCollector("127.0.1.3", 6);
            new DevelopmentCollectorStatusSynchronizer(simulator, store).synchronizeOnlineStatus();
        assertEquals(6, result.size());
        DiscoveredCollectorVo first = result.get(0);
        assertEquals("45643176", first.getDeviceCode());
        assertEquals("192.1.1.162", first.getIp());
        assertEquals("00:1A:2B:3C:4D:01", first.getMac());
        assertEquals("在线", first.getOnlineStatus());
            List<DiscoveredCollectorVo> 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 shouldReturnIndependentListContainers()
    public void shouldHideOfflineCollectors() throws Exception
    {
        List<DiscoveredCollectorVo> firstResult = service.selectDiscoveredCollectorList();
        firstResult.clear();
        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);
            simulator.updateCollector(1, "127.0.1.9", 8, false);
            new DevelopmentCollectorStatusSynchronizer(simulator, store).synchronizeOnlineStatus();
        List<DiscoveredCollectorVo> secondResult = service.selectDiscoveredCollectorList();
            List<DiscoveredCollectorVo> result = service.selectDiscoveredCollectorList();
        assertEquals(6, secondResult.size());
            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);
            new DevelopmentCollectorStatusSynchronizer(simulator, store).synchronizeOnlineStatus();
            when(collectorService.selectRegisteredCollectorCodes())
                    .thenReturn(Set.of("dev-sim-collector-1"))
                    .thenReturn(Set.of());
            assertEquals(0, service.selectDiscoveredCollectorList().size());
            assertEquals(1, service.selectDiscoveredCollectorList().size());
        }
    }
}