@GetMapping
    public String getHealth() {
        // TODO UP DOWN WARN
        StringBuilder sb = new StringBuilder();
        String dbStatus = dataSourceService.getHealth();
        boolean addressServerHealthy = isAddressServerHealthy();
        if (dbStatus.contains(HEALTH_UP) && addressServerHealthy && ServerMemberManager.isInIpList()) {
            sb.append(HEALTH_UP);
        } else if (dbStatus.contains(HEALTH_WARN) && addressServerHealthy && ServerMemberManager.isInIpList()) {
            sb.append("WARN:");
            sb.append("slave db (").append(dbStatus.split(":")[1]).append(") down. ");
        } else {
            sb.append("DOWN:");
            if (dbStatus.contains(HEALTH_DOWN)) {
                sb.append("master db (").append(dbStatus.split(":")[1]).append(") down. ");
            }
        
            if (!addressServerHealthy) {
                sb.append("address server down. ");
            }
            if (!ServerMemberManager.isInIpList()) {
                sb.append("server ip ").append(InetUtils.getSelfIP())
                        .append(" is not in the serverList of address server. ");
            }
        }
    
        return sb.toString();
    }
@Test
    void testGetHealthWhenTheLoopUpInfoParseError() throws Exception {
        when(dataSourceService.getHealth()).thenReturn("UP");
        when(memberManager.getLookup()).thenReturn(memberLookup);
        when(memberLookup.useAddressServer()).thenReturn(true);
        
        final HashMap<String, Object> info = new HashMap<>();
        info.put("addressServerHealth", "not boolean value");
        when(memberLookup.info()).thenReturn(info);
        
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.HEALTH_CONTROLLER_PATH);
        String actualValue = mockmvc.perform(builder).andReturn().getResponse().getContentAsString();
        assertEquals("DOWN:address server down. ", actualValue);
    }