@Test public void testTryAddVlanVniVlanPresent() { int vni = 10000; int vlan = 1; IntegerSpace vlans = IntegerSpace.of(vlan); ImmutableMap.Builder<Integer, Integer> vlanVnisBuilder = ImmutableMap.builder(); Map<Integer, ImmutableSet.Builder<NodeInterfacePair>> switchedVlanInterfaces = new HashMap<>(); VniSettings vniSettings = _vnb.setVni(vni).setVlan(vlan).build(); tryAddVlanVni(vniSettings, vlans, vlanVnisBuilder, switchedVlanInterfaces); assertThat(vlanVnisBuilder.build(), equalTo(ImmutableMap.of(vlan, vni))); assertThat(switchedVlanInterfaces, hasKey(vlan)); assertThat(switchedVlanInterfaces.get(vlan).build(), empty()); } }
@Test public void testTryAddVlanVniVlanAbsent() { int vni = 10000; int vlan = 1; IntegerSpace vlans = IntegerSpace.of(vlan); ImmutableMap.Builder<Integer, Integer> vlanVnisBuilder = ImmutableMap.builder(); Map<Integer, ImmutableSet.Builder<NodeInterfacePair>> switchedVlanInterfaces = new HashMap<>(); VniSettings vniSettings = _vnb.setVni(vni).build(); tryAddVlanVni(vniSettings, vlans, vlanVnisBuilder, switchedVlanInterfaces); assertThat(vlanVnisBuilder.build(), anEmptyMap()); assertThat(switchedVlanInterfaces, anEmptyMap()); }
@Test public void testInitVniVrfAssociations() { Map<String, Configuration> configurations = ImmutableMap.of(NODE1, _c1, NODE2, _c2); VniSettings.Builder b = VniSettings.builder().setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP).setVni(VNI); _v1.setVniSettings(ImmutableSortedMap.of(VNI, b.build())); _v2.setVniSettings(ImmutableSortedMap.of(VNI, b.build())); assertThat( initVniVrfAssociations(configurations), equalTo(ImmutableMap.of(VNI, ImmutableList.of(_v1, _v2)))); }
@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 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 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 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 testBuildVxlanNode() { Map<Vrf, String> vrfHostnames = ImmutableMap.of(_v1, NODE1); VniSettings vniSettings = VniSettings.builder() .setSourceAddress(SRC_IP1) .setVlan(VLAN1) .setVni(VNI) .setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP) .build(); assertThat( buildVxlanNode(vrfHostnames, _v1, vniSettings), equalTo( VxlanNode.builder() .setHostname(NODE1) .setSourceAddress(SRC_IP1) .setVlan(VLAN1) .setVrf(_v1.getName()) .build())); }
@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(); } }
@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)); }
@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)); }