@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 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 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 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 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 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 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)); }
@Before public void setup() { _nf = new NetworkFactory(); Configuration c = _nf.configurationBuilder() .setConfigurationFormat(ConfigurationFormat.CISCO_IOS) .setHostname(NODE) .build(); Vrf v = _nf.vrfBuilder().setName(Configuration.DEFAULT_VRF_NAME).setOwner(c).build(); _ib = _nf.interfaceBuilder().setOwner(c).setVrf(v).setName(INTERFACE).setActive(true); _configurations = ImmutableMap.of(c.getHostname(), c); _vnb = VniSettings.builder().setBumTransportMethod(BumTransportMethod.MULTICAST_GROUP); _specifierContext = new TestSpecifierContext() { @Override public Map<String, Configuration> getConfigs() { return _configurations; } }; }
@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 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 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 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)); }