/* * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file Expect 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.qi4j.spi.metrics; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.qi4j.api.metrics.MetricsCounter; import org.qi4j.api.metrics.MetricsCounterFactory; import org.qi4j.api.metrics.MetricsGauge; import org.qi4j.api.metrics.MetricsGaugeFactory; import org.qi4j.api.metrics.MetricsHealthCheck; import org.qi4j.api.metrics.MetricsHealthCheckFactory; import org.qi4j.api.metrics.MetricsHistogram; import org.qi4j.api.metrics.MetricsHistogramFactory; import org.qi4j.api.metrics.MetricsMeter; import org.qi4j.api.metrics.MetricsMeterFactory; import org.qi4j.api.metrics.MetricsProvider; import org.qi4j.api.metrics.MetricsTimer; import org.qi4j.api.metrics.MetricsTimerFactory; import static org.junit.Assert.assertNull; public class DefaultMetricsTest { @Test public void givenMetricsProviderWithoutSupportForCounterWhenRequestingCounterExpectDefaultNullImplementation() { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsCounterFactory factory = underTest.createFactory( MetricsCounterFactory.class ); MetricsCounter test = factory.createCounter( getClass(), "test" ); test.increment(); test.decrement(); } @Test public void givenMetricsProviderWithoutSupportForGaugeWhenRequestingGaugeExpectDefaultNullImplementation() { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsGaugeFactory factory = underTest.createFactory( MetricsGaugeFactory.class ); MetricsGauge<Long> test = factory.registerGauge( getClass(), "test", new MetricsGauge<Long>() { @Override public Long value() { return System.currentTimeMillis(); } } ); assertNull( test.value() ); } @Test public void givenMetricsProviderWithoutSupportForHealthCheckWhenRequestingHealthCheckExpectDefaultNullImplementation() throws Exception { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsHealthCheckFactory factory = underTest.createFactory( MetricsHealthCheckFactory.class ); MetricsHealthCheck test = factory.registerHealthCheck( getClass(), "test", new MetricsHealthCheck() { @Override public Result check() throws Exception { throw new RuntimeException( "Not healthy!!!" ); } } ); test.check(); // Should not throw an exception, as it should have been replaced by a null implementation. } @Test public void givenMetricsProviderWithoutSupportForHistogramWhenRequestingHistogramExpectDefaultNullImplementation() { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsHistogramFactory factory = underTest.createFactory( MetricsHistogramFactory.class ); MetricsHistogram test = factory.createHistogram( getClass(), "test" ); test.update( 5L ); test.update( 5L ); test.update( 5L ); } @Test public void givenMetricsProviderWithoutSupportForMeterWhenRequestingMeterExpectDefaultNullImplementation() { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsMeterFactory factory = underTest.createFactory( MetricsMeterFactory.class ); MetricsMeter test = factory.createMeter( getClass(), "test", "niclas", TimeUnit.MILLISECONDS ); test.mark(); test.mark(); test.mark(); } @Test public void givenMetricsProviderWithoutSupportForTimerWhenRequestingTimerExpectDefaultNullImplementation() { MetricsProvider underTest = new MetricsProviderAdapter(); MetricsTimerFactory factory = underTest.createFactory( MetricsTimerFactory.class ); MetricsTimer test = factory.createTimer( getClass(), "test", TimeUnit.MILLISECONDS, TimeUnit.DAYS ); test.start().stop(); } }