/*******************************************************************************
* 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.netmgt.mock;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.opennms.netmgt.collectd.SnmpCollector;
import org.opennms.netmgt.config.DataCollectionConfigDao;
import org.opennms.netmgt.config.MibObject;
import org.opennms.netmgt.config.datacollection.ResourceType;
import org.opennms.netmgt.model.RrdRepository;
public class MockDataCollectionConfig implements DataCollectionConfigDao {
public static final String initalMibObjects[][] = {
{
"sysLocation", ".1.3.6.1.2.1.1.6", "0", "string"
},
{
"sysName", ".1.3.6.1.2.1.1.5", "0", "string"
},
{
"sysContact", ".1.3.6.1.2.1.1.4", "0", "string"
},
{
"sysUptime", ".1.3.6.1.2.1.1.3", "0", "timeTicks"
},
{
"sysOid", ".1.3.6.1.2.1.1.2", "0", "string"
},
{
"sysDescr", ".1.3.6.1.2.1.1.1", "0", "string"
},
{
"ifNumber", ".1.3.6.1.2.1.2.1", "0", "integer"
},
{
"ifInDiscards", ".1.3.6.1.2.1.2.2.1.13", "ifIndex", "counter"
},
{
"ifOutErrors", ".1.3.6.1.2.1.2.2.1.20", "ifIndex", "counter"
},
{
"ifInErrors", ".1.3.6.1.2.1.2.2.1.14", "ifIndex", "counter"
},
{
"ifOutOctets", ".1.3.6.1.2.1.2.2.1.16", "ifIndex", "counter"
},
{
"ifInOctets", ".1.3.6.1.2.1.2.2.1.10", "ifIndex", "counter"
},
{
"ifSpeed", ".1.3.6.1.2.1.2.2.1.5", "ifIndex", "gauge"
},
};
private List<MibObject> m_attrList;
private Map<String, MibObject> m_attrMap;
public MockDataCollectionConfig() {
setAttrList(new ArrayList<MibObject>());
setAttrMap(new TreeMap<String, MibObject>());
addInitialAttributeTypes();
}
public void setAttrList(List<MibObject> attrList) {
m_attrList = attrList;
}
public List<MibObject> getAttrList() {
return m_attrList;
}
public void setAttrMap(Map<String, MibObject> attrMap) {
m_attrMap = attrMap;
}
public Map<String, MibObject> getAttrMap() {
return m_attrMap;
}
private MibObject createMibObject(String alias, String oid, String instance, String type) {
MibObject mibObj = new MibObject();
mibObj.setGroupName("test");
mibObj.setAlias(alias);
mibObj.setOid(oid);
mibObj.setType(type);
mibObj.setInstance(instance);
mibObj.setGroupName("ifIndex".equals(instance) ? "interface" : "node");
mibObj.setGroupIfType("ifIndex".equals(instance) ? "all" : "ignored");
return mibObj;
}
public MibObject createAttributeType(String alias, String oid, String instance, String type) {
return createMibObject(alias, oid, instance, type);
}
public MibObject defineAttributeType(String alias, String oid, String instance, String type) {
MibObject mibObj = createAttributeType(alias, oid, instance, type);
getAttrMap().put(mibObj.getAlias(), mibObj);
getAttrMap().put(mibObj.getOid(), mibObj);
return mibObj;
}
public void addInitialAttributeTypes() {
for (int i = 0; i < MockDataCollectionConfig.initalMibObjects.length; i++) {
String[] mibData = MockDataCollectionConfig.initalMibObjects[i];
defineAttributeType(mibData[0], mibData[1], mibData[2], mibData[3]);
}
}
public MibObject getAttributeType(String alias, String oid, String inst, String type) {
MibObject attrType = getAttributeType(alias);
if (attrType != null) return attrType;
return defineAttributeType(alias, oid, inst, type);
}
public MibObject getAttributeType(String aliasOrOid) {
return getAttrMap().get(aliasOrOid);
}
public void addAttributeType(String alias, String oid, String inst, String type) {
MibObject attrType = getAttributeType(alias, oid, inst, type);
getAttrList().add(attrType);
}
public List<String> getRRAList(String collectionName) {
return new ArrayList<String>(0);
}
public String getRrdPath() {
return "/tmp";
}
public String getSnmpStorageFlag(String collectionName) {
return SnmpCollector.SNMP_STORAGE_PRIMARY;
}
public int getStep(String collectionName) {
return 300;
}
public List<MibObject> getMibObjectList(String cName, String aSysoid, String anAddress, int ifType) {
return getAttrList();
}
public Map<String,ResourceType> getConfiguredResourceTypes() {
return new TreeMap<String, ResourceType>();
}
public RrdRepository getRrdRepository(String collectionName) {
RrdRepository repo = new RrdRepository();
repo.setRrdBaseDir(new File(getRrdPath()));
repo.setRraList(getRRAList(collectionName));
repo.setStep(getStep(collectionName));
repo.setHeartBeat((2 * getStep(collectionName)));
return repo;
}
}