package org.opennms.netmgt.dao.stats; import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.opennms.core.criteria.CriteriaBuilder; import org.opennms.core.criteria.Alias.JoinType; import org.opennms.core.criteria.Fetch.FetchType; import org.opennms.core.test.MockLogAppender; import org.opennms.core.test.OpenNMSJUnit4ClassRunner; import org.opennms.core.utils.BeanUtils; import org.opennms.netmgt.dao.DatabasePopulator; import org.opennms.netmgt.dao.db.JUnitConfigurationEnvironment; import org.opennms.netmgt.dao.db.JUnitTemporaryDatabase; import org.opennms.netmgt.model.OnmsAlarm; import org.opennms.netmgt.model.OnmsSeverity; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; @RunWith(OpenNMSJUnit4ClassRunner.class) @ContextConfiguration(locations={ "classpath:/META-INF/opennms/applicationContext-dao.xml", "classpath*:/META-INF/opennms/component-dao.xml", "classpath:/META-INF/opennms/applicationContext-databasePopulator.xml" // "classpath*:/META-INF/opennms/component-service.xml", // "classpath:/META-INF/opennms/applicationContext-mock-usergroup.xml", // "classpath:/META-INF/opennms/applicationContext-minimal-conf.xml" }) @JUnitConfigurationEnvironment @JUnitTemporaryDatabase public class AlarmStatisticsServiceTest implements InitializingBean { @Autowired DatabasePopulator m_dbPopulator; @Autowired private DefaultAlarmStatisticsService m_statisticsService; private static boolean m_initialized = false; @Override public void afterPropertiesSet() throws Exception { BeanUtils.assertAutowiring(this); } @Before public void setUp() { MockLogAppender.setupLogging(); if (!m_initialized) m_dbPopulator.populateDatabase(); m_initialized = true; } @Test public void testCount() { final CriteriaBuilder cb = new CriteriaBuilder(OnmsAlarm.class); cb.fetch("firstEvent", FetchType.EAGER); cb.fetch("lastEvent", FetchType.EAGER); cb.alias("node", "node", JoinType.LEFT_JOIN); cb.alias("node.snmpInterfaces", "snmpInterface", JoinType.LEFT_JOIN); cb.alias("node.ipInterfaces", "ipInterface", JoinType.LEFT_JOIN); cb.distinct(); final int count = m_statisticsService.getTotalCount(cb.toCriteria()); assertEquals(1, count); } @Test public void testCountBySeverity() { final CriteriaBuilder cb = new CriteriaBuilder(OnmsAlarm.class); cb.ge("severity", OnmsSeverity.NORMAL); cb.fetch("firstEvent", FetchType.EAGER); cb.fetch("lastEvent", FetchType.EAGER); cb.alias("node", "node", JoinType.LEFT_JOIN); cb.alias("node.snmpInterfaces", "snmpInterface", JoinType.LEFT_JOIN); cb.alias("node.ipInterfaces", "ipInterface", JoinType.LEFT_JOIN); cb.distinct(); final int count = m_statisticsService.getTotalCount(cb.toCriteria()); assertEquals(1, count); } }