Skip to content

Commit

Permalink
Merge branch '1.1.x' into 1.3.x
Browse files Browse the repository at this point in the history
  • Loading branch information
shakuzen committed Nov 4, 2019
2 parents 80168a3 + 712411a commit b986ca8
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,17 @@

import java.util.regex.Pattern;

/**
* {@link NamingConvention} for Dynatrace.
*
* @author Oriol Barcelona Palau
* @author Jon Schneider
* @author Johnny Lim
* @since 1.1.0
*/
public class DynatraceNamingConvention implements NamingConvention {

private static final Pattern NAME_CLEANUP_PATTERN = Pattern.compile("[^\\w._-]");
private static final Pattern KEY_CLEANUP_PATTERN = Pattern.compile("[^\\w.-]");

private final NamingConvention delegate;
Expand All @@ -37,7 +46,14 @@ public DynatraceNamingConvention() {

@Override
public String name(String name, Meter.Type type, @Nullable String baseUnit) {
return "custom:" + delegate.name(name, type, baseUnit);
return "custom:" + sanitizeName(delegate.name(name, type, baseUnit));
}

private String sanitizeName(String name) {
if (name.equals("system.load.average.1m")) {
return "system.load.average.oneminute";
}
return NAME_CLEANUP_PATTERN.matcher(name).replaceAll("_");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,13 @@

import static org.assertj.core.api.Assertions.assertThat;


/**
* Tests for {@link DynatraceNamingConvention}.
*
* @author Oriol Barcelona Palau
* @author Jon Schneider
* @author Johnny Lim
*/
class DynatraceNamingConventionTest {

private final DynatraceNamingConvention convention = new DynatraceNamingConvention();
Expand All @@ -30,8 +36,26 @@ void nameStartsWithCustomAndColon() {
assertThat(convention.name("mymetric", Meter.Type.COUNTER, null)).isEqualTo("custom:mymetric");
}

@Test
void nameShouldAllowAlphanumericUnderscoreAndDash() {
assertThat(convention.name("my.name1", Meter.Type.COUNTER, null)).isEqualTo("custom:my.name1");
assertThat(convention.name("my_name1", Meter.Type.COUNTER, null)).isEqualTo("custom:my_name1");
assertThat(convention.name("my-name1", Meter.Type.COUNTER, null)).isEqualTo("custom:my-name1");
}

@Test
void nameShouldSanitize() {
assertThat(convention.name("my,name1", Meter.Type.COUNTER, null)).isEqualTo("custom:my_name1");
}

@Test
void nameWithSystemLoadAverageOneMintueShouldSanitize() {
assertThat(convention.name("system.load.average.1m", Meter.Type.COUNTER, null))
.isEqualTo("custom:system.load.average.oneminute");
}

@Test
void tagKeysAreSanitized() {
assertThat(convention.tagKey("{tagTag0}.-")).isEqualTo("_tagTag0_.-");
}
}
}

0 comments on commit b986ca8

Please sign in to comment.