@GetMapping(value = "/nodes")
    @Secured(resource = Commons.NACOS_CORE_CONTEXT + "/cluster", action = ActionTypes.READ, signType = SignType.CONSOLE)
    public RestResult<Collection<Member>> listNodes(
            @RequestParam(value = "keyword", required = false) String ipKeyWord) {
        Collection<Member> members = memberManager.allMembers();
        Collection<Member> result = new ArrayList<>();
        
        members.stream().sorted().forEach(member -> {
            if (StringUtils.isBlank(ipKeyWord)) {
                result.add(member);
                return;
            }
            final String address = member.getAddress();
            if (StringUtils.equals(address, ipKeyWord) || StringUtils.startsWith(address, ipKeyWord)) {
                result.add(member);
            }
        });
        
        return RestResultUtils.success(result);
    }
@Test
    void testListNodes() {
        Member member1 = new Member();
        member1.setIp("1.1.1.1");
        List<Member> members = Arrays.asList(member1);
        Mockito.when(serverMemberManager.allMembers()).thenReturn(members);
        
        RestResult<Collection<Member>> result = nacosClusterController.listNodes("1.1.1.1");
        assertEquals(1, result.getData().size());
    }