blob: 5f0feb33a6399a051ce87c9101aabe6105aa291b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.metrics.internal;
import static io.micrometer.core.instrument.Meter.Type.COUNTER;
import static io.micrometer.core.instrument.Meter.Type.DISTRIBUTION_SUMMARY;
import static io.micrometer.core.instrument.Meter.Type.GAUGE;
import static io.micrometer.core.instrument.Meter.Type.LONG_TASK_TIMER;
import static io.micrometer.core.instrument.Meter.Type.OTHER;
import static io.micrometer.core.instrument.Meter.Type.TIMER;
import static java.util.Collections.emptyList;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.concurrent.TimeUnit;
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.DistributionSummary;
import io.micrometer.core.instrument.FunctionCounter;
import io.micrometer.core.instrument.FunctionTimer;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.LongTaskTimer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.Meter.Id;
import io.micrometer.core.instrument.Tags;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.distribution.DistributionStatisticConfig;
import io.micrometer.core.instrument.distribution.pause.NoPauseDetector;
import io.micrometer.core.instrument.noop.NoopCounter;
import io.micrometer.core.instrument.noop.NoopDistributionSummary;
import io.micrometer.core.instrument.noop.NoopFunctionCounter;
import io.micrometer.core.instrument.noop.NoopFunctionTimer;
import io.micrometer.core.instrument.noop.NoopGauge;
import io.micrometer.core.instrument.noop.NoopLongTaskTimer;
import io.micrometer.core.instrument.noop.NoopMeter;
import io.micrometer.core.instrument.noop.NoopTimer;
import org.junit.Before;
import org.junit.Test;
public class NoopMeterRegistryTest {
private NoopMeterRegistry noopMeterRegistry;
@Before
public void setUp() {
noopMeterRegistry = new NoopMeterRegistry();
}
@Test
public void constructor_usesNoopClock() {
assertThat(noopMeterRegistry.config().clock())
.isSameAs(NoopMeterRegistry.NOOP_CLOCK);
}
@Test
public void newGauge_createsNoopGauge() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, GAUGE);
Gauge result = noopMeterRegistry.newGauge(expectedId, null, x -> 0.0);
assertThat(result)
.isInstanceOf(NoopGauge.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newCounter_createsNoopCounter() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, COUNTER);
Counter result = noopMeterRegistry.newCounter(expectedId);
assertThat(result)
.isInstanceOf(NoopCounter.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newLongTaskTimer_createsNoopLongTaskTimer() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, LONG_TASK_TIMER);
LongTaskTimer result = noopMeterRegistry.newLongTaskTimer(expectedId);
assertThat(result)
.isInstanceOf(NoopLongTaskTimer.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newTimer_createsNoopTimer() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, TIMER);
Timer result = noopMeterRegistry.newTimer(expectedId, DistributionStatisticConfig.NONE,
new NoPauseDetector());
assertThat(result)
.isInstanceOf(NoopTimer.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newDistributionSummary_createsNoopDistributionSummary() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, DISTRIBUTION_SUMMARY);
DistributionSummary result = noopMeterRegistry.newDistributionSummary(expectedId,
DistributionStatisticConfig.NONE, 0.0);
assertThat(result)
.isInstanceOf(NoopDistributionSummary.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newMeter_createsNoopMeter() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, OTHER);
Meter result = noopMeterRegistry.newMeter(expectedId, OTHER, emptyList());
assertThat(result)
.isInstanceOf(NoopMeter.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newFunctionTimer_createsNoopFunctionTimer() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, TIMER);
FunctionTimer result =
noopMeterRegistry.newFunctionTimer(expectedId, new Object(), x -> 0L, x -> 0.0, SECONDS);
assertThat(result)
.isInstanceOf(NoopFunctionTimer.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void newFunctionCounter_createsNoopFunctionCounter() {
Id expectedId = new Id("name", Tags.of("key", "value"), null, null, COUNTER);
FunctionCounter result =
noopMeterRegistry.newFunctionCounter(expectedId, new Object(), x -> 0.0);
assertThat(result)
.isInstanceOf(NoopFunctionCounter.class);
assertThat(result.getId())
.isEqualTo(expectedId);
}
@Test
public void getBaseTimeUnit_returnsSeconds() {
TimeUnit result = noopMeterRegistry.getBaseTimeUnit();
assertThat(result)
.isEqualTo(SECONDS);
}
@Test
public void defaultHistogramConfig_returnsNone() {
DistributionStatisticConfig result = noopMeterRegistry.defaultHistogramConfig();
assertThat(result)
.isEqualTo(DistributionStatisticConfig.NONE);
}
}