@Test public void testAllAttrs() { SortedSet<Ip> bumTransportIps = ImmutableSortedSet.of(Ip.parse("2.2.2.2"), Ip.parse("2.2.2.3")); VniSettings vs = VniSettings.builder() .setBumTransportIps(bumTransportIps) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(Ip.parse("1.2.3.4")) .setUdpPort(2345) .setVlan(7) .setVni(10007) .build(); assertThat( vs.getBumTransportIps(), containsInAnyOrder(Ip.parse("2.2.2.2"), Ip.parse("2.2.2.3"))); assertThat(vs.getBumTransportMethod(), equalTo(BumTransportMethod.UNICAST_FLOOD_GROUP)); assertThat(vs.getSourceAddress(), equalTo(Ip.parse("1.2.3.4"))); assertThat(vs.getUdpPort(), equalTo(2345)); assertThat(vs.getVlan(), equalTo(7)); assertThat(vs.getVni(), equalTo(10007)); }
@Test public void testJavaSerialization() throws IOException { SortedSet<Ip> bumTransportIps = ImmutableSortedSet.of(Ip.parse("2.2.2.2"), Ip.parse("2.2.2.3")); VniSettings vs = VniSettings.builder() .setBumTransportIps(bumTransportIps) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(Ip.parse("1.2.3.4")) .setUdpPort(2345) .setVlan(7) .setVni(10007) .build(); assertThat(SerializationUtils.clone(vs), equalTo(vs)); }
@Test public void testJsonSerialization() throws IOException { SortedSet<Ip> bumTransportIps = ImmutableSortedSet.of(Ip.parse("2.2.2.2"), Ip.parse("2.2.2.3")); VniSettings vs = VniSettings.builder() .setBumTransportIps(bumTransportIps) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(Ip.parse("1.2.3.4")) .setUdpPort(2345) .setVlan(7) .setVni(10007) .build(); assertThat(BatfishObjectMapper.clone(vs, VniSettings.class), equalTo(vs)); }
VniSettings.Builder vniSettingsBuilder = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setUdpPort(UDP_PORT)
.setVni(VNI) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setUdpPort(UDP_PORT) .build();
@Test public void testCompatibleVniSettingsUnicast() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP2)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP1)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(true)); }
@Test public void testCompatibleVniSettingsMulticast() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(true)); }
@Test public void testCompatibleVniSettingsMismatchSameSourceAddress() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchDifferentUdpPort() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT + 1) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchBumTransportTailFloodGroup() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP1)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP1)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchBumTransportMulticastGroupUnicast() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP2)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP1)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchBumTransportMethod() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchNoVlanHead() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchNoVlanTail() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchNullTailSourceAddress() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(null) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchBumTransportMulticastGroup() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(Ip.parse("224.0.0.5"))) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testCompatibleVniSettingsMismatchBumTransportHeadFloodGroup() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP2)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(SRC_IP2)) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP) .setSourceAddress(SRC_IP2) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testAddVniEdgeIncompatible() { Map<String, Configuration> configurations = ImmutableMap.of(NODE1, _c1, NODE2, _c2); MutableNetwork<VxlanNode, VxlanEdge> graph = NetworkBuilder.directed().allowsParallelEdges(false).allowsSelfLoops(false).build(); Map<Vrf, String> vrfHostnames = initVrfHostnameMap(configurations); VniSettings.Builder vniSettingsBuilder = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setUdpPort(UDP_PORT) .setVni(VNI); VniSettings vniSettingsTail = vniSettingsBuilder.setSourceAddress(SRC_IP1).setVlan(VLAN1).build(); _v1.setVniSettings(ImmutableSortedMap.of(VNI, vniSettingsTail)); _v2.setVniSettings( ImmutableSortedMap.of( VNI, vniSettingsBuilder.setSourceAddress(SRC_IP1).setVlan(VLAN2).build())); addVniEdge(graph, vrfHostnames, VNI, _v1, vniSettingsTail, _v2); Set<VxlanEdge> edges = graph.edges(); assertThat(edges, empty()); }
@Test public void testCompatibleVniSettingsMismatchNullHeadSourceAddress() { VniSettings vniSettingsTail = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(SRC_IP1) .setUdpPort(UDP_PORT) .setVlan(VLAN1) .setVni(VNI) .build(); VniSettings vniSettingsHead = VniSettings.builder() .setBumTransportIps(ImmutableSortedSet.of(MULTICAST_GROUP)) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .setSourceAddress(null) .setUdpPort(UDP_PORT) .setVlan(VLAN2) .setVni(VNI) .build(); assertThat(compatibleVniSettings(vniSettingsTail, vniSettingsHead), equalTo(false)); }
@Test public void testEquals() { VniSettings.Builder builder = VniSettings.builder() .setVni(1) .setBumTransportMethod(BumTransportMethod.UNICAST_FLOOD_GROUP); new EqualsTester() .addEqualityGroup(new Object()) .addEqualityGroup( builder.setBumTransportIps(ImmutableSortedSet.of(Ip.parse("2.2.2.2"))).build()) .addEqualityGroup(builder.setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP).build()) .addEqualityGroup(builder.setSourceAddress(Ip.parse("1.1.1.1")).build()) .addEqualityGroup(builder.setUdpPort(1234).build()) .addEqualityGroup(builder.setVlan(1000).build()) .testEquals(); } }