Move metric check for name length (#893)
This commit is contained in:
parent
f4dea297be
commit
7d51abc5f9
|
|
@ -22,6 +22,8 @@ import javax.annotation.concurrent.Immutable;
|
|||
@Immutable
|
||||
public final class StringUtils {
|
||||
|
||||
public static final int NAME_MAX_LENGTH = 255;
|
||||
|
||||
/**
|
||||
* Determines whether the {@code String} contains only printable characters.
|
||||
*
|
||||
|
|
@ -52,7 +54,7 @@ public final class StringUtils {
|
|||
* @return whether the metricName contains a valid name.
|
||||
*/
|
||||
public static boolean isValidMetricName(String metricName) {
|
||||
if (metricName.isEmpty()) {
|
||||
if (metricName.isEmpty() || metricName.length() > NAME_MAX_LENGTH) {
|
||||
return false;
|
||||
}
|
||||
String pattern = "[aA-zZ][aA-zZ0-9_\\-.]*";
|
||||
|
|
|
|||
|
|
@ -31,10 +31,9 @@ public final class DefaultMeter implements Meter {
|
|||
|
||||
private static final DefaultMeter INSTANCE = new DefaultMeter();
|
||||
|
||||
/* VisibleForTesting */ static final int NAME_MAX_LENGTH = 255;
|
||||
/* VisibleForTesting */ static final String ERROR_MESSAGE_INVALID_NAME =
|
||||
"Name should be a ASCII string with a length no greater than "
|
||||
+ NAME_MAX_LENGTH
|
||||
+ StringUtils.NAME_MAX_LENGTH
|
||||
+ " characters.";
|
||||
|
||||
/**
|
||||
|
|
@ -50,54 +49,42 @@ public final class DefaultMeter implements Meter {
|
|||
@Override
|
||||
public DoubleCounter.Builder doubleCounterBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopDoubleCounter.NoopBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongCounter.Builder longCounterBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopLongCounter.NoopBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleMeasure.Builder doubleMeasureBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopDoubleMeasure.NoopBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongMeasure.Builder longMeasureBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopLongMeasure.NoopBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleObserver.Builder doubleObserverBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopDoubleObserver.NoopBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongObserver.Builder longObserverBuilder(String name) {
|
||||
Utils.checkNotNull(name, "name");
|
||||
Utils.checkArgument(
|
||||
StringUtils.isValidMetricName(name) && name.length() <= NAME_MAX_LENGTH,
|
||||
ERROR_MESSAGE_INVALID_NAME);
|
||||
Utils.checkArgument(StringUtils.isValidMetricName(name), ERROR_MESSAGE_INVALID_NAME);
|
||||
return new NoopLongObserver.NoopBuilder();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.metrics;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.internal.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -47,7 +48,7 @@ public class DoubleCounterTest {
|
|||
|
||||
@Test
|
||||
public void preventTooLongName() {
|
||||
char[] chars = new char[DefaultMeter.NAME_MAX_LENGTH + 1];
|
||||
char[] chars = new char[StringUtils.NAME_MAX_LENGTH + 1];
|
||||
Arrays.fill(chars, 'a');
|
||||
String longName = String.valueOf(chars);
|
||||
thrown.expect(IllegalArgumentException.class);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.metrics;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.internal.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import org.junit.Rule;
|
||||
|
|
@ -40,7 +41,7 @@ public class DoubleObserverTest {
|
|||
|
||||
@Test
|
||||
public void preventTooLongName() {
|
||||
char[] chars = new char[DefaultMeter.NAME_MAX_LENGTH + 1];
|
||||
char[] chars = new char[StringUtils.NAME_MAX_LENGTH + 1];
|
||||
Arrays.fill(chars, 'a');
|
||||
String longName = String.valueOf(chars);
|
||||
thrown.expect(IllegalArgumentException.class);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.metrics;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.internal.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -46,7 +47,7 @@ public class LongCounterTest {
|
|||
|
||||
@Test
|
||||
public void preventTooLongName() {
|
||||
char[] chars = new char[DefaultMeter.NAME_MAX_LENGTH + 1];
|
||||
char[] chars = new char[StringUtils.NAME_MAX_LENGTH + 1];
|
||||
Arrays.fill(chars, 'a');
|
||||
String longName = String.valueOf(chars);
|
||||
thrown.expect(IllegalArgumentException.class);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.metrics;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.internal.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import org.junit.Rule;
|
||||
|
|
@ -40,7 +41,7 @@ public class LongObserverTest {
|
|||
|
||||
@Test
|
||||
public void preventTooLongName() {
|
||||
char[] chars = new char[DefaultMeter.NAME_MAX_LENGTH + 1];
|
||||
char[] chars = new char[StringUtils.NAME_MAX_LENGTH + 1];
|
||||
Arrays.fill(chars, 'a');
|
||||
String longName = String.valueOf(chars);
|
||||
thrown.expect(IllegalArgumentException.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue