/** * compareTo * * @param o a {@link org.opennms.netmgt.model.DataLinkInterface} object. * @return a int. */ public int compareTo(final DataLinkInterface o) { return new CompareToBuilder() .append(getId(), o.getId()) .append(getNode(), o.getNode()) .append(getIfIndex(), o.getIfIndex()) .append(getSource(), o.getSource()) .append(getNodeParentId(), o.getNodeParentId()) .append(getParentIfIndex(), o.getParentIfIndex()) .append(getStatus(), o.getStatus()) .append(getLastPollTime(), o.getLastPollTime()) .append(getLinkTypeId(), o.getLinkTypeId()) .toComparison(); }
/* * * Get only ospf links. */ @Test @JUnitSnmpAgents( value = { @JUnitSnmpAgent( host = MUMBAI_IP, port = 161, resource = "classpath:linkd/nms10205/" + MUMBAI_NAME + "_" + MUMBAI_IP + ".txt"), @JUnitSnmpAgent( host = CHENNAI_IP, port = 161, resource = "classpath:linkd/nms10205/" + CHENNAI_NAME + "_" + CHENNAI_IP + ".txt"), @JUnitSnmpAgent( host = DELHI_IP, port = 161, resource = "classpath:linkd/nms10205/" + DELHI_NAME + "_" + DELHI_IP + ".txt"), @JUnitSnmpAgent( host = BANGALORE_IP, port = 161, resource = "classpath:linkd/nms10205/" + BANGALORE_NAME + "_" + BANGALORE_IP + ".txt"), @JUnitSnmpAgent( host = BAGMANE_IP, port = 161, resource = "classpath:linkd/nms10205/" + BAGMANE_NAME + "_" + BAGMANE_IP + ".txt"), @JUnitSnmpAgent( host = MYSORE_IP, port = 161, resource = "classpath:linkd/nms10205/" + MYSORE_NAME + "_" + MYSORE_IP + ".txt"), @JUnitSnmpAgent( host = SPACE_EX_SW1_IP, port = 161, resource = "classpath:linkd/nms10205/" + SPACE_EX_SW1_NAME + "_" + SPACE_EX_SW1_IP + ".txt"), @JUnitSnmpAgent( host = SPACE_EX_SW2_IP, port = 161, resource = "classpath:linkd/nms10205/" + SPACE_EX_SW2_NAME + "_" + SPACE_EX_SW2_IP + ".txt"), @JUnitSnmpAgent( host = J6350_41_IP, port = 161, resource = "classpath:linkd/nms10205/" + J6350_41_NAME + "_" + J6350_41_IP + ".txt"), @JUnitSnmpAgent( host = J6350_42_IP, port = 161, resource = "classpath:linkd/nms10205/" + "J6350-42_" + J6350_42_IP + ".txt"), @JUnitSnmpAgent( host = SRX_100_IP, port = 161, resource = "classpath:linkd/nms10205/" + "SRX-100_" + SRX_100_IP + ".txt"), @JUnitSnmpAgent( host = SSG550_IP, port = 161, resource = "classpath:linkd/nms10205/" + SSG550_NAME + "_" + SSG550_IP + ".txt") }) public void testNetwork10205OspfLinks() throws Exception { m_nodeDao.save(getMumbai()); m_nodeDao.save(getChennai()); m_nodeDao.save(getDelhi()); m_nodeDao.save(getBangalore()); m_nodeDao.save(getBagmane()); m_nodeDao.save(getMysore()); m_nodeDao.save(getSpaceExSw1()); m_nodeDao.save(getSpaceExSw2()); m_nodeDao.save(getJ635041()); m_nodeDao.save(getJ635042()); m_nodeDao.save(getSRX100()); m_nodeDao.save(getSGG550()); m_nodeDao.flush(); Package example1 = m_linkdConfig.getPackage("example1"); example1.setUseLldpDiscovery(false); example1.setUseCdpDiscovery(false); example1.setUseBridgeDiscovery(false); example1.setUseIpRouteDiscovery(false); example1.setSaveRouteTable(false); example1.setSaveStpInterfaceTable(false); example1.setSaveStpNodeTable(false); final OnmsNode mumbai = m_nodeDao.findByForeignId("linkd", MUMBAI_NAME); final OnmsNode chennai = m_nodeDao.findByForeignId("linkd", CHENNAI_NAME); final OnmsNode delhi = m_nodeDao.findByForeignId("linkd", DELHI_NAME); final OnmsNode bangalore = m_nodeDao.findByForeignId("linkd", BANGALORE_NAME); final OnmsNode bagmane = m_nodeDao.findByForeignId("linkd", BAGMANE_NAME); final OnmsNode mysore = m_nodeDao.findByForeignId("linkd", MYSORE_NAME); final OnmsNode spaceexsw1 = m_nodeDao.findByForeignId("linkd", SPACE_EX_SW1_NAME); final OnmsNode spaceexsw2 = m_nodeDao.findByForeignId("linkd", SPACE_EX_SW2_NAME); final OnmsNode j635041 = m_nodeDao.findByForeignId("linkd", J6350_41_NAME); final OnmsNode j635042 = m_nodeDao.findByForeignId("linkd", J6350_42_NAME); final OnmsNode srx100 = m_nodeDao.findByForeignId("linkd", SRX_100_NAME); final OnmsNode ssg550 = m_nodeDao.findByForeignId("linkd", SSG550_NAME); assertTrue(m_linkd.scheduleNodeCollection(chennai.getId())); assertTrue(m_linkd.scheduleNodeCollection(mumbai.getId())); assertTrue(m_linkd.scheduleNodeCollection(delhi.getId())); assertTrue(m_linkd.scheduleNodeCollection(bangalore.getId())); assertTrue(m_linkd.scheduleNodeCollection(bagmane.getId())); assertTrue(m_linkd.scheduleNodeCollection(mysore.getId())); assertTrue(m_linkd.scheduleNodeCollection(spaceexsw1.getId())); assertTrue(m_linkd.scheduleNodeCollection(spaceexsw2.getId())); assertTrue(m_linkd.scheduleNodeCollection(j635041.getId())); assertTrue(m_linkd.scheduleNodeCollection(j635042.getId())); assertTrue(m_linkd.scheduleNodeCollection(srx100.getId())); assertTrue(m_linkd.scheduleNodeCollection(ssg550.getId())); assertTrue(m_linkd.runSingleSnmpCollection(mumbai.getId())); assertTrue(m_linkd.runSingleSnmpCollection(chennai.getId())); assertTrue(m_linkd.runSingleSnmpCollection(delhi.getId())); assertTrue(m_linkd.runSingleSnmpCollection(bangalore.getId())); assertTrue(m_linkd.runSingleSnmpCollection(bagmane.getId())); assertTrue(m_linkd.runSingleSnmpCollection(mysore.getId())); assertTrue(m_linkd.runSingleSnmpCollection(spaceexsw1.getId())); assertTrue(m_linkd.runSingleSnmpCollection(spaceexsw2.getId())); assertTrue(m_linkd.runSingleSnmpCollection(j635041.getId())); assertTrue(m_linkd.runSingleSnmpCollection(j635042.getId())); assertTrue(m_linkd.runSingleSnmpCollection(srx100.getId())); assertTrue(m_linkd.runSingleSnmpCollection(ssg550.getId())); assertEquals(0, m_dataLinkInterfaceDao.countAll()); assertTrue(m_linkd.runSingleLinkDiscovery("example1")); final List<DataLinkInterface> links = m_dataLinkInterfaceDao.findAll(); assertEquals(9, links.size()); int start = getStartPoint(links); for (final DataLinkInterface datalinkinterface : links) { int id = datalinkinterface.getId().intValue(); if (start == id) { checkLink(chennai, mumbai, 528, 520, datalinkinterface); } else if (start + 1 == id) { checkLink(delhi, mumbai, 28503, 519, datalinkinterface); } else if (start + 2 == id) { checkLink(bangalore, mumbai, 2401, 507, datalinkinterface); } else if (start + 3 == id) { checkLink(bagmane, mumbai, 534, 977, datalinkinterface); } else if (start + 4 == id) { checkLink(mysore, mumbai, 508, 978, datalinkinterface); } else if (start + 5 == id) { checkLink(mysore, chennai, 505, 517, datalinkinterface); } else if (start + 6 == id) { checkLink(bangalore, delhi, 2397, 3674, datalinkinterface); } else if (start + 7 == id) { checkLink(bagmane, bangalore, 1732, 2396, datalinkinterface); } else if (start + 8 == id) { checkLink(mysore, bagmane, 520, 654, datalinkinterface); } else { checkLink(mumbai, mumbai, -1, -1, datalinkinterface); } } }
/* * We want to test that the next hop router discovered * links can be discovered using the ospf neb table */ @Test @JUnitSnmpAgents( value = { @JUnitSnmpAgent(host = PENROSE_IP, port = 161, resource = PENROSE_SNMP_RESOURCE), @JUnitSnmpAgent(host = DELAWARE_IP, port = 161, resource = DELAWARE_SNMP_RESOURCE), @JUnitSnmpAgent(host = PHOENIX_IP, port = 161, resource = PHOENIX_SNMP_RESOURCE), @JUnitSnmpAgent(host = AUSTIN_IP, port = 161, resource = AUSTIN_SNMP_RESOURCE), @JUnitSnmpAgent(host = SANJOSE_IP, port = 161, resource = SANJOSE_SNMP_RESOURCE), @JUnitSnmpAgent(host = RIOVISTA_IP, port = 161, resource = RIOVISTA_SNMP_RESOURCE) }) public void testNetwork1055OspfLinks() throws Exception { m_nodeDao.save(builder.getPenrose()); m_nodeDao.save(builder.getDelaware()); m_nodeDao.save(builder.getPhoenix()); m_nodeDao.save(builder.getAustin()); m_nodeDao.save(builder.getSanjose()); m_nodeDao.save(builder.getRiovista()); m_nodeDao.flush(); Package example1 = m_linkdConfig.getPackage("example1"); example1.setUseBridgeDiscovery(false); example1.setUseLldpDiscovery(false); example1.setUseCdpDiscovery(false); example1.setUseIpRouteDiscovery(false); example1.setUseOspfDiscovery(true); example1.setUseIsisDiscovery(false); example1.setSaveRouteTable(false); example1.setSaveStpInterfaceTable(false); example1.setSaveStpNodeTable(false); m_linkdConfig.update(); final OnmsNode penrose = m_nodeDao.findByForeignId("linkd", PENROSE_NAME); final OnmsNode delaware = m_nodeDao.findByForeignId("linkd", DELAWARE_NAME); final OnmsNode phoenix = m_nodeDao.findByForeignId("linkd", PHOENIX_NAME); final OnmsNode austin = m_nodeDao.findByForeignId("linkd", AUSTIN_NAME); final OnmsNode sanjose = m_nodeDao.findByForeignId("linkd", SANJOSE_NAME); final OnmsNode riovista = m_nodeDao.findByForeignId("linkd", RIOVISTA_NAME); assertTrue(m_linkd.scheduleNodeCollection(penrose.getId())); assertTrue(m_linkd.scheduleNodeCollection(delaware.getId())); assertTrue(m_linkd.scheduleNodeCollection(phoenix.getId())); assertTrue(m_linkd.scheduleNodeCollection(austin.getId())); assertTrue(m_linkd.scheduleNodeCollection(sanjose.getId())); assertTrue(m_linkd.scheduleNodeCollection(riovista.getId())); assertTrue(m_linkd.runSingleSnmpCollection(penrose.getId())); assertTrue(m_linkd.runSingleSnmpCollection(delaware.getId())); assertTrue(m_linkd.runSingleSnmpCollection(phoenix.getId())); assertTrue(m_linkd.runSingleSnmpCollection(austin.getId())); assertTrue(m_linkd.runSingleSnmpCollection(sanjose.getId())); assertTrue(m_linkd.runSingleSnmpCollection(riovista.getId())); assertEquals(0, m_dataLinkInterfaceDao.countAll()); assertTrue(m_linkd.runSingleLinkDiscovery("example1")); assertEquals(5, m_dataLinkInterfaceDao.countAll()); final List<DataLinkInterface> links = m_dataLinkInterfaceDao.findAll(); final int start = getStartPoint(links); for (final DataLinkInterface datalinkinterface : links) { Integer linkid = datalinkinterface.getId(); if (linkid == start) { // penrose -> delaware --ip route next hop checkLink(delaware, penrose, 598, 535, datalinkinterface); } else if (linkid == start + 1) { // penrose -> phoenix --ip route next hop checkLink(phoenix, penrose, 564, 644, datalinkinterface); } else if (linkid == start + 2) { // phoenix -> austin --ip route next hop checkLink(austin, phoenix, 554, 565, datalinkinterface); } else if (linkid == start + 3) { // phoenix -> sanjose --ip route next hop checkLink(sanjose, phoenix, 564, 566, datalinkinterface); } else if (linkid == start + 4) { // austin -> sanjose --ip route next hop checkLink(sanjose, austin, 8562, 586, datalinkinterface); } else { // error checkLink(penrose, penrose, -1, -1, datalinkinterface); } } }
/* * The * MUMBAI:port ge 0/1/3:ip 192.168.5.5 ------> CHENNAI:port ge 4/0/2: ip 192.168.5.6 * MUMBAI:port ge 0/1/2:ip 192.168.5.9 ------> DELHI:port ge 1/0/2: ip 192.168.5.10 * MUMBAI:port ge 0/0/1:ip 192.168.5.13 ------> BANGALORE:port ge 0/0/0: ip 192.168.5.14 * DELHI:port ge 1/0/1:ip 192.168.1.5 ------> BANGALORE:port ge 0/0/1: ip 192.168.1.6 * DELHI:port ge 1/1/6:ip 172.16.7.1 ------> Space-EX-SW1: port 0/0/6: ip 172.16.7.1 ???? same ip address * CHENNAI:port ge 4/0/3:ip 192.168.1.1 ------> DELHI: port ge 1/1/0: ip 192.168.1.2 * * a lot of duplicated ip this is a clear proof that linkd is not able to * gather topology of this lab using the useBridgeTopology and ip routes. */ @Test @JUnitSnmpAgents( value = { @JUnitSnmpAgent( host = MUMBAI_IP, port = 161, resource = "classpath:linkd/nms10205/" + MUMBAI_NAME + "_" + MUMBAI_IP + ".txt"), @JUnitSnmpAgent( host = CHENNAI_IP, port = 161, resource = "classpath:linkd/nms10205/" + CHENNAI_NAME + "_" + CHENNAI_IP + ".txt"), @JUnitSnmpAgent( host = DELHI_IP, port = 161, resource = "classpath:linkd/nms10205/" + DELHI_NAME + "_" + DELHI_IP + ".txt"), @JUnitSnmpAgent( host = BANGALORE_IP, port = 161, resource = "classpath:linkd/nms10205/" + BANGALORE_NAME + "_" + BANGALORE_IP + ".txt"), @JUnitSnmpAgent( host = BAGMANE_IP, port = 161, resource = "classpath:linkd/nms10205/" + BAGMANE_NAME + "_" + BAGMANE_IP + ".txt"), @JUnitSnmpAgent( host = MYSORE_IP, port = 161, resource = "classpath:linkd/nms10205/" + MYSORE_NAME + "_" + MYSORE_IP + ".txt"), @JUnitSnmpAgent( host = SPACE_EX_SW1_IP, port = 161, resource = "classpath:linkd/nms10205/" + SPACE_EX_SW1_NAME + "_" + SPACE_EX_SW1_IP + ".txt"), @JUnitSnmpAgent( host = SPACE_EX_SW2_IP, port = 161, resource = "classpath:linkd/nms10205/" + SPACE_EX_SW2_NAME + "_" + SPACE_EX_SW2_IP + ".txt"), @JUnitSnmpAgent( host = J6350_41_IP, port = 161, resource = "classpath:linkd/nms10205/" + J6350_41_NAME + "_" + J6350_41_IP + ".txt"), @JUnitSnmpAgent( host = J6350_42_IP, port = 161, resource = "classpath:linkd/nms10205/" + "J6350-42_" + J6350_42_IP + ".txt"), @JUnitSnmpAgent( host = SRX_100_IP, port = 161, resource = "classpath:linkd/nms10205/" + "SRX-100_" + SRX_100_IP + ".txt"), @JUnitSnmpAgent( host = SSG550_IP, port = 161, resource = "classpath:linkd/nms10205/" + SSG550_NAME + "_" + SSG550_IP + ".txt") }) public void testNetwork10205Links() throws Exception { m_nodeDao.save(getMumbai()); m_nodeDao.save(getChennai()); m_nodeDao.save(getDelhi()); m_nodeDao.save(getBangalore()); m_nodeDao.save(getBagmane()); m_nodeDao.save(getMysore()); m_nodeDao.save(getSpaceExSw1()); m_nodeDao.save(getSpaceExSw2()); m_nodeDao.save(getJ635041()); m_nodeDao.save(getJ635042()); m_nodeDao.save(getSRX100()); m_nodeDao.save(getSGG550()); m_nodeDao.flush(); Package example1 = m_linkdConfig.getPackage("example1"); assertEquals(false, example1.hasForceIpRouteDiscoveryOnEthernet()); example1.setForceIpRouteDiscoveryOnEthernet(true); example1.setUseCdpDiscovery(false); final OnmsNode mumbai = m_nodeDao.findByForeignId("linkd", MUMBAI_NAME); final OnmsNode chennai = m_nodeDao.findByForeignId("linkd", CHENNAI_NAME); final OnmsNode delhi = m_nodeDao.findByForeignId("linkd", DELHI_NAME); final OnmsNode bangalore = m_nodeDao.findByForeignId("linkd", BANGALORE_NAME); final OnmsNode bagmane = m_nodeDao.findByForeignId("linkd", BAGMANE_NAME); final OnmsNode mysore = m_nodeDao.findByForeignId("linkd", MYSORE_NAME); final OnmsNode spaceexsw1 = m_nodeDao.findByForeignId("linkd", SPACE_EX_SW1_NAME); final OnmsNode spaceexsw2 = m_nodeDao.findByForeignId("linkd", SPACE_EX_SW2_NAME); final OnmsNode j635041 = m_nodeDao.findByForeignId("linkd", J6350_41_NAME); final OnmsNode j635042 = m_nodeDao.findByForeignId("linkd", J6350_42_NAME); final OnmsNode srx100 = m_nodeDao.findByForeignId("linkd", SRX_100_NAME); final OnmsNode ssg550 = m_nodeDao.findByForeignId("linkd", SSG550_NAME); assertTrue(m_linkd.scheduleNodeCollection(chennai.getId())); assertTrue(m_linkd.scheduleNodeCollection(mumbai.getId())); assertTrue(m_linkd.scheduleNodeCollection(delhi.getId())); assertTrue(m_linkd.scheduleNodeCollection(bangalore.getId())); assertTrue(m_linkd.scheduleNodeCollection(bagmane.getId())); assertTrue(m_linkd.scheduleNodeCollection(mysore.getId())); assertTrue(m_linkd.scheduleNodeCollection(spaceexsw1.getId())); assertTrue(m_linkd.scheduleNodeCollection(spaceexsw2.getId())); assertTrue(m_linkd.scheduleNodeCollection(j635041.getId())); assertTrue(m_linkd.scheduleNodeCollection(j635042.getId())); assertTrue(m_linkd.scheduleNodeCollection(srx100.getId())); assertTrue(m_linkd.scheduleNodeCollection(ssg550.getId())); assertTrue(m_linkd.runSingleSnmpCollection(mumbai.getId())); assertTrue(m_linkd.runSingleSnmpCollection(chennai.getId())); assertTrue(m_linkd.runSingleSnmpCollection(delhi.getId())); assertTrue(m_linkd.runSingleSnmpCollection(bangalore.getId())); assertTrue(m_linkd.runSingleSnmpCollection(bagmane.getId())); assertTrue(m_linkd.runSingleSnmpCollection(mysore.getId())); assertTrue(m_linkd.runSingleSnmpCollection(spaceexsw1.getId())); assertTrue(m_linkd.runSingleSnmpCollection(spaceexsw2.getId())); assertTrue(m_linkd.runSingleSnmpCollection(j635041.getId())); assertTrue(m_linkd.runSingleSnmpCollection(j635042.getId())); assertTrue(m_linkd.runSingleSnmpCollection(srx100.getId())); assertTrue(m_linkd.runSingleSnmpCollection(ssg550.getId())); assertEquals(0, m_dataLinkInterfaceDao.countAll()); assertTrue(m_linkd.runSingleLinkDiscovery("example1")); final List<DataLinkInterface> links = m_dataLinkInterfaceDao.findAll(); assertEquals(9, links.size()); // Linkd is able to find partially the topology using the next hop router // among the core nodes: // mumbai, chennai, delhi, mysore,bangalore and bagmane // the link between chennai and delhi is lost // the link between chennai and bagmane is lost // the link between bagmane and delhi is lost // I checked the walks and no route info // is there for discovering the link. // I have to guess that linkd is working as expected // The bridge and RSTP topology information are // unusuful, the devices supporting RSTP // have themselves as designated bridge. // Other links are lost... // no routing entry and no bridge // forwarding int start = getStartPoint(links); for (final DataLinkInterface datalinkinterface : links) { int id = datalinkinterface.getId().intValue(); if (start == id) { checkLink(delhi, mumbai, 28503, 519, datalinkinterface); } else if (start + 1 == id) { checkLink(bangalore, mumbai, 2401, 507, datalinkinterface); } else if (start + 2 == id) { checkLink(bagmane, mumbai, 534, 977, datalinkinterface); } else if (start + 3 == id) { checkLink(mysore, mumbai, 508, 978, datalinkinterface); } else if (start + 4 == id) { checkLink(chennai, mumbai, 528, 520, datalinkinterface); } else if (start + 5 == id) { checkLink(mysore, chennai, 505, 517, datalinkinterface); } else if (start + 6 == id) { checkLink(bangalore, delhi, 2397, 3674, datalinkinterface); } else if (start + 7 == id) { checkLink(bagmane, bangalore, 1732, 2396, datalinkinterface); } else if (start + 8 == id) { checkLink(mysore, bagmane, 520, 654, datalinkinterface); } else { checkLink(mumbai, mumbai, -1, -1, datalinkinterface); } } }
/* * Penrose: baseBridgeAddress = 80711f8fafd0 * Penrose: stpDesignatedRoot = 001f12373dc0 * Penrose: stpport/designatedbridge/designatedport 62/8000 001f12373dc0/8201 * -----To Riovista - Root Spanning tree: ifindex 515 ---ge-1/2/1 * Penrose: stpport/designatedbridge/designatedport 483/8000 0022830957d0/81e3 * -----this is a backbone port to a higher bridge: ifindex 2693 -- ae0 * ---- aggregated port almost sure the link to Delaware * * Delaware: baseBridgeAddress = 0022830957d0 * Delaware: stpDesignatedRoot = 001f12373dc0 * Delaware: stpport/designatedbridge/designatedport 21/8000 001f12373dc0/822f * -----To Riovista - Root Spanning tree: ifindex 540 -- ge-0/2/0 * Delaware: stpport/designatedbridge/designatedport 483/8000 0022830957d0/81e3 * -----this is a backbone port to a lower bridge: ifindex 658 ---ae0 * -----aggregated port almost sure the link to Penrose * * Riovista: baseBridgeAddress = 001f12373dc0 * Riovista: stpDesignatedRoot = 001f12373dc0 * Riovista: stpport/designatedbridge/designatedport 513/8000 001f12373dc0/8201 * -----To Penrose ifindex 584 ---ge-0/0/0.0 * Riovista: stpport/designatedbridge/designatedport 559/8000001f12373dc0/822f * -----To Delaware ifindex 503 ---ge-0/0/46.0 * * * Phoenix: baseBridgeAddress = 80711fc414d0 * Phoenix: Spanning Tree is disabled * * Austin: baseBridgeAddress = 80711fc413d0 * Austin: Spanning Tree is disabled * * Sanjose: baseBridgeAddress = 002283d857d0 * Sanjose: Spanning Tree is disabled * * There are two links found between Penrose and Delaware, * one on ae0 using stp and another over xe-1/0/0.0 using the ip route next hop strategy * * Also the link between Austin and Delaware is not found because * no route entry is found so no way to find it. * This prove how weak is the way in which is set up linkd. * This test passes because i've verified that this is what the linkd can discover using it's values * * root@sanjose-mx240# run show lldp neighbors * Local Interface Chassis Id Port info System Name * ge-1/0/1 80:71:1f:c4:13:c0 ge-1/0/3 Austin * ge-1/0/0 80:71:1f:c4:14:c0 ge-1/0/3 phoenix-mx80 * * root@phoenix-mx80# run show lldp neighbors * Local Interface Chassis Id Port info System Name * ge-1/0/3 00:22:83:d8:57:c0 ge-1/0/0 sanjose-mx240 * xe-0/0/1 80:71:1f:8f:af:c0 xe-1/0/1 penrose-mx480 * xe-0/0/0 80:71:1f:c4:13:c0 <ToPHX-xe000> Austin * root@Austin# run show lldp neighbors * Local Interface Chassis Id Port info System Name * xe-0/0/1 00:22:83:09:57:c0 xe-1/0/1 delaware * ge-1/0/3 00:22:83:d8:57:c0 ge-1/0/1 sanjose-mx240 * xe-0/0/0 80:71:1f:c4:14:c0 <ToAUS-xe000> phoenix-mx80 * * root@penrose-mx480# run show lldp neighbors * Local Interface Chassis Id Port info System Name * ge-1/2/1 00:1f:12:37:3d:c0 ge-0/0/0.0 Riovista-ce * ge-1/3/1 00:22:83:09:57:c0 ge-0/0/6 delaware * xe-1/0/0 00:22:83:09:57:c0 <To_Penrose> delaware * xe-1/0/1 80:71:1f:c4:14:c0 xe-0/0/1 phoenix-mx80 * * root@delaware# run show lldp neighbors * Local Interface Chassis Id Port info System Name * ge-0/2/0 00:1f:12:37:3d:c0 ge-0/0/46.0 Riovista-ce * xe-1/0/0 80:71:1f:8f:af:c0 <To_Delaware> penrose-mx480 * ge-0/0/6 80:71:1f:8f:af:c0 ge-1/3/1 penrose-mx480 * xe-1/0/1 80:71:1f:c4:13:c0 xe-0/0/1 Austin * * root@Riovista-ce# run show lldp neighbors * Local Interface Parent Interface Chassis Id Port info System Name * ge-0/0/46.0 - 00:22:83:09:57:c0 ge-0/2/0 delaware * ge-0/0/0.0 - 80:71:1f:8f:af:c0 ge-1/2/1 penrose-mx480 * */ @Test @JUnitSnmpAgents( value = { @JUnitSnmpAgent(host = PENROSE_IP, port = 161, resource = PENROSE_SNMP_RESOURCE), @JUnitSnmpAgent(host = DELAWARE_IP, port = 161, resource = DELAWARE_SNMP_RESOURCE), @JUnitSnmpAgent(host = PHOENIX_IP, port = 161, resource = PHOENIX_SNMP_RESOURCE), @JUnitSnmpAgent(host = AUSTIN_IP, port = 161, resource = AUSTIN_SNMP_RESOURCE), @JUnitSnmpAgent(host = SANJOSE_IP, port = 161, resource = SANJOSE_SNMP_RESOURCE), @JUnitSnmpAgent(host = RIOVISTA_IP, port = 161, resource = RIOVISTA_SNMP_RESOURCE) }) public void testNetwork1055Links() throws Exception { m_nodeDao.save(builder.getPenrose()); m_nodeDao.save(builder.getDelaware()); m_nodeDao.save(builder.getPhoenix()); m_nodeDao.save(builder.getAustin()); m_nodeDao.save(builder.getSanjose()); m_nodeDao.save(builder.getRiovista()); m_nodeDao.flush(); HibernateEventWriter queryManager = (HibernateEventWriter) m_linkd.getQueryManager(); /* * DELAWARE_IF_IFNAME_MAP.put(517, "ge-0/0/1"); * DELAWARE_IF_IFALIAS_MAP.put(517, "test"); */ assertEquals( 517, queryManager.getFromSysnameIfAlias(DELAWARE_NAME, "test").getIfIndex().intValue()); assertEquals( 517, queryManager.getFromSysnameIfName(DELAWARE_NAME, "ge-0/0/1").getIfIndex().intValue()); /* * DELAWARE_IF_MAC_MAP.put(585, "0022830951f5"); */ assertEquals( 585, queryManager .getFromSysnameMacAddress(DELAWARE_NAME, "0022830951f5") .getIfIndex() .intValue()); /* * DELAWARE_IP_IF_MAP.put(InetAddressUtils.addr("10.155.69.17"), 13); */ assertEquals( 13, queryManager .getFromSysnameIpAddress(DELAWARE_NAME, InetAddressUtils.addr("10.155.69.17")) .getIfIndex() .intValue()); /* * DELAWARE_IF_IFALIAS_MAP.put(574, "<To_Penrose>"); */ assertEquals( 574, queryManager.getFromSysnameIfAlias(DELAWARE_NAME, "<To_Penrose>").getIfIndex().intValue()); Package example1 = m_linkdConfig.getPackage("example1"); assertEquals(false, example1.hasForceIpRouteDiscoveryOnEthernet()); example1.setForceIpRouteDiscoveryOnEthernet(true); final OnmsNode penrose = m_nodeDao.findByForeignId("linkd", PENROSE_NAME); final OnmsNode delaware = m_nodeDao.findByForeignId("linkd", DELAWARE_NAME); final OnmsNode phoenix = m_nodeDao.findByForeignId("linkd", PHOENIX_NAME); final OnmsNode austin = m_nodeDao.findByForeignId("linkd", AUSTIN_NAME); final OnmsNode sanjose = m_nodeDao.findByForeignId("linkd", SANJOSE_NAME); final OnmsNode riovista = m_nodeDao.findByForeignId("linkd", RIOVISTA_NAME); assertTrue(m_linkd.scheduleNodeCollection(penrose.getId())); assertTrue(m_linkd.scheduleNodeCollection(delaware.getId())); assertTrue(m_linkd.scheduleNodeCollection(phoenix.getId())); assertTrue(m_linkd.scheduleNodeCollection(austin.getId())); assertTrue(m_linkd.scheduleNodeCollection(sanjose.getId())); assertTrue(m_linkd.scheduleNodeCollection(riovista.getId())); assertTrue(m_linkd.runSingleSnmpCollection(penrose.getId())); assertTrue(m_linkd.runSingleSnmpCollection(delaware.getId())); assertTrue(m_linkd.runSingleSnmpCollection(phoenix.getId())); assertTrue(m_linkd.runSingleSnmpCollection(austin.getId())); assertTrue(m_linkd.runSingleSnmpCollection(sanjose.getId())); assertTrue(m_linkd.runSingleSnmpCollection(riovista.getId())); assertEquals(0, m_dataLinkInterfaceDao.countAll()); assertTrue(m_linkd.runSingleLinkDiscovery("example1")); assertEquals(22, m_dataLinkInterfaceDao.countAll()); final List<DataLinkInterface> links = m_dataLinkInterfaceDao.findAll(); final int start = getStartPoint(links); for (final DataLinkInterface datalinkinterface : links) { Integer linkid = datalinkinterface.getId(); if (linkid == start) { checkLink(penrose, phoenix, 644, 564, datalinkinterface); assertEquals(DiscoveryProtocol.iproute, datalinkinterface.getProtocol()); } else if (linkid == start + 1) { checkLink(penrose, delaware, 535, 598, datalinkinterface); assertEquals(DiscoveryProtocol.iproute, datalinkinterface.getProtocol()); } else if (linkid == start + 2) { checkLink(phoenix, austin, 565, 554, datalinkinterface); assertEquals(DiscoveryProtocol.iproute, datalinkinterface.getProtocol()); } else if (linkid == start + 3) { checkLink(sanjose, phoenix, 564, 566, datalinkinterface); assertEquals(DiscoveryProtocol.iproute, datalinkinterface.getProtocol()); } else if (linkid == start + 4) { checkLink(sanjose, austin, 8562, 586, datalinkinterface); assertEquals(DiscoveryProtocol.iproute, datalinkinterface.getProtocol()); } else if (linkid == start + 5) { checkLink(delaware, penrose, 598, 535, datalinkinterface); assertEquals(DiscoveryProtocol.ospf, datalinkinterface.getProtocol()); } else if (linkid == start + 6) { checkLink(phoenix, penrose, 564, 644, datalinkinterface); assertEquals(DiscoveryProtocol.ospf, datalinkinterface.getProtocol()); } else if (linkid == start + 7) { checkLink(austin, phoenix, 554, 565, datalinkinterface); assertEquals(DiscoveryProtocol.ospf, datalinkinterface.getProtocol()); } else if (linkid == start + 8) { checkLink(sanjose, phoenix, 564, 566, datalinkinterface); assertEquals(DiscoveryProtocol.ospf, datalinkinterface.getProtocol()); } else if (linkid == start + 9) { checkLink(sanjose, austin, 8562, 586, datalinkinterface); assertEquals(DiscoveryProtocol.ospf, datalinkinterface.getProtocol()); } else if (linkid == start + 10) { checkLink(penrose, riovista, 515, 584, datalinkinterface); assertEquals(DiscoveryProtocol.bridge, datalinkinterface.getProtocol()); } else if (linkid == start + 11) { checkLink(penrose, delaware, 2693, 658, datalinkinterface); assertEquals(DiscoveryProtocol.bridge, datalinkinterface.getProtocol()); } else if (linkid == start + 12) { checkLink(delaware, riovista, 540, 503, datalinkinterface); assertEquals(DiscoveryProtocol.bridge, datalinkinterface.getProtocol()); } else if (linkid == start + 13) { // penrose xe-1/0/0 -> delaware xe-1/0/0 --lldp checkLink(delaware, penrose, 574, 510, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 14) { // penrose xe-1/0/1 -> phoenix xe-0/0/1 --lldp checkLink(phoenix, penrose, 509, 511, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 15) { // penrose ge-1/3/1 -> delaware ge-0/0/6 --lldp checkLink(delaware, penrose, 522, 525, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 16) { // penrose ge-1/2/1 -> riovista ge-0/0/0.0 --lldp // this link is also discovered using the bridge strategy checkLink(riovista, penrose, 584, 515, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 17) { // delaware xe-1/0/1 -> austin xe-0/0/1 --lldp checkLink(austin, delaware, 509, 575, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 18) { // delaware ge-0/2/0 -> riovista ge-0/0/46.0 --lldp // this link is also discovered using the bridge strategy checkLink(riovista, delaware, 503, 540, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 19) { // phoenix ge-1/0/3 -> sanjose ge-1/0/0 --lldp checkLink(sanjose, phoenix, 516, 515, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 20) { // phoenix ge-0/2/0 -> austin ge-0/0/46.0 --lldp checkLink(austin, phoenix, 508, 508, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else if (linkid == start + 21) { // austin ge-1/0/3 -> sanjose ge-1/0/1 --lldp checkLink(sanjose, austin, 517, 515, datalinkinterface); assertEquals(DiscoveryProtocol.lldp, datalinkinterface.getProtocol()); } else { checkLink(penrose, penrose, -1, -1, datalinkinterface); } } }