@JsonCreator private static @Nonnull OspfNode create( @Nullable @JsonProperty(PROP_NODE) String node, @Nullable @JsonProperty(PROP_INTERFACE) String interfaceName, @Nullable @JsonProperty(PROP_LOCAL_IP) Ip localIp) { checkArgument(node != null, "Missing %s", PROP_NODE); checkArgument(interfaceName != null, "Missing %s", PROP_INTERFACE); checkArgument(localIp != null, "Missing %s", PROP_LOCAL_IP); return new OspfNode(node, interfaceName, localIp); }
assert localNode.getNode().equals(node); // queue invariant of how we built the queue. Interface localInterface = _vrf.getInterfaces().get(localNode.getInterfaceName()); assert localInterface != null; // invariant of how routes are pushed into the queue. assert localInterface.getOspfArea() != null; // ^^. long localArea = localInterface.getOspfArea().getAreaNumber(); Node neighbor = allNodes.get(neighborNode.getNode()); Interface neighborInterface = neighbor.getConfiguration().getAllInterfaces().get(neighborNode.getInterfaceName()); OspfProcess neighborProc = neighborInterface.getVrf().getOspfProcess(); assert neighborProc != null; // invariant of edge existing. OspfExternalRoute.builder() .setNetwork(neighborRoute.getNetwork()) .setNextHopIp(neighborNode.getLocalIp()) .setLsaMetric(neighborRoute.getLsaMetric()) .setAdvertiser(neighborRoute.getAdvertiser())
ospfEdge -> { OspfArea localArea = _vrf.getInterfaces().get(ospfEdge.getNode1().getInterfaceName()).getOspfArea(); assert localArea != null; // otherwise the edge would not be built. if (localArea.getStubType() == StubType.STUB) { Node remoteNode = allNodes.get(ospfEdge.getNode2().getNode()); String remoteVrf = remoteNode .getConfiguration() .getAllInterfaces() .get(ospfEdge.getNode2().getInterfaceName()) .getVrfName(); VirtualRouter remoteRouter = remoteNode.getVirtualRouters().get(remoteVrf);
@Test public void testComparison() { List<OspfNode> expected = ImmutableList.of( new OspfNode("a", "i", Ip.parse("1.2.3.4")), new OspfNode("a", "i", Ip.parse("1.2.3.5")), new OspfNode("a", "j", Ip.parse("1.2.3.4")), new OspfNode("a", "j", Ip.parse("1.2.3.5")), new OspfNode("b", "i", Ip.parse("1.2.3.4")), new OspfNode("b", "i", Ip.parse("1.2.3.5"))); assertThat(Ordering.natural().sortedCopy(expected), equalTo(expected)); assertThat(Ordering.natural().sortedCopy(Lists.reverse(expected)), equalTo(expected)); }
@Test public void testEquals() { new EqualsTester() .addEqualityGroup( new OspfNode("a", "i", Ip.parse("1.2.3.4")), new OspfNode("a", "i", Ip.parse("1.2.3.4"))) .addEqualityGroup(new OspfNode("a", "i", Ip.parse("1.2.3.5"))) .addEqualityGroup(new OspfNode("b", "i", Ip.parse("1.2.3.4"))) .addEqualityGroup(new OspfNode("a", "j", Ip.parse("1.2.3.4"))) .testEquals(); }
@Test public void testSerialization() throws IOException { OspfNode node = new OspfNode("a", "i", Ip.parse("1.2.3.4")); assertThat(BatfishObjectMapper.clone(node, OspfNode.class), equalTo(node)); } }
@Test public void testComparison() { OspfNode node1 = new OspfNode("a", "i", Ip.parse("1.2.3.4")); OspfNode node2 = new OspfNode("b", "i", Ip.parse("1.2.3.5")); OspfNode node3 = new OspfNode("c", "i", Ip.parse("1.2.3.6")); List<OspfEdge> expected = ImmutableList.of( new OspfEdge(node1, node1), new OspfEdge(node1, node2), new OspfEdge(node1, node3), new OspfEdge(node2, node1), new OspfEdge(node2, node2), new OspfEdge(node2, node3), new OspfEdge(node3, node1), new OspfEdge(node3, node2), new OspfEdge(node3, node3)); assertThat(Ordering.natural().sortedCopy(expected), equalTo(expected)); assertThat(Ordering.natural().sortedCopy(Lists.reverse(expected)), equalTo(expected)); }
@Test public void testEquals() { OspfNode node1 = new OspfNode("a", "i", Ip.parse("1.2.3.4")); OspfNode node2 = new OspfNode("b", "i", Ip.parse("1.2.3.5")); OspfNode node3 = new OspfNode("c", "i", Ip.parse("1.2.3.6")); new EqualsTester() .addEqualityGroup(new OspfEdge(node1, node2), new OspfEdge(node1, node2)) .addEqualityGroup(new OspfEdge(node1, node3)) .addEqualityGroup(new OspfEdge(node2, node3)) .addEqualityGroup(new OspfEdge(node3, node2)) .addEqualityGroup(new OspfEdge(node3, node1), new OspfEdge(node1, node3).reverse()) .addEqualityGroup(new OspfEdge(node1, node1)) .testEquals(); }