Search in sources :

Example 21 with Bridge

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());
}
Also used : BroadcastDomain(org.opennms.netmgt.model.topology.BroadcastDomain) SharedSegment(org.opennms.netmgt.model.topology.SharedSegment) Bridge(org.opennms.netmgt.model.topology.Bridge) Test(org.junit.Test)

Example 22 with Bridge

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;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) ArrayList(java.util.ArrayList) BroadcastDomain(org.opennms.netmgt.model.topology.BroadcastDomain) BridgeBridgeLink(org.opennms.netmgt.model.BridgeBridgeLink) SharedSegment(org.opennms.netmgt.model.topology.SharedSegment) BridgeMacLink(org.opennms.netmgt.model.BridgeMacLink) Bridge(org.opennms.netmgt.model.topology.Bridge) HashSet(java.util.HashSet)

Example 23 with Bridge

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());
}
Also used : BroadcastDomain(org.opennms.netmgt.model.topology.BroadcastDomain) Bridge(org.opennms.netmgt.model.topology.Bridge) Test(org.junit.Test)

Example 24 with Bridge

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());
}
Also used : BroadcastDomain(org.opennms.netmgt.model.topology.BroadcastDomain) Bridge(org.opennms.netmgt.model.topology.Bridge) Test(org.junit.Test)

Example 25 with Bridge

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);
        }
    }
}
Also used : BroadcastDomain(org.opennms.netmgt.model.topology.BroadcastDomain) SharedSegment(org.opennms.netmgt.model.topology.SharedSegment) BridgeMacLink(org.opennms.netmgt.model.BridgeMacLink) Bridge(org.opennms.netmgt.model.topology.Bridge) Test(org.junit.Test)

Aggregations

Bridge (org.opennms.netmgt.model.topology.Bridge)47 BroadcastDomain (org.opennms.netmgt.model.topology.BroadcastDomain)45 Test (org.junit.Test)42 BridgeMacLink (org.opennms.netmgt.model.BridgeMacLink)7 SharedSegment (org.opennms.netmgt.model.topology.SharedSegment)7 ArrayList (java.util.ArrayList)5 HashSet (java.util.HashSet)5 List (java.util.List)3 HashMap (java.util.HashMap)2 Set (java.util.Set)2 BridgeBridgeLink (org.opennms.netmgt.model.BridgeBridgeLink)2 Date (java.util.Date)1 CopyOnWriteArraySet (java.util.concurrent.CopyOnWriteArraySet)1