/**
*
*/
package org.minnal.metrics;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.minnal.core.Application;
import org.minnal.core.config.ApplicationConfiguration;
import org.minnal.core.config.DatabaseConfiguration;
import org.minnal.core.db.DataSourceProvider;
import org.minnal.core.db.DataSourceStatistics;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author ganeshs
*
*/
public class DataSourcePoolMetricCollectorTest {
private DataSourcePoolMetricCollector collector;
private Application<ApplicationConfiguration> application;
@BeforeMethod
public void setup() {
application = mock(Application.class);
ApplicationConfiguration configuration = mock(ApplicationConfiguration.class);
when(configuration.getName()).thenReturn("testname1");
when(application.getConfiguration()).thenReturn(configuration);
collector = spy(new DataSourcePoolMetricCollector(application));
}
@Test
public void shouldNotRegisterGuagesIfApplicationDoesntUseDatasource() {
collector.init();
verify(collector, never()).registerGuages();
}
@Test
public void shouldNotRegisterGuagesIfDatasourceStatisticsNotFound() {
DataSourceProvider provider = mock(DataSourceProvider.class);
DatabaseConfiguration configuration = mock(DatabaseConfiguration.class);
when(configuration.getDataSourceProvider()).thenReturn(provider);
ApplicationConfiguration applicationConfig = application.getConfiguration();
when(applicationConfig.getDatabaseConfiguration()).thenReturn(configuration);
collector.init();
verify(collector, never()).registerGuages();
}
@Test
public void shouldRegisterGuages() {
DataSourceStatistics statistics = mock(DataSourceStatistics.class);
DataSourceProvider provider = mock(DataSourceProvider.class);
when(provider.getStatistics()).thenReturn(statistics);
DatabaseConfiguration configuration = mock(DatabaseConfiguration.class);
when(configuration.getDataSourceProvider()).thenReturn(provider);
ApplicationConfiguration applicationConfig = application.getConfiguration();
when(applicationConfig.getDatabaseConfiguration()).thenReturn(configuration);
doNothing().when(collector).registerGuages();
collector.init();
verify(collector).registerGuages();
}
}