protected static boolean isLabelMatch(URL url, String protocolServiceKey, Map<String, String> inputMap) {
        if (inputMap == null || inputMap.size() == 0) {
            return true;
        }

        for (Map.Entry<String, String> entry : inputMap.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();

            String originMapValue = url.getOriginalServiceParameter(protocolServiceKey, key);
            if (!value.equals(originMapValue)) {
                return false;
            }
        }

        return true;
    }
@Test
    void containMapKeyValue() {
        URL url = mock(URL.class);
        when(url.getOriginalServiceParameter("test", "key1")).thenReturn("value1");
        when(url.getOriginalServiceParameter("test", "key2")).thenReturn("value2");
        when(url.getOriginalServiceParameter("test", "key3")).thenReturn("value3");
        when(url.getOriginalServiceParameter("test", "key4")).thenReturn("value4");

        Map<String, String> originMap = new HashMap<>();

        originMap.put("key1", "value1");
        originMap.put("key2", "value2");
        originMap.put("key3", "value3");

        Map<String, String> inputMap = new HashMap<>();

        inputMap.put("key1", "value1");
        inputMap.put("key2", "value2");

        assertTrue(MeshRuleCache.isLabelMatch(url, "test", inputMap));

        inputMap.put("key4", "value4");
        assertTrue(MeshRuleCache.isLabelMatch(url, "test", inputMap));
    }