From 564bbdef831b7104758ac8052239be7a7f9836be Mon Sep 17 00:00:00 2001 From: shikhman Date: Wed, 17 Aug 2016 10:50:18 -0700 Subject: [PATCH] Enforce very basic URL-like metric names This change enforces URL-like metric names to match the behavior of Stackdriver. The StackdriverWriter no longer prepends a slash, which was a crutch. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=130537347 --- java/google/registry/monitoring/metrics/MetricSchema.java | 3 ++- java/google/registry/monitoring/metrics/StackdriverWriter.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/java/google/registry/monitoring/metrics/MetricSchema.java b/java/google/registry/monitoring/metrics/MetricSchema.java index d3a889056..7c842cb14 100644 --- a/java/google/registry/monitoring/metrics/MetricSchema.java +++ b/java/google/registry/monitoring/metrics/MetricSchema.java @@ -45,7 +45,8 @@ public abstract class MetricSchema { checkArgument(!name.isEmpty(), "Name must not be blank"); checkArgument(!description.isEmpty(), "Description must not be blank"); checkArgument(!valueDisplayName.isEmpty(), "Value Display Name must not be empty"); - // TODO: strengthen metric name validation. + checkArgument(name.startsWith("/"), "Name must be URL-like and start with a '/'"); + // TODO(b/30916431): strengthen metric name validation. return new AutoValue_MetricSchema(name, description, valueDisplayName, kind, labels); } diff --git a/java/google/registry/monitoring/metrics/StackdriverWriter.java b/java/google/registry/monitoring/metrics/StackdriverWriter.java index f1e60b90e..8ec0575b9 100644 --- a/java/google/registry/monitoring/metrics/StackdriverWriter.java +++ b/java/google/registry/monitoring/metrics/StackdriverWriter.java @@ -155,7 +155,7 @@ public class StackdriverWriter implements MetricWriter { static MetricDescriptor createMetricDescriptor( google.registry.monitoring.metrics.Metric metric) { return new MetricDescriptor() - .setType(METRIC_DOMAIN + "/" + metric.getMetricSchema().name()) + .setType(METRIC_DOMAIN + metric.getMetricSchema().name()) .setDescription(metric.getMetricSchema().description()) .setDisplayName(metric.getMetricSchema().valueDisplayName()) .setValueType(ENCODED_METRIC_TYPES.get(metric.getValueClass()))