@Override public int compareTo(@Nonnull VerboseRipEdge o) { return Comparator.comparing(VerboseRipEdge::getEdgeSummary) .thenComparing(edge -> edge.getSession1().getIpEdge()) .thenComparing(edge -> edge.getSession2().getIpEdge()) .compare(this, o); } }
@Test public void testCompareTo() { Ip ip1 = Ip.parse("1.1.1.1"); Ip ip2 = Ip.parse("2.2.2.2"); Pair<Ip, Ip> ipPair1 = new Pair<>(ip1, ip1); Pair<Ip, Ip> ipPair2 = new Pair<>(ip2, ip2); String node1 = "node1"; String node2 = "node2"; IpEdge ipEdge1 = new IpEdge(node1, ip1, node1, ip1); IpEdge ipEdge2 = new IpEdge(node2, ip2, node2, ip2); RipNeighbor neighbor1 = new RipNeighbor(ipPair1); RipNeighbor neighbor2 = new RipNeighbor(ipPair2); VerboseRipEdge ripEdge1 = new VerboseRipEdge(neighbor1, neighbor1, ipEdge1); VerboseRipEdge ripEdge1Copy = new VerboseRipEdge(neighbor1, neighbor1, ipEdge1); VerboseRipEdge ripEdge2 = new VerboseRipEdge(neighbor2, neighbor2, ipEdge2); assertThat(ripEdge1.compareTo(ripEdge1Copy), is(0)); assertThat(ripEdge1.compareTo(ripEdge2), lessThan(0)); assertThat(ripEdge2.compareTo(ripEdge1), greaterThan(0)); } }
Ip remoteIp = remoteRipNeighbor.getLocalIp(); IpEdge edge = new IpEdge(hostname, localIp, remoteHostname, remoteIp); vedges.add(new VerboseRipEdge(ripNeighbor, remoteRipNeighbor, edge)); answerElement.initRipNeighbors(); for (VerboseRipEdge vedge : vedges) { answerElement.getRipNeighbors().add(vedge.getEdgeSummary()); for (VerboseRipEdge vedge : vedges) { SortedSet<String> roles1 = _nodeRolesMap.getOrDefault(vedge.getEdgeSummary().getNode1(), new TreeSet<>()); SortedSet<String> roles2 = _nodeRolesMap.getOrDefault(vedge.getEdgeSummary().getNode2(), new TreeSet<>()); for (String r1 : roles1) { for (String r2 : roles2) {
private static SortedSet<VerboseRipEdge> getRipEdges(Map<String, Configuration> configs) { SortedSet<VerboseRipEdge> ripEdges = new TreeSet<>(); for (Configuration c : configs.values()) { String hostname = c.getHostname(); for (Vrf vrf : c.getVrfs().values()) { RipProcess proc = vrf.getRipProcess(); if (proc != null) { for (RipNeighbor ripNeighbor : proc.getRipNeighbors().values()) { RipNeighbor remoteRipNeighbor = ripNeighbor.getRemoteRipNeighbor(); if (remoteRipNeighbor != null) { Configuration remoteHost = remoteRipNeighbor.getOwner(); String remoteHostname = remoteHost.getHostname(); Ip localIp = ripNeighbor.getLocalIp(); Ip remoteIp = remoteRipNeighbor.getLocalIp(); IpEdge edge = new IpEdge(hostname, localIp, remoteHostname, remoteIp); ripEdges.add(new VerboseRipEdge(ripNeighbor, remoteRipNeighbor, edge)); } } } } } return ripEdges; } }