blob: 981b1964396bb25528a04cb9c7012a56a3de81b7 [file] [log] [blame]
/*
* 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();
}
}