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);
}
}