| // Copyright (C) 2017 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.googlesource.gerrit.plugins.javamelody; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| |
| import java.util.regex.Pattern; |
| import org.junit.Test; |
| |
| public class GerritMonitoringFilterTest { |
| private static final Pattern GROUPING_PATTERN = |
| Pattern.compile( |
| GerritMonitoringFilter.JavamelodyFilter.GERRIT_GROUPING, |
| // The following flags were added to have as close to javamelody env as possible. |
| // In [1] javamelody it adds them to pattern before compiling. |
| // [1] |
| // https://github.com/javamelody/javamelody/blob/3863b31a86c0df04f4063615f72fc6117aecf909/javamelody-core/src/main/java/net/bull/javamelody/FilterContext.java#L209 |
| Pattern.MULTILINE | Pattern.DOTALL); |
| |
| @Test |
| public void testGroupingPattern() throws Exception { |
| String dollar = "\\$"; |
| String result = |
| GROUPING_PATTERN |
| .matcher( |
| "/plugins/lfs/content/default/a55dc67374da05f4e1eb736f8ad2147d0a6964ed41d28462fd7e2fe86bea78ed") |
| .replaceAll(dollar); |
| assertThat(result).named("Long SHA (LFS) grouping").isEqualTo("/plugins/lfs/content/default/$"); |
| |
| result = |
| GROUPING_PATTERN |
| .matcher("/changes/?q=05810c7a315ba6c52c150c237d84d05b2ebc3086&n=") |
| .replaceAll(dollar); |
| assertThat(result).named("SHA-1 grouping").isEqualTo("/changes/?q=$&n="); |
| |
| result = |
| GROUPING_PATTERN |
| .matcher("/gerrit_ui/gwt/chrome/7CF1DE6EF2AABFEFAE4D469A16D60071.cache.css") |
| .replaceAll(dollar); |
| assertThat(result).named("GWT cache grouping").isEqualTo("/gerrit_ui/gwt/chrome/$.cache.css"); |
| |
| result = GROUPING_PATTERN.matcher("/files/test_dir%2Funder_dir.file/diff").replaceAll(dollar); |
| assertThat(result).named("Grouping by file").isEqualTo("/files/$/diff"); |
| |
| result = GROUPING_PATTERN.matcher("/projects/plugins%2Fjavamelody/config").replaceAll(dollar); |
| assertThat(result).named("Grouping by projects").isEqualTo("/projects/$/config"); |
| |
| result = GROUPING_PATTERN.matcher("/accounts/self/avatar.change.url").replaceAll(dollar); |
| assertThat(result).named("Grouping by account").isEqualTo("/accounts/$/avatar.change.url"); |
| |
| result = GROUPING_PATTERN.matcher("/test_repo/git-upload-pack").replaceAll(dollar); |
| assertThat(result).named("Grouping git-upload-pack").isEqualTo("$/git-upload-pack"); |
| |
| result = GROUPING_PATTERN.matcher("/test_repo/git-receive-pack").replaceAll(dollar); |
| assertThat(result).named("Grouping git-receive-pack").isEqualTo("$/git-receive-pack"); |
| |
| result = GROUPING_PATTERN.matcher("/test_repo.git/info/lfs/locks").replaceAll(dollar); |
| assertThat(result).named("Grouping Git and LFS operations").isEqualTo("$/info/lfs/locks"); |
| |
| result = GROUPING_PATTERN.matcher("/changes/30/revisions/1/commit").replaceAll(dollar); |
| assertThat(result).named("Grouping numbers").isEqualTo("/changes/$/revisions/$/commit"); |
| |
| // grouping multiple patterns in one input |
| result = |
| GROUPING_PATTERN |
| .matcher( |
| "/changes/30/revisions/05810c7a315ba6c52c150c237d84d05b2ebc3086/files/test_dir%2Funder_dir.file/diff") |
| .replaceAll(dollar); |
| assertThat(result) |
| .named("Grouping by number, SHA-1 and file") |
| .isEqualTo("/changes/$/revisions/$/files/$/diff"); |
| |
| result = |
| GROUPING_PATTERN |
| .matcher( |
| "/test_repo.git/info/lfs/locks/8020e4344e49a6928e03b6db69ead86624ffb4aeb1477a7d741a5e2fee9544cd/unlock") |
| .replaceAll(dollar); |
| assertThat(result).named("Grouping LFS with Long SHA").isEqualTo("$/info/lfs/locks/$/unlock"); |
| } |
| } |