use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testTwoBridgeTwoCalculation.
@Test
public void testTwoBridgeTwoCalculation() {
TwoNodeTopology topology = new TwoNodeTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeBId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeAId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeBId), topology.bftB);
ndbt.calculate();
List<SharedSegment> shsegs = ndbt.getDomain().getTopology();
assertEquals(3, shsegs.size());
domain.addBridge(new Bridge(topology.nodeAId));
domain.setBridgeElements(topology.elemlist);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeAId), topology.bftA);
ndbt.calculate();
topology.check2nodeTopology(ndbt.getDomain(), true);
assertEquals(topology.nodeBId, domain.getRootBridgeId());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BridgeTopologyDaoInMemory method getAllPersisted.
@Override
public Set<BroadcastDomain> getAllPersisted(BridgeBridgeLinkDao bridgeBridgeLinkDao, BridgeMacLinkDao bridgeMacLinkDao) {
List<SharedSegment> segments = new ArrayList<SharedSegment>();
BRIDGELINK: for (BridgeBridgeLink link : bridgeBridgeLinkDao.findAll()) {
for (SharedSegment segment : segments) {
if (segment.containsPort(link.getNode().getId(), link.getBridgePort()) || segment.containsPort(link.getDesignatedNode().getId(), link.getDesignatedPort())) {
segment.add(link);
continue BRIDGELINK;
}
}
SharedSegment segment = new SharedSegment();
segment.add(link);
segment.setDesignatedBridge(link.getDesignatedNode().getId());
segments.add(segment);
}
MACLINK: for (BridgeMacLink link : bridgeMacLinkDao.findAll()) {
link.setBridgeDot1qTpFdbStatus(BridgeDot1qTpFdbStatus.DOT1D_TP_FDB_STATUS_LEARNED);
for (SharedSegment segment : segments) {
if (segment.containsMac(link.getMacAddress()) || segment.containsPort(link.getNode().getId(), link.getBridgePort())) {
segment.add(link);
continue MACLINK;
}
}
SharedSegment segment = new SharedSegment();
segment.add(link);
segment.setDesignatedBridge(link.getNode().getId());
segments.add(segment);
}
Set<Set<Integer>> nodelinked = new HashSet<Set<Integer>>();
SHARED: for (SharedSegment segment : segments) {
Set<Integer> nodesOnSegment = new HashSet<Integer>(segment.getBridgeIdsOnSegment());
for (Set<Integer> nodes : nodelinked) {
for (Integer nodeid : nodesOnSegment) {
if (nodes.contains(nodeid))
continue SHARED;
}
}
nodelinked.add(getNodesOnDomainSet(segments, segment, new HashSet<SharedSegment>(), nodesOnSegment));
}
Set<BroadcastDomain> domains = new HashSet<BroadcastDomain>();
for (Set<Integer> nodes : nodelinked) {
BroadcastDomain domain = new BroadcastDomain();
for (Integer nodeid : nodes) domain.addBridge(new Bridge(nodeid));
domains.add(domain);
}
// Assign the segment to domain and add to single nodes
for (SharedSegment segment : segments) {
BroadcastDomain domain = null;
for (BroadcastDomain cdomain : domains) {
if (cdomain.containsAtleastOne(segment.getBridgeIdsOnSegment())) {
domain = cdomain;
break;
}
}
if (domain == null) {
domain = new BroadcastDomain();
domains.add(domain);
}
domain.loadTopologyEntry(segment);
}
return domains;
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testOneBridgeComplete.
@Test
public void testOneBridgeComplete() throws Exception {
OneBridgeCompleteTopology topology = new OneBridgeCompleteTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeAId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeAId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeAId), topology.bftA);
ndbt.calculate();
assertEquals(topology.nodeAId.intValue(), domain.getRootBridge().getId().intValue());
topology.check(ndbt.getDomain());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testABC.
@Test
public void testABC() {
ABCTopology topology = new ABCTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeAId));
domain.addBridge(new Bridge(topology.nodeBId));
domain.addBridge(new Bridge(topology.nodeCId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeAId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeAId), topology.bftA);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeBId), topology.bftB);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeCId), topology.bftC);
ndbt.calculate();
topology.check(ndbt.getDomain());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testCleanTopologyRoot.
@Test
public void testCleanTopologyRoot() {
TwoBridgeWithBackbonePortsTopology topology = new TwoBridgeWithBackbonePortsTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeAId));
domain.addBridge(new Bridge(topology.nodeBId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeAId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeAId), topology.bftA);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeBId), topology.bftB);
ndbt.calculate();
domain.clearTopologyForBridge(topology.nodeAId);
assertEquals(5, domain.getMacsOnDomain().size());
assertEquals(topology.nodeBId.intValue(), domain.getRootBridge().getId().intValue());
assertEquals(2, domain.getTopology().size());
for (SharedSegment segment : domain.getTopology()) {
assertEquals(0, segment.getBridgeBridgeLinks().size());
assertEquals(1, segment.getBridgeIdsOnSegment().size());
assertEquals(topology.nodeBId.intValue(), segment.getBridgeIdsOnSegment().iterator().next().intValue());
if (segment.containsMac(topology.macA11) && segment.containsMac(topology.macA12) && segment.containsMac(topology.macAB)) {
assertEquals(3, segment.getMacsOnSegment().size());
assertEquals(3, segment.getBridgeMacLinks().size());
for (BridgeMacLink link : segment.getBridgeMacLinks()) {
assertEquals(topology.portBA.intValue(), link.getBridgePort().intValue());
}
} else if (segment.containsMac(topology.macB21) && segment.containsMac(topology.macB22)) {
assertEquals(2, segment.getMacsOnSegment().size());
assertEquals(2, segment.getBridgeMacLinks().size());
for (BridgeMacLink link : segment.getBridgeMacLinks()) {
assertEquals(topology.portB2.intValue(), link.getBridgePort().intValue());
}
} else {
assertEquals(true, false);
}
}
}
Aggregations