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