diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java new file mode 100644 index 000000000..1e845deba --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java @@ -0,0 +1,28 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.metrics; + +public class MetricsUtil { + + private static final String PREFIX = "chat"; + + /** + * Returns a dot-separated ('.') name for the given class and name parts + */ + public static String name(Class clazz, String... parts) { + return name(clazz.getSimpleName(), parts); + } + + private static String name(String name, String... parts) { + final StringBuilder sb = new StringBuilder(PREFIX); + sb.append(".").append(name); + for (String part : parts) { + sb.append(".").append(part); + } + return sb.toString(); + } + +} diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsUtilTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsUtilTest.java new file mode 100644 index 000000000..e102d2d92 --- /dev/null +++ b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsUtilTest.java @@ -0,0 +1,22 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.metrics; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + + +class MetricsUtilTest { + + @Test + void name() { + + assertEquals("chat.MetricsUtilTest.metric", MetricsUtil.name(MetricsUtilTest.class, "metric")); + assertEquals("chat.MetricsUtilTest.namespace.metric", + MetricsUtil.name(MetricsUtilTest.class, "namespace", "metric")); + } +}