Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/release-15.0.2' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Benjamin Reed committed Mar 11, 2015
2 parents a5c1414 + 0203c46 commit 86ea184
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 72 deletions.
@@ -0,0 +1,16 @@
package org.opennms.core.test;

import java.util.Arrays;
import java.util.List;

import org.junit.Assert;

public abstract class OnmsAssert {

public static void assertArrayEqualsIgnoreOrder(final Object[] a, final Object[] b) {
final List<?> aList = Arrays.asList(a);
final List<?> bList = Arrays.asList(b);
Assert.assertTrue(aList.containsAll(bList) && bList.containsAll(aList));
}

}
Expand Up @@ -28,17 +28,26 @@

package org.opennms.features.topology.plugins.topo.linkd.internal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.opennms.core.criteria.restrictions.EqRestriction;
import org.opennms.core.criteria.restrictions.NeRestriction;
import org.opennms.features.topology.api.topo.*;
import org.opennms.features.topology.api.topo.Criteria;
import org.opennms.features.topology.api.topo.EdgeProvider;
import org.opennms.features.topology.api.topo.EdgeRef;
import org.opennms.features.topology.api.topo.EdgeStatusProvider;
import org.opennms.features.topology.api.topo.Status;
import org.opennms.netmgt.dao.api.AlarmDao;
import org.opennms.netmgt.events.api.EventConstants;
import org.opennms.netmgt.model.OnmsAlarm;
import org.opennms.netmgt.model.OnmsSeverity;
import org.opennms.netmgt.model.topology.EdgeAlarmStatusSummary;

import java.util.*;

public abstract class AbstractLinkStatusProvider implements EdgeStatusProvider {

public static class LinkStatus implements Status{
Expand All @@ -60,12 +69,16 @@ public String computeStatus() {

@Override
public Map<String, String> getStatusProperties() {
Map<String, String> statusMap = new HashMap<String, String>();
Map<String, String> statusMap = new LinkedHashMap<String, String>();
statusMap.put("status", m_status);

return statusMap;
}

@Override
public String toString() {
return "LinkStatus[" + m_status + "]";
}
}
private AlarmDao m_alarmDao;

Expand Down Expand Up @@ -96,22 +109,32 @@ public Map<EdgeRef, Status> getStatusForEdges(EdgeProvider edgeProvider, Collect
for (EdgeAlarmStatusSummary eSum : edgeAlarmSummaries) {
String linkId = eSum.getId();
EdgeRef edge = mappedRefs.get(linkId);
if (returnMap.size() > 0 && edge != null) returnMap.put(edge, getLinkStatusForSummary(eSum));

final Status existingStatus = returnMap.get(edge);
final Status edgeStatus = getLinkStatusForSummary(eSum);

if (existingStatus != null) {
if ("unknown".equals(existingStatus.computeStatus())) {
returnMap.put(edge, edgeStatus);
} else if ("up".equals(existingStatus.computeStatus()) && "down".equals(edgeStatus.computeStatus())) {
returnMap.put(edge, edgeStatus);
}
}
}
}

//TODO: handle child edges
return returnMap;
}

protected LinkStatus getLinkStatusForSummary(EdgeAlarmStatusSummary summary) {
protected Status getLinkStatusForSummary(EdgeAlarmStatusSummary summary) {
return new LinkStatus(summary);
};

protected abstract Set<Integer> getLinkIds(Map<String, EdgeRef> mappedRefs);

protected Map<String, EdgeRef> mapRefs(Collection<EdgeRef> edges) {
Map<String, EdgeRef> retVal = new HashMap<String, EdgeRef>();
Map<String, EdgeRef> retVal = new LinkedHashMap<String, EdgeRef>();
for (EdgeRef edge : edges) {
String nameSpace = getNameSpace();
if(edge.getNamespace().equals(nameSpace)) retVal.put(edge.getId(), edge);
Expand All @@ -120,7 +143,7 @@ protected Map<String, EdgeRef> mapRefs(Collection<EdgeRef> edges) {
}

protected Map<EdgeRef, Status> initializeMap(Collection<EdgeRef> edges) {
Map<EdgeRef, Status> retVal = new HashMap<EdgeRef, Status>();
Map<EdgeRef, Status> retVal = new LinkedHashMap<EdgeRef, Status>();
for (EdgeRef edge : edges) {
String nameSpace = getNameSpace();
if(edge.getNamespace().equals(nameSpace)) retVal.put(edge, new LinkStatus("unknown"));
Expand All @@ -134,7 +157,7 @@ public AlarmDao getAlarmDao() {

protected List<OnmsAlarm> getLinkDownAlarms() {
org.opennms.core.criteria.Criteria criteria = new org.opennms.core.criteria.Criteria(OnmsAlarm.class);
criteria.addRestriction(new EqRestriction("uei", "uei.opennms.org/internal/topology/linkDown"));
criteria.addRestriction(new EqRestriction("uei", EventConstants.TOPOLOGY_LINK_DOWN_EVENT_UEI));
criteria.addRestriction(new NeRestriction("severity", OnmsSeverity.CLEARED));
return getAlarmDao().findMatching(criteria);
}
Expand Down
Expand Up @@ -28,20 +28,34 @@

package org.opennms.features.topology.plugins.topo.linkd.internal;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.opennms.features.topology.api.topo.*;
import org.opennms.features.topology.api.topo.AbstractEdge;
import org.opennms.features.topology.api.topo.AbstractVertex;
import org.opennms.features.topology.api.topo.Criteria;
import org.opennms.features.topology.api.topo.EdgeProvider;
import org.opennms.features.topology.api.topo.EdgeRef;
import org.opennms.features.topology.api.topo.Status;
import org.opennms.features.topology.api.topo.Vertex;
import org.opennms.netmgt.dao.api.AlarmDao;
import org.opennms.netmgt.dao.api.BridgeMacLinkDao;
import org.opennms.netmgt.events.api.EventConstants;
import org.opennms.netmgt.model.OnmsAlarm;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.topology.BridgeMacTopologyLink;

import java.util.*;

import static org.junit.Assert.assertEquals;

public class BridgeLinkStatusProviderTest {

private AlarmDao m_alarmDao;
Expand Down Expand Up @@ -223,7 +237,7 @@ private List<OnmsAlarm> createDownAlarm(){
OnmsAlarm alarm = new OnmsAlarm();
alarm.setNode(m_node2);
alarm.setIfIndex(548);
alarm.setUei("uei.opennms.org/internal/topology/linkDown");
alarm.setUei(EventConstants.TOPOLOGY_LINK_DOWN_EVENT_UEI);

return Arrays.asList(alarm);
}
Expand All @@ -232,7 +246,7 @@ private List<OnmsAlarm> createCloudDownAlarm() {
OnmsAlarm alarm = new OnmsAlarm();
alarm.setNode(m_node1);
alarm.setIfIndex(48);
alarm.setUei("uei.opennms.org/internal/topology/linkDown");
alarm.setUei(EventConstants.TOPOLOGY_LINK_DOWN_EVENT_UEI);

return Arrays.asList(alarm);
}
Expand Down
Expand Up @@ -28,25 +28,39 @@

package org.opennms.features.topology.plugins.topo.linkd.internal;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.easymock.EasyMock;
import org.junit.Assert;
import org.opennms.core.test.OnmsAssert;
import org.opennms.core.utils.InetAddressUtils;
import org.opennms.core.utils.LldpUtils.LldpChassisIdSubType;
import org.opennms.core.utils.LldpUtils.LldpPortIdSubType;
import org.opennms.features.topology.api.GraphContainer;
import org.opennms.features.topology.api.OperationContext;
import org.opennms.features.topology.api.topo.*;
import org.opennms.netmgt.dao.api.*;
import org.opennms.netmgt.model.*;
import org.opennms.features.topology.api.topo.AbstractEdge;
import org.opennms.features.topology.api.topo.DefaultVertexRef;
import org.opennms.features.topology.api.topo.GraphProvider;
import org.opennms.features.topology.api.topo.Vertex;
import org.opennms.netmgt.dao.api.IpInterfaceDao;
import org.opennms.netmgt.dao.api.LldpLinkDao;
import org.opennms.netmgt.dao.api.NodeDao;
import org.opennms.netmgt.dao.api.OspfLinkDao;
import org.opennms.netmgt.dao.api.SnmpInterfaceDao;
import org.opennms.netmgt.model.LldpElement;
import org.opennms.netmgt.model.LldpLink;
import org.opennms.netmgt.model.NetworkBuilder;
import org.opennms.netmgt.model.OnmsDistPoller;
import org.opennms.netmgt.model.OnmsIpInterface;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OspfLink;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class EnhancedLinkdMockDataPopulator {

@Autowired
Expand Down Expand Up @@ -607,15 +621,14 @@ public void check(GraphProvider topologyProvider) {
new AbstractEdge(EnhancedLinkdTopologyProvider.LLDP_EDGE_NAMESPACE, "10018|10081", mockVertex, mockVertex),
new AbstractEdge(EnhancedLinkdTopologyProvider.LLDP_EDGE_NAMESPACE, "10078|10087", mockVertex, mockVertex)
};
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "1")), edgeidsforvertex1);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "2")), edgeidsforvertex2);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "3")), edgeidsforvertex3);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "4")), edgeidsforvertex4);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "5")), edgeidsforvertex5);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "6")), edgeidsforvertex6);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "7")), edgeidsforvertex7);
Assert.assertArrayEquals(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "8")), edgeidsforvertex8);

OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "1")), edgeidsforvertex1);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "2")), edgeidsforvertex2);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "3")), edgeidsforvertex3);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "4")), edgeidsforvertex4);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "5")), edgeidsforvertex5);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "6")), edgeidsforvertex6);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "7")), edgeidsforvertex7);
OnmsAssert.assertArrayEqualsIgnoreOrder(topologyProvider.getEdgeIdsForVertex(new DefaultVertexRef(vertexNamespace, "8")), edgeidsforvertex8);
}

public Map<Integer, String> getNodeLabelsById() {
Expand Down
Expand Up @@ -28,36 +28,54 @@

package org.opennms.features.topology.plugins.topo.linkd.internal;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import javax.xml.bind.JAXBException;

import org.easymock.EasyMock;
import org.junit.*;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.opennms.core.test.MockLogAppender;
import org.opennms.core.utils.InetAddressUtils;
import org.opennms.features.topology.api.Constants;
import org.opennms.features.topology.api.OperationContext;
import org.opennms.features.topology.api.topo.*;
import org.opennms.features.topology.api.topo.AbstractVertex;
import org.opennms.features.topology.api.topo.DefaultVertexRef;
import org.opennms.features.topology.api.topo.Edge;
import org.opennms.features.topology.api.topo.EdgeRef;
import org.opennms.features.topology.api.topo.RefComparator;
import org.opennms.features.topology.api.topo.SimpleLeafVertex;
import org.opennms.features.topology.api.topo.Vertex;
import org.opennms.features.topology.api.topo.VertexListener;
import org.opennms.features.topology.api.topo.VertexProvider;
import org.opennms.features.topology.api.topo.VertexRef;
import org.opennms.features.topology.api.topo.WrappedLeafVertex;
import org.opennms.features.topology.api.topo.WrappedVertex;
import org.opennms.netmgt.dao.api.DataLinkInterfaceDao;
import org.opennms.netmgt.dao.api.LldpLinkDao;
import org.opennms.netmgt.dao.api.OspfLinkDao;
import org.opennms.netmgt.model.*;
import org.opennms.netmgt.model.DataLinkInterface;
import org.opennms.netmgt.model.FilterManager;
import org.opennms.netmgt.model.LldpLink;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OspfLink;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.xml.bind.JAXBException;

import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={
"classpath:/META-INF/opennms/applicationContext-enhanced-mock.xml"
Expand Down
Expand Up @@ -28,17 +28,31 @@

package org.opennms.features.topology.plugins.topo.linkd.internal;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.opennms.features.topology.api.topo.*;
import org.opennms.features.topology.api.topo.AbstractEdge;
import org.opennms.features.topology.api.topo.AbstractVertex;
import org.opennms.features.topology.api.topo.Criteria;
import org.opennms.features.topology.api.topo.EdgeProvider;
import org.opennms.features.topology.api.topo.EdgeRef;
import org.opennms.features.topology.api.topo.Status;
import org.opennms.features.topology.api.topo.Vertex;
import org.opennms.netmgt.dao.api.AlarmDao;
import org.opennms.netmgt.dao.api.IsIsLinkDao;
import org.opennms.netmgt.model.*;

import java.util.*;

import static org.junit.Assert.assertEquals;
import org.opennms.netmgt.events.api.EventConstants;
import org.opennms.netmgt.model.IsIsElement;
import org.opennms.netmgt.model.IsIsLink;
import org.opennms.netmgt.model.OnmsAlarm;
import org.opennms.netmgt.model.OnmsNode;

public class IsisLinkStatusProviderTest {

Expand Down Expand Up @@ -152,7 +166,7 @@ private List<OnmsAlarm> createDownAlarm(){
OnmsAlarm alarm1 = new OnmsAlarm();
alarm1.setNode(m_node1);
alarm1.setIfIndex(599);
alarm1.setUei("uei.opennms.org/internal/topology/linkDown");
alarm1.setUei(EventConstants.TOPOLOGY_LINK_DOWN_EVENT_UEI);
alarms.add(alarm1);

return alarms;
Expand Down

0 comments on commit 86ea184

Please sign in to comment.