@Test public void testTryAddInterfaceToVlansIncludeShutWithFlag() { int vlan = 1; InterfaceSpecifier interfacesSpecifier = InterfaceSpecifierFactory.load(FlexibleInterfaceSpecifierFactory.NAME) .buildInterfaceSpecifier(null); boolean excludeShutInterfaces = false; IntegerSpace vlans = IntegerSpace.of(vlan); Map<Integer, ImmutableSet.Builder<NodeInterfacePair>> switchedVlanInterfaces = new HashMap<>(); Interface iface = _ib.setActive(false).build(); iface.setInterfaceType(InterfaceType.VLAN); iface.setSwitchport(false); iface.setVlan(vlan); tryAddInterfaceToVlans( _specifierContext, interfacesSpecifier, excludeShutInterfaces, vlans, switchedVlanInterfaces, NODE, iface); assertThat(switchedVlanInterfaces, hasKey(vlan)); assertThat( switchedVlanInterfaces.get(vlan).build(), contains(new NodeInterfacePair(NODE, INTERFACE))); }
@Test public void getPropertiesExcludeShutInterfaces() { Configuration conf = new Configuration("node", ConfigurationFormat.CISCO_IOS); Interface active = Interface.builder().setName("active").setOwner(conf).setActive(true).build(); Interface shut = Interface.builder().setName("shut").setOwner(conf).setActive(false).build(); conf.getAllInterfaces().putAll(ImmutableMap.of("active", active, "shut", shut)); String property = InterfacePropertySpecifier.DESCRIPTION; InterfacePropertySpecifier propertySpecifier = new InterfacePropertySpecifier(property); Multiset<Row> propertyRows = InterfacePropertiesAnswerer.getProperties( propertySpecifier, ImmutableMap.of("node", conf), ImmutableSet.of("node"), InterfacesSpecifier.ALL, true, new TableMetadata( InterfacePropertiesAnswerer.createColumnMetadata(propertySpecifier), (String) null) .toColumnMap()); // we should have exactly one row; iface1 should have been filtered out assertThat(propertyRows, hasSize(1)); assertThat( propertyRows.iterator().next(), hasColumn( InterfacePropertiesAnswerer.COL_INTERFACE, equalTo(new NodeInterfacePair("node", "active")), Schema.INTERFACE)); }
Configuration c1 = _cb.setHostname(c1Name).build(); Vrf v1 = _vb.setOwner(c1).build(); _ib.setOwner(c1).setVrf(v1).setActive(true); _ib.setName(c1i1Name).build();
_ib.setActive(true);
_ib.setOwner(c1).setVrf(v1).setActive(true);
.setOwner(node1) .setAddress(new InterfaceAddress("1.2.3.4/24")) .setActive(true) .build(); Interface iface12 = Interface.builder() .setName("iface12") .setActive(true) .setOwner(node1) .setAddress(new InterfaceAddress("2.3.4.5/24")) Interface.builder() .setName("iface2") .setActive(true) .setOwner(node2) .setAddress(new InterfaceAddress("1.2.3.5/30"))
InterfaceAddress c2Addr = new InterfaceAddress("1.0.0.1/31"); Interface i1 = nf.interfaceBuilder().setActive(true).setOwner(c1).setVrf(v1).setAddress(c1Addr).build(); Prefix loopPrefix = Prefix.parse("2.0.0.0/32"); v1.setStaticRoutes( Vrf v2 = nf.vrfBuilder().setOwner(c2).build(); Interface i2 = nf.interfaceBuilder().setActive(true).setOwner(c2).setVrf(v2).setAddress(c2Addr).build(); Prefix natPoolIp = Prefix.parse("5.5.5.5/32");
_ib.setActive(true);
Interface i0 = ib.setName("eth0").setBandwidth(1e3).setOspfArea(area0).build(); Interface i1 = ib.setName("eth1").setBandwidth(1e4).setOspfArea(area1).build(); Interface i2 = ib.setName("eth2").setBandwidth(1e5).setOspfArea(area1).setActive(false).build(); Interface i3 = ib.setName("eth3") .setBandwidth(1e6) .setOspfArea(area1) .setActive(true) .setOspfPassive(true) .build();
_ib.setOwner(c2).setVrf(v2); _ib.setName(c2i1Name).build(); _ib.setName(c2i2Name).setActive(false).build();
SRC_ACL)); Builder ib = nf.interfaceBuilder().setActive(true).setOwner(_config); ib.setName(IFACE1).build(); ib.setName(IFACE2).build();
@Test public void testTryAddInterfaceToVlansExcludedInterfaceByShutdown() { int vlan = 1; InterfaceSpecifier interfacesSpecifier = InterfaceSpecifierFactory.load(FlexibleInterfaceSpecifierFactory.NAME) .buildInterfaceSpecifier(null); boolean excludeShutInterfaces = true; IntegerSpace vlans = IntegerSpace.of(vlan); Map<Integer, ImmutableSet.Builder<NodeInterfacePair>> switchedVlanInterfaces = new HashMap<>(); Interface iface = _ib.setActive(false).build(); iface.setSwitchport(true); iface.setSwitchportMode(SwitchportMode.ACCESS); iface.setAccessVlan(vlan); tryAddInterfaceToVlans( _specifierContext, interfacesSpecifier, excludeShutInterfaces, vlans, switchedVlanInterfaces, NODE, iface); assertThat(switchedVlanInterfaces, anEmptyMap()); }
@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 testTryAddInterfaceToVlansExcludedInterfaceByType() { int vlan = 1; InterfaceSpecifier interfacesSpecifier = InterfaceSpecifierFactory.load(FlexibleInterfaceSpecifierFactory.NAME) .buildInterfaceSpecifier(null); boolean excludeShutInterfaces = true; IntegerSpace vlans = IntegerSpace.of(vlan); Map<Integer, ImmutableSet.Builder<NodeInterfacePair>> switchedVlanInterfaces = new HashMap<>(); Interface iface = _ib.setActive(false).build(); iface.setSwitchport(false); tryAddInterfaceToVlans( _specifierContext, interfacesSpecifier, excludeShutInterfaces, vlans, switchedVlanInterfaces, NODE, iface); assertThat(switchedVlanInterfaces, anEmptyMap()); }
private Batfish maxTracesBatfish() throws IOException { // create a simple network with two paths for a given destination Prefix dst = Prefix.parse("1.1.1.1/32"); NetworkFactory nf = new NetworkFactory(); Configuration config = nf.configurationBuilder().setConfigurationFormat(ConfigurationFormat.CISCO_IOS).build(); Vrf vrf = nf.vrfBuilder().setOwner(config).build(); Interface.Builder ifaceBuilder = nf.interfaceBuilder().setActive(true).setOwner(config).setVrf(vrf); Interface lo0 = ifaceBuilder.setAddress(new InterfaceAddress("5.5.5.5/32")).build(); Interface lo1 = ifaceBuilder.setAddress(new InterfaceAddress("6.6.6.6/32")).build(); Builder routeBuilder = StaticRoute.builder().setNetwork(dst).setAdministrativeCost(1); vrf.setStaticRoutes( ImmutableSortedSet.of( routeBuilder.setNextHopInterface(lo0.getName()).build(), routeBuilder.setNextHopInterface(lo1.getName()).build())); Batfish batfish = BatfishTestUtils.getBatfish(ImmutableSortedMap.of(config.getHostname(), config), _folder); batfish.computeDataPlane(); return batfish; }
private static Configuration configWithOneAcl(NetworkFactory nf) { Configuration config = nf.configurationBuilder().setConfigurationFormat(ConfigurationFormat.CISCO_IOS).build(); Interface.Builder ib = nf.interfaceBuilder().setOwner(config); ib.setName(IFACE1).build(); ib.setName(IFACE2).build(); ib.setName(IFACE3).build(); ib.setName(IFACE4).setActive(false).build(); // an ACL that can only match with an IFACE2 or iface3 IpAccessList.builder() .setName("acl") .setOwner(config) .setLines( ImmutableList.of( accepting().setMatchCondition(matchSrcInterface(IFACE1)).build(), rejecting().setMatchCondition(matchSrcInterface(IFACE4)).build(), ACCEPT_ALL)) .build(); return config; }
@Test public void testOspfAreaBuilder() { NetworkFactory nf = new NetworkFactory(); Configuration c = nf.configurationBuilder().setConfigurationFormat(CONFIG_FORMAT).build(); Vrf vrf = nf.vrfBuilder().setOwner(c).build(); OspfProcess.Builder ob = nf.ospfProcessBuilder(); OspfProcess ospfProcess = ob.setVrf(vrf).build(); OspfArea.Builder oab = nf.ospfAreaBuilder(); OspfArea oa1 = oab.build(); OspfArea oa2 = oab.setOspfProcess(ospfProcess).build(); Interface iface = nf.interfaceBuilder().setOwner(c).setActive(false).setVrf(vrf).setOspfArea(oa2).build(); assertThat(oa1.getAreaNumber(), not(equalTo(oa2.getAreaNumber()))); assertThat(oa1, not(sameInstance(oa2))); assertThat(ospfProcess.getAreas().get(oa2.getAreaNumber()), sameInstance(oa2)); assertThat(oa2, OspfAreaMatchers.hasInterfaces(hasItem(iface.getName()))); assertThat(iface.getOspfAreaName(), equalTo(oa2.getAreaNumber())); } }
@Test public void testToLogicalNodeInactiveAggregate() { String c1Name = "c1"; String iName = "i1"; String aName = "a1"; Configuration c1 = _cb.setHostname(c1Name).build(); Vrf v1 = _vb.setOwner(c1).build(); _ib.setOwner(c1).setVrf(v1); _ib.setName(iName).build().setChannelGroup(aName); _ib.setName(aName).setActive(false).build(); NetworkConfigurations networkConfigurations = NetworkConfigurations.of(ImmutableSortedMap.of(c1Name, c1)); Layer1Node node = new Layer1Node(c1Name, iName); // If node is member of a disabled aggregate, the result should be null assertThat(node.toLogicalNode(networkConfigurations), nullValue()); }
/** Make an interface with the specified parameters */ private Interface iface(String interfaceName, String ip, boolean active, boolean blacklisted) { return _nf.interfaceBuilder() .setName(interfaceName) .setActive(active) .setAddress(new InterfaceAddress(ip)) .setBlacklisted(blacklisted) .build(); }