use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testBA.
@Test
public void testBA() {
ABCTopology topology = new ABCTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeBId));
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.nodeBId), topology.bftB);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeAId), topology.bftA);
ndbt.calculate();
topology.checkAB(ndbt.getDomain());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testDEF.
@Test
public void testDEF() {
DEFGHILTopology topology = new DEFGHILTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeDId));
domain.addBridge(new Bridge(topology.nodeEId));
domain.addBridge(new Bridge(topology.nodeFId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeDId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeDId), topology.bftD);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeEId), topology.bftE);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeFId), topology.bftF);
ndbt.calculate();
topology.checkDEF(ndbt.getDomain());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testDEFGHIL.
@Test
public void testDEFGHIL() {
DEFGHILTopology topology = new DEFGHILTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeDId));
domain.addBridge(new Bridge(topology.nodeEId));
domain.addBridge(new Bridge(topology.nodeFId));
domain.addBridge(new Bridge(topology.nodeGId));
domain.addBridge(new Bridge(topology.nodeHId));
domain.addBridge(new Bridge(topology.nodeIId));
domain.addBridge(new Bridge(topology.nodeLId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeDId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeDId), topology.bftD);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeEId), topology.bftE);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeFId), topology.bftF);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeGId), topology.bftG);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeHId), topology.bftH);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeIId), topology.bftI);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeLId), topology.bftL);
ndbt.calculate();
topology.check(ndbt.getDomain().getTopology());
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class NodeDiscoveryBridgeTopology method calculate.
protected void calculate() {
LOG.info("calculate: node: [{}], start: broadcast domain {} topology calculation.", getNodeId(), m_domain.getBridgeNodesOnDomain());
if (LOG.isDebugEnabled()) {
LOG.debug("calculate: node: [{}], Print Topology {}", getNodeId(), m_domain.printTopology());
}
Bridge electedRoot = m_domain.electRootBridge();
if (electedRoot == null && m_domain.hasRootBridge()) {
LOG.debug("calculate: node: [{}], electRootBridge: mantaining old root bridge: {}", getNodeId(), m_domain.getRootBridgeId());
electedRoot = m_domain.getRootBridge();
} else if (electedRoot == null) {
// no spanning tree root?
// why I'm here?
// not root bridge defined (this mean no calculation yet done...
// so checking the best into not parsed
int size = 0;
Bridge rootBridge = null;
for (Bridge bridge : m_notYetParsedBFTMap.keySet()) {
LOG.debug("calculate: node: [{}], bridge [{}]: max bft size \"{}\" in topology", getNodeId(), bridge.getId(), m_notYetParsedBFTMap.get(bridge).size());
if (size < m_notYetParsedBFTMap.get(bridge).size()) {
rootBridge = bridge;
size = m_notYetParsedBFTMap.get(bridge).size();
}
}
if (rootBridge != null) {
LOG.debug("calculate: node: [{}], bridge [{}]: elected root with max bft size \"{}\" in topology", getNodeId(), rootBridge.getId(), size);
electedRoot = rootBridge;
}
}
if (electedRoot == null) {
electedRoot = m_domain.getBridges().iterator().next();
LOG.debug("calculate: node: [{}], electRootBridge: first root bridge: {}", getNodeId(), electedRoot.getId());
}
if (electedRoot.getId() == null) {
LOG.error("calculate: node: [{}], electedRootBridge must have an id!", getNodeId());
return;
}
List<BridgeMacLink> rootBft = m_notYetParsedBFTMap.remove(electedRoot);
if (m_domain.hasRootBridge() && m_domain.getRootBridge().getId() == electedRoot.getId() && rootBft == null) {
LOG.debug("calculate: node: [{}], elected root bridge: [{}], old root bridge. no updated bft", getNodeId(), electedRoot.getId());
rootBft = m_domain.calculateRootBFT();
} else if (rootBft != null) {
LOG.debug("calculate: node: [{}], elected root bridge: [{}], has updated bft", getNodeId(), electedRoot.getId());
m_domain.clearTopologyForBridge(electedRoot.getId());
LOG.debug("calculate: node: [{}], cleared topology: domain root bridge: [{}]", getNodeId(), m_domain.getRootBridgeId());
if (m_domain.getTopology().isEmpty()) {
LOG.debug("calculate: node: [{}], new elected root bridge: [{}], is the first bridge in topology. Adding root shared segments", getNodeId(), electedRoot.getId());
loadFirstLevelSharedSegment(rootBft);
electedRoot.setRootBridge(true);
electedRoot.setRootPort(null);
} else {
calculate(m_domain.getRootBridge(), m_domain.calculateRootBFT(), electedRoot, rootBft);
addForwarding(m_domain, rootBft);
m_domain.hierarchySetUp(electedRoot);
}
} else {
LOG.debug("calculate: node: [{}], elected root bridge: [{}], is new, without updated bft", getNodeId(), electedRoot.getId());
m_domain.hierarchySetUp(electedRoot);
rootBft = m_domain.calculateRootBFT();
}
if (!m_notYetParsedBFTMap.isEmpty()) {
for (Bridge xBridge : m_notYetParsedBFTMap.keySet()) {
m_domain.clearTopologyForBridge(xBridge.getId());
LOG.debug("calculate: node: [{}], Removed bridge: [{}].", getNodeId(), xBridge.getId());
}
}
Set<Bridge> nodetobeparsed = new HashSet<Bridge>(m_notYetParsedBFTMap.keySet());
for (Bridge xBridge : nodetobeparsed) {
List<BridgeMacLink> xBft = new ArrayList<BridgeMacLink>(m_notYetParsedBFTMap.remove(xBridge));
calculate(electedRoot, rootBft, xBridge, xBft);
}
m_domain.cleanForwarders(m_domain.getMacsOnDomain());
if (LOG.isDebugEnabled()) {
LOG.debug("calculate: node: [{}], Print Topology {}", getNodeId(), m_domain.printTopology());
}
if (LOG.isInfoEnabled()) {
LOG.info("calculate: node: [{}], stop: broadcast domain {} topology calculated.", getNodeId(), m_domain.getBridgeNodesOnDomain());
}
}
use of org.opennms.netmgt.model.topology.Bridge in project opennms by OpenNMS.
the class BroadcastDomainTest method testHierarchySetUp.
@Test
public void testHierarchySetUp() {
DEFGHILTopology topology = new DEFGHILTopology();
BroadcastDomain domain = new BroadcastDomain();
domain.addBridge(new Bridge(topology.nodeDId));
domain.addBridge(new Bridge(topology.nodeEId));
domain.addBridge(new Bridge(topology.nodeFId));
domain.addBridge(new Bridge(topology.nodeGId));
domain.addBridge(new Bridge(topology.nodeHId));
domain.addBridge(new Bridge(topology.nodeIId));
domain.addBridge(new Bridge(topology.nodeLId));
domain.setBridgeElements(topology.elemlist);
NodeDiscoveryBridgeTopology ndbt = new NodeDiscoveryBridgeTopology(linkd, new Node(topology.nodeDId, null, null, null, location));
ndbt.setDomain(domain);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeDId), topology.bftD);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeEId), topology.bftE);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeFId), topology.bftF);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeGId), topology.bftG);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeHId), topology.bftH);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeIId), topology.bftI);
ndbt.addUpdatedBFT(domain.getBridge(topology.nodeLId), topology.bftL);
ndbt.calculate();
topology.check(ndbt.getDomain().getTopology());
domain.hierarchySetUp(domain.getBridge(topology.nodeGId));
assertEquals(topology.nodeGId, ndbt.getDomain().getRootBridgeId());
assertEquals(true, ndbt.getDomain().getBridge(topology.nodeGId).isRootBridge());
assertEquals(null, ndbt.getDomain().getBridge(topology.nodeGId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeDId).isRootBridge());
assertEquals(topology.portDD, ndbt.getDomain().getBridge(topology.nodeDId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeEId).isRootBridge());
assertEquals(topology.portEE, ndbt.getDomain().getBridge(topology.nodeEId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeFId).isRootBridge());
assertEquals(topology.portFF, ndbt.getDomain().getBridge(topology.nodeFId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeHId).isRootBridge());
assertEquals(topology.portHH, ndbt.getDomain().getBridge(topology.nodeHId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeIId).isRootBridge());
assertEquals(topology.portII, ndbt.getDomain().getBridge(topology.nodeIId).getRootPort());
assertEquals(false, ndbt.getDomain().getBridge(topology.nodeLId).isRootBridge());
assertEquals(topology.portLL, ndbt.getDomain().getBridge(topology.nodeLId).getRootPort());
}
Aggregations