Allow counter names like counter-foo

Checking for a prefix "counter." is more correct than "counter" because
the readers (repositories) assume the former prefix is there.

Fixes gh-3801
This commit is contained in:
Dave Syer 2015-08-21 08:35:43 +01:00
parent a01a5db947
commit 9303efd435
2 changed files with 21 additions and 5 deletions

View File

@ -58,7 +58,7 @@ public class DefaultCounterService implements CounterService {
if (this.names.containsKey(metricName)) {
return this.names.get(metricName);
}
if (metricName.startsWith("counter") || metricName.startsWith("meter")) {
if (metricName.startsWith("counter.") || metricName.startsWith("meter.")) {
return metricName;
}
String name = "counter." + metricName;

View File

@ -16,16 +16,16 @@
package org.springframework.boot.actuate.metrics.writer;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/**
* Tests for {@link DefaultCounterService}.
*/
@ -40,6 +40,22 @@ public class DefaultCounterServiceTests {
@Captor
private ArgumentCaptor<Delta<Number>> captor;
@Test
public void incrementWithExistingCounter() {
this.service.increment("counter.foo");
verify(this.repository).increment(this.captor.capture());
assertEquals("counter.foo", this.captor.getValue().getName());
assertEquals(1L, this.captor.getValue().getValue());
}
@Test
public void incrementWithExistingNearlyCounter() {
this.service.increment("counter-foo");
verify(this.repository).increment(this.captor.capture());
assertEquals("counter.counter-foo", this.captor.getValue().getName());
assertEquals(1L, this.captor.getValue().getValue());
}
@Test
public void incrementPrependsCounter() {
this.service.increment("foo");