package org.stagemonitor.core.metrics.metrics2; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertSame; import static org.stagemonitor.core.metrics.metrics2.MetricName.name; public class MetricNameTest { @Test public void testEquals() { assertEquals(name("foo").tag("bar", "baz").tag("qux", "quux").build(), name("foo").tag("bar", "baz").tag("qux", "quux").build()); assertEquals(name("foo").tag("qux", "quux").tag("bar", "baz").build(), name("foo").tag("bar", "baz").tag("qux", "quux").build()); } @Test public void testHashCode() { assertEquals(name("foo").tag("bar", "baz").tag("qux", "quux").build().hashCode(), name("foo").tag("bar", "baz").tag("qux", "quux").build().hashCode()); assertEquals(name("foo").tag("qux", "quux").tag("bar", "baz").build().hashCode(), name("foo").tag("bar", "baz").tag("qux", "quux").build().hashCode()); } @Test public void testTemplateSingleValue() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar"); assertEquals(name("foo").tag("bar", "baz").tag("qux", "quux").build(), metricNameTemplate.build("baz")); assertSame(metricNameTemplate.build("baz"), metricNameTemplate.build("baz")); assertNotEquals(metricNameTemplate.build("baz"), metricNameTemplate.build("baz2")); } @Test(expected = IllegalArgumentException.class) public void testTemplateSingleValueBuildMultipleValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar"); metricNameTemplate.build("foo", "bar"); } @Test(expected = IllegalArgumentException.class) public void testTemplateSingleValueEmptyValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar"); metricNameTemplate.build(); } @Test(expected = NullPointerException.class) public void testTemplateSingleValueNull() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar"); metricNameTemplate.build((String) null); } @Test public void testTemplateMultipleValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar", "qux"); assertEquals(name("foo").tag("bar", "baz").tag("qux", "q").build(), metricNameTemplate.build("baz", "q")); assertSame(metricNameTemplate.build("baz", "quux"), metricNameTemplate.build("baz", "quux")); assertNotEquals(metricNameTemplate.build("baz", "quux"), metricNameTemplate.build("baz2", "quux")); } @Test public void testTemplateMultipleValues2() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").templateFor("bar", "qux"); assertEquals(name("foo").tag("bar", "baz").tag("qux", "q").build(), metricNameTemplate.build("baz", "q")); assertSame(metricNameTemplate.build("baz", "quux"), metricNameTemplate.build("baz", "quux")); assertNotEquals(metricNameTemplate.build("baz", "quux"), metricNameTemplate.build("baz2", "quux")); } @Test(expected = IllegalArgumentException.class) public void testTemplateMultipleValuesBuildEmptyValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar", "qux"); metricNameTemplate.build("foo"); } @Test(expected = IllegalArgumentException.class) public void testTemplateMultipleValuesBuildTooFewValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar", "qux"); metricNameTemplate.build("foo"); } @Test(expected = IllegalArgumentException.class) public void testTemplateMultipleValuesBuildTooManyValues() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar", "qux"); metricNameTemplate.build("foo", "bar", "baz"); } @Test public void testMetricNameNull() { name("foo").tag("bar", null).tag("qux", null).build(); } @Test public void testTemplateMultipleValuesNull() { final MetricName.MetricNameTemplate metricNameTemplate = name("foo").tag("bar", "").tag("qux", "quux").templateFor("bar", "qux"); metricNameTemplate.build(null, null); } }