/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2006-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.web.svclayer.catstatus.support;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import junit.framework.TestCase;
import org.opennms.netmgt.config.categories.Category;
import org.opennms.netmgt.config.viewsdisplay.Section;
import org.opennms.netmgt.config.viewsdisplay.View;
import org.opennms.netmgt.dao.OutageDao;
import org.opennms.netmgt.model.OnmsIpInterface;
import org.opennms.netmgt.model.OnmsMonitoredService;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OnmsOutage;
import org.opennms.netmgt.model.OnmsServiceType;
import org.opennms.netmgt.model.OnmsSnmpInterface;
import org.opennms.netmgt.model.ServiceSelector;
import org.opennms.web.svclayer.catstatus.model.StatusCategory;
import org.opennms.web.svclayer.catstatus.model.StatusNode;
import org.opennms.web.svclayer.catstatus.model.StatusSection;
import org.opennms.web.svclayer.dao.CategoryConfigDao;
import org.opennms.web.svclayer.dao.ViewDisplayDao;
public class DefaultCategoryStatusServiceTest extends TestCase {
private DefaultCategoryStatusService categoryStatusService;
private ViewDisplayDao viewDisplayDao;
private CategoryConfigDao categoryDao;
private OutageDao outageDao;
protected void setUp() throws Exception {
super.setUp();
viewDisplayDao = createMock(ViewDisplayDao.class);
categoryDao = createMock(CategoryConfigDao.class);
outageDao = createMock(OutageDao.class);
categoryStatusService = new DefaultCategoryStatusService();
categoryStatusService.setViewDisplayDao(viewDisplayDao);
categoryStatusService.setCategoryConfigDao(categoryDao);
categoryStatusService.setOutageDao(outageDao);
}
public void testCategoryGroupsReturnedWhenNoneExist() {
View view = new View();
expect(viewDisplayDao.getView()).andReturn(view);
replay(viewDisplayDao);
Collection<StatusSection> categories = categoryStatusService.getCategoriesStatus();
verify(viewDisplayDao);
assertTrue("Collection Should Be Empty", categories.isEmpty());
}
public void testGetCategoriesStatus(){
View view = new View();
Section section = new Section();
org.opennms.netmgt.config.views.Category category = new org.opennms.netmgt.config.views.Category();
section.setSectionName("Section One");
section.addCategory("Category One");
category.setLabel("Category One");
//category.setCategoryComment("Category One Comment");
OnmsOutage outage = new OnmsOutage();
Collection<OnmsOutage> outages = new ArrayList<OnmsOutage>();
outage.setId(300);
OnmsServiceType svcType = new OnmsServiceType();
svcType.setId(3);
svcType.setName("HTTP");
OnmsNode node = new OnmsNode();
node.setId(1);
node.setLabel("superLabel");
OnmsSnmpInterface snmpIface = new OnmsSnmpInterface(node, 1);
OnmsIpInterface iface = new OnmsIpInterface("192.168.1.1", node);
iface.setSnmpInterface(snmpIface);
//iface.setId(9);
OnmsMonitoredService monSvc = new OnmsMonitoredService(iface, svcType);
outage.setMonitoredService(monSvc);
outages.add(outage);
view.addSection(section);
List <String>services = new ArrayList<String>();
services.add("HTTP");
// ServiceSelector selector = new ServiceSelector("isHTTP",(List<String>) services);
expect(viewDisplayDao.getView()).andReturn(view);
expect(categoryDao.getCategoryByLabel( category.getLabel() ) ).andReturn(createCategoryFromLabel(category.getLabel()));
expect(outageDao.matchingCurrentOutages(isA(ServiceSelector.class))).andReturn(outages);
replay(categoryDao);
replay(viewDisplayDao);
replay(outageDao);
Collection<StatusSection> statusSections = categoryStatusService.getCategoriesStatus();
verify(viewDisplayDao);
verify(categoryDao);
verify(outageDao);
assertEquals("Wrong Number of StatusSections",view.getSectionCount(),statusSections.size());
for (StatusSection statusSection : statusSections) {
assertEquals("StatusSection Name Does Not Match","Section One",statusSection.getName());
Collection <StatusCategory> statusCategorys = statusSection.getCategories();
for(StatusCategory statusCategory : statusCategorys){
assertEquals("StatusCategoryName does not match","Category One",statusCategory.getLabel());
//assertEquals("Category Comment Does not match","Category One Comment",statusCategory.getComment());
assertTrue("Nodes >= 1",statusCategory.getNodes().size() >= 1);
for(StatusNode statusNode : statusCategory.getNodes()){
assertEquals("Label does not match","superLabel",statusNode.getLabel());
}
}
}
}
private Category createCategoryFromLabel(String label) {
Category category = new Category();
category.setLabel(label);
category.setRule("isHTTP");
category.addService("HTTP");
return category;
}
}