private List<ConfigGroupEnum> compareChangedGroup(final HttpServletRequest request) {
        List<ConfigGroupEnum> changedGroup = new ArrayList<>(ConfigGroupEnum.values().length);
        for (ConfigGroupEnum group : ConfigGroupEnum.values()) {
            // md5,lastModifyTime
            String[] params = StringUtils.split(request.getParameter(group.name()), ',');
            if (Objects.isNull(params) || params.length != 2) {
                throw new ShenyuException("group param invalid:" + request.getParameter(group.name()));
            }
            String clientMd5 = params[0];
            long clientModifyTime = NumberUtils.toLong(params[1]);
            ConfigDataCache serverCache = CACHE.get(group.name());
            // do check.
            if (this.checkCacheDelayAndUpdate(serverCache, clientMd5, clientModifyTime)) {
                changedGroup.add(group);
            }
        }
        return changedGroup;
    }
@Test
    public void testCompareChangedGroup() {
        this.httpServletRequest.setParameter(ConfigGroupEnum.RULE.name(), "E10ADC3949BA59ABBE56E057F20F883E,1607068125");
        this.httpServletRequest.setParameter(ConfigGroupEnum.PLUGIN.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D63,1607068126");
        this.httpServletRequest.setParameter(ConfigGroupEnum.APP_AUTH.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D62,1607068124");
        this.httpServletRequest.setParameter(ConfigGroupEnum.SELECTOR.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D61,1607068123");
        this.httpServletRequest.setParameter(ConfigGroupEnum.META_DATA.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D60,1607068122");
        this.httpServletRequest.setParameter(ConfigGroupEnum.PROXY_SELECTOR.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D59,1607068121");
        this.httpServletRequest.setParameter(ConfigGroupEnum.DISCOVER_UPSTREAM.name(), "F1887D3F9E6EE7A32FE5E76F4AB80D58,1607068120");
        assertEquals("E10ADC3949BA59ABBE56E057F20F883E,1607068125", this.httpServletRequest.getParameter(ConfigGroupEnum.RULE.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D63,1607068126", this.httpServletRequest.getParameter(ConfigGroupEnum.PLUGIN.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D62,1607068124", this.httpServletRequest.getParameter(ConfigGroupEnum.APP_AUTH.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D61,1607068123", this.httpServletRequest.getParameter(ConfigGroupEnum.SELECTOR.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D60,1607068122", this.httpServletRequest.getParameter(ConfigGroupEnum.META_DATA.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D59,1607068121", this.httpServletRequest.getParameter(ConfigGroupEnum.PROXY_SELECTOR.name()));
        assertEquals("F1887D3F9E6EE7A32FE5E76F4AB80D58,1607068120", this.httpServletRequest.getParameter(ConfigGroupEnum.DISCOVER_UPSTREAM.name()));
        for (ConfigGroupEnum group : ConfigGroupEnum.values()) {
            String[] params = Objects.requireNonNull(this.httpServletRequest.getParameter(group.name())).split(",");
            assertNotNull(params);
            assertEquals(2, params.length);
        }
    }