PerfGraphBuilderServiceTest.java :  » Net » OpenNMS-1.6.11 » org » opennms » web » svclayer » Java Open Source

Java Open Source » Net » OpenNMS 1.6.11 
OpenNMS 1.6.11 » org » opennms » web » svclayer » PerfGraphBuilderServiceTest.java
//
// This file is part of the OpenNMS(R) Application.
//
// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
// OpenNMS(R) is a derivative work, containing both original code, included code and modified
// code that was published under the GNU General Public License. Copyrights for modified
// and included code are below.
//
// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
//
// Original code base Copyright (C) 1999-2001 Oculan Corp.  All rights reserved.
//
// This program 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 2 of the License, or
// (at your option) any later version.
//
// This program 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 this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// For more information contact:
//      OpenNMS Licensing       <license@opennms.org>
//      http://www.opennms.org/
//      http://www.opennms.com/
//
package org.opennms.web.svclayer;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.opennms.web.svclayer.PaletteTestUtils.assertPaletteEquals;

import java.util.Collection;
import java.util.LinkedList;

import junit.framework.TestCase;

import org.opennms.netmgt.dao.AttributeSecretDao;
import org.opennms.netmgt.dao.NodeDao;
import org.opennms.netmgt.model.OnmsSecretAttribute;
import org.opennms.netmgt.model.OnmsIpInterface;
import org.opennms.netmgt.model.OnmsMonitoredService;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OnmsServiceType;

public class PerfGraphBuilderServiceTest extends TestCase {
  
  DefaultPerfGraphBuilderService m_perfGraphBuilderService;
  NodeDao m_mockNodeDao;
  AttributeSecretDao m_mockAttributeDao;

  protected void setUp() throws Exception {
    
    m_mockNodeDao = createMock(NodeDao.class);
    m_mockAttributeDao = createMock(AttributeSecretDao.class);
    
    m_perfGraphBuilderService = new DefaultPerfGraphBuilderService();
    m_perfGraphBuilderService.setNodeDao(m_mockNodeDao);
    m_perfGraphBuilderService.setAttributeDao(m_mockAttributeDao);
  }
  
  public void testCreateGraphDefinition() {
    
    assertNotNull(m_perfGraphBuilderService.createGraphDefinition());
    
  }
  
  class AttributeBuilder {

    private Collection<OnmsSecretAttribute> m_attributes;

    public void addAttribute(String id, String label) {
      if (m_attributes == null)
        m_attributes = new LinkedList<OnmsSecretAttribute>();
      
      OnmsSecretAttribute attr = new OnmsSecretAttribute(id, label);
      m_attributes.add(attr);
    }

    public Collection<OnmsSecretAttribute> getAttributes() {
      return m_attributes;
    }
    
  }
  
  class NodeBuilder extends AttributeBuilder {
    private OnmsNode m_node;
    NodeBuilder(int id, String label) {
      m_node = new OnmsNode();
      m_node.setId(id);
      m_node.setLabel(label);
    }
    
    public OnmsNode getNode() {
      return m_node;
    }
    
    public IfBuilder addInterface(String ipAddr) {
      return new IfBuilder(ipAddr, m_node);
    }
  }
  
  class IfBuilder extends AttributeBuilder {
    
    private OnmsIpInterface m_iface;
    public IfBuilder(String ipAddr, OnmsNode node) {
      m_iface = new OnmsIpInterface(ipAddr, node);
    }

    public OnmsIpInterface getInterface() {
      return m_iface;
    }
    
    public OnmsMonitoredService addService(String svcName) {
      OnmsServiceType svcType = new OnmsServiceType(svcName);
      OnmsMonitoredService svc = new OnmsMonitoredService(m_iface, svcType);
      return svc;
    }
    
    
  }
  
  public void testGetAttributesForResource() {

    // the node
    NodeBuilder nodeBuilder = new NodeBuilder(1, "TestNode");
    OnmsNode node = nodeBuilder.getNode();
    
    // expect the node dao to be called to retrieve this node
    expect(m_mockNodeDao.get(1)).andReturn(node);

    // the expected palette for the node
    PaletteBuilder paletteBuilder = new PaletteBuilder("TestNode");
    
    Palette expectedPalette = paletteBuilder.getPalette();
    paletteBuilder.addCategory("Node Attributes");

    // the node attributes
    addAttribute(nodeBuilder, paletteBuilder, "node:1:avgBusy5", "Avg Busy 5");
    addAttribute(nodeBuilder, paletteBuilder, "node:1:tcpResets", "Tcp Resets");
    addAttribute(nodeBuilder, paletteBuilder, "node:1:avgBusy15", "Avg Busy 15");

    // expect the attributes dao to be called to retrived the attributes for the node
    expect(m_mockAttributeDao.getAttributesForNode(node)).andReturn(nodeBuilder.getAttributes());
    
    int ifCount = 3;
    // add ip interfaces
    String[] svcTypes = new String[] { "ICMP", "SSH", "HTTP" };
    for(int i = 1; i <= ifCount; i++) {
      
      IfBuilder ifBuilder = nodeBuilder.addInterface("192.168.1."+i);
      paletteBuilder.addCategory("Interface: 192.168.1."+i);
      
      addAttribute(ifBuilder, paletteBuilder, "if:192.168.1."+i+":ifInOctets", "If In Octets");
      addAttribute(ifBuilder, paletteBuilder, "if:192.168.1."+i+":ifInOctets", "If Out Octets");
      
      expect(m_mockAttributeDao.getAttributesForInterface(ifBuilder.getInterface())).andReturn(ifBuilder.getAttributes());
      
      paletteBuilder.addSpacer();
      
      for (String svcName : svcTypes) {
        
        OnmsMonitoredService svc = ifBuilder.addService(svcName);
        OnmsSecretAttribute attr = new OnmsSecretAttribute("svc:192.168.1."+i+":"+svcName+":responseTime", "responseTime");

        //expect(m_mockAttributeDao.getResponseTimeAttributeForService(svc)).andReturn(attr);
        //paletteBuilder.addItem("svc:192.168.1."+i+":"+svcName+":responseTime", svcName);
      }
      
    }    

    replay(m_mockNodeDao);
    replay(m_mockAttributeDao);
    
    Palette actualPalette = m_perfGraphBuilderService.getAttributePalette(1);
    assertNotNull(actualPalette);
    
    assertPaletteEquals(expectedPalette, actualPalette);
    
    verify(m_mockNodeDao);
    verify(m_mockAttributeDao);
  }

  private void addAttribute(AttributeBuilder attrBuilder, PaletteBuilder paletteBuilder, String id, String label) {
    attrBuilder.addAttribute(id, label);
    paletteBuilder.addItem(id, label);
  }

}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.