diff --git a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java index 23e1e7ac73..d71dbebf1e 100644 --- a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java +++ b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java @@ -62,4 +62,13 @@ default KeyValue withValue(String value, Predicate validator) { */ String asString(); + /** + * Whether this key is required to be present in the instrumentation. This can be + * checked in a test of the instrumentation. + * @return whether this key is required + */ + default boolean isRequired() { + return true; + } + } diff --git a/micrometer-observation-test/src/test/java/io/micrometer/observation/tck/TestObservationRegistryAssertTests.java b/micrometer-observation-test/src/test/java/io/micrometer/observation/tck/TestObservationRegistryAssertTests.java index f2f90beacd..d2d92b9950 100644 --- a/micrometer-observation-test/src/test/java/io/micrometer/observation/tck/TestObservationRegistryAssertTests.java +++ b/micrometer-observation-test/src/test/java/io/micrometer/observation/tck/TestObservationRegistryAssertTests.java @@ -356,6 +356,19 @@ enum MyKeyName implements KeyName { public String asString() { return "foo"; } + }, + + MAYBE_SOMETHING { + + @Override + public String asString() { + return "maybe.something"; + } + + @Override + public boolean isRequired() { + return false; + } } }