@Override public SpecifierContext specifierContext() { return firstNonNull( _specifierContext, MockSpecifierContext.builder().setConfigs(loadConfigurations()).build()); } }
@Override public SpecifierContext specifierContext() { return MockSpecifierContext.builder().setConfigs(loadConfigurations()).build(); } }
@Test public void testDeserializationDefaultValues() throws IOException { String serialized = String.format("{\"class\":\"%s\"}", SearchFiltersQuestion.class.getCanonicalName()); SearchFiltersQuestion q = BatfishObjectMapper.mapper().readValue(serialized, SearchFiltersQuestion.class); assertThat(q.getFilterSpecifier(), notNullValue()); assertThat(q.getType(), is(Type.PERMIT)); assertThat(q.getNodesSpecifier(), notNullValue()); assertThat(q.getDataPlane(), equalTo(false)); assertThat(q.getNodes(), nullValue()); // src/dst IPs NOT stored in headerspace at this stage assertThat(q.getHeaderSpace().getDstIps(), nullValue()); assertThat(q.getHeaderSpace().getSrcIps(), nullValue()); // src/dst IPs are in specifiers at this stage SearchFiltersParameters parameters = q.toSearchFiltersParameters(); for (IpSpaceSpecifier s : Arrays.asList( parameters.getSourceIpSpaceSpecifier(), parameters.getDestinationIpSpaceSpecifier())) { assertThat( s.resolve(ImmutableSet.of(), MockSpecifierContext.builder().build()).getEntries().stream() .map(Entry::getIpSpace) .collect(ImmutableList.toImmutableList()), hasItem(UniverseIpSpace.INSTANCE)); assertThat(q.getLineNumber(), nullValue()); } }
@Test public void resolve() { Configuration node1 = new Configuration("node1", ConfigurationFormat.CISCO_IOS); Configuration node2 = new Configuration("node2", ConfigurationFormat.CISCO_IOS); MockSpecifierContext ctxt = MockSpecifierContext.builder() .setConfigs(ImmutableMap.of("node1", node1, "node2", node2)) .build(); assertThat( new ShorthandNodeSpecifier(new NodesSpecifier("node1")).resolve(ctxt), equalTo(ImmutableSet.of("node1"))); } }
@Test public void testIgnoreGeneratedFilters() { // generate unreachable IpAccessList aclGenerated = _aclb .setLines( ImmutableList.of( IpAccessListLine.accepting().setMatchCondition(FalseExpr.INSTANCE).build())) .setName("~aclGenerated") .build(); SpecifierContext ctxt = MockSpecifierContext.builder().setConfigs(ImmutableMap.of("c1", _c1)).build(); // we should get an empty set when we are ignoring generated filters assertThat( getSpecifiedFilters(new FilterLineReachabilityQuestion(null, null, true), ctxt), equalTo(ImmutableMap.of("c1", ImmutableSet.of()))); // we should get the one acl we put in otherwise assertThat( getSpecifiedFilters(new FilterLineReachabilityQuestion(null, null, false), ctxt), equalTo(ImmutableMap.of("c1", ImmutableSet.of(aclGenerated)))); }
@Test public void testNoLocations() { MockSpecifierContext ctxt = MockSpecifierContext.builder().build(); IpSpaceSpecifier specifier = new LocationIpSpaceSpecifier(new MockLocationSpecifier(ImmutableSet.of())); _expectedException.expect(IllegalArgumentException.class); _expectedException.expectMessage("No such locations"); specifier.resolve(ImmutableSet.of(), ctxt); } }
@Override public SpecifierContext specifierContext() { Configuration c1 = new Configuration("h", ConfigurationFormat.CISCO_IOS); Configuration c2 = new Configuration("h2", ConfigurationFormat.CISCO_IOS); return MockSpecifierContext.builder() .setConfigs(ImmutableSortedMap.of("h", c1, "h2", c2)) .build(); } }
@Override public SpecifierContext specifierContext() { Configuration c1 = new Configuration("h", ConfigurationFormat.CISCO_IOS); Configuration c2 = new Configuration("h2", ConfigurationFormat.CISCO_IOS); return MockSpecifierContext.builder() .setConfigs(ImmutableSortedMap.of("h", c1, "h2", c2)) .build(); } }
@Test public void resolve() { ReferenceBook book = ReferenceBook.builder("book1") .setAddressGroups( ImmutableList.of( new AddressGroup( ImmutableSortedSet.of("1.1.1.1", "2.2.2.2:0.0.0.8"), "group1"))) .build(); MockSpecifierContext ctxt = MockSpecifierContext.builder().setReferenceBooks(ImmutableSortedSet.of(book)).build(); ReferenceAddressGroupIpSpaceSpecifier specifier = new ReferenceAddressGroupIpSpaceSpecifier("group1", "book1"); IpSpace resolvedSpace = AclIpSpace.union( specifier.resolve(ImmutableSet.of(), ctxt).getEntries().stream() .map(e -> e.getIpSpace()) .collect(Collectors.toSet())); assertThat( resolvedSpace, equalTo( AclIpSpace.union( new IpWildcard("1.1.1.1").toIpSpace(), new IpWildcard("2.2.2.2:0.0.0.8").toIpSpace()))); } }
MockSpecifierContext.builder() .setConfigs(ImmutableMap.of("node1", node1, "node2", node2)) .build();
@Test public void resolve() { Configuration node1 = new Configuration("node1", ConfigurationFormat.CISCO_IOS); Configuration node2 = new Configuration("node2", ConfigurationFormat.CISCO_IOS); Interface iface11 = Interface.builder().setName("iface11").setOwner(node1).build(); Interface iface12 = Interface.builder().setName("iface12").setOwner(node1).build(); Interface iface2 = Interface.builder().setName("iface2").setOwner(node2).build(); node1.setInterfaces(ImmutableSortedMap.of("iface11", iface11, "iface12", iface12)); node2.setInterfaces(ImmutableSortedMap.of("iface2", iface2)); MockSpecifierContext ctxt = MockSpecifierContext.builder() .setConfigs(ImmutableMap.of("node1", node1, "node2", node2)) .build(); assertThat( new ShorthandInterfaceSpecifier(new InterfacesSpecifier("iface11")) .resolve(ImmutableSet.of("node1"), ctxt), equalTo(ImmutableSet.of(iface11))); } }
MockSpecifierContext.builder() .setConfigs(ImmutableMap.of("node1", node1, "node2", node2)) .build();
MockSpecifierContext.builder() .setConfigs(ImmutableMap.of("node1", node1, "node2", node2)) .build();
MockSpecifierContext.builder() .setConfigs(ImmutableMap.of(node1.getHostname(), node1, node2.getHostname(), node2)) .setReferenceBooks(ImmutableSortedSet.of(referenceBook))
@Test public void testErrorForNoMatchingNodes() throws IOException { Configuration c1 = _cb.setHostname("c1").build(); SortedMap<String, Configuration> configs = ImmutableSortedMap.of(c1.getHostname(), c1); IBatfish batfish = new MockBatfish(configs, MockSpecifierContext.builder().setConfigs(configs).build()); // Test that exception is thrown if no nodes match TestFiltersQuestion question = new TestFiltersQuestion(new NodesSpecifier("fake_node"), null, null, null); TestFiltersAnswerer answerer = new TestFiltersAnswerer(question, batfish); _thrown.expect(BatfishException.class); _thrown.expectMessage("No matching filters"); answerer.answer(); }
@Test public void testErrorForNoMatchingFilters() throws IOException { Configuration c1 = _cb.setHostname("c1").build(); SortedMap<String, Configuration> configs = ImmutableSortedMap.of(c1.getHostname(), c1); IBatfish batfish = new MockBatfish(configs, MockSpecifierContext.builder().setConfigs(configs).build()); // Test that exception is thrown if node is found, but no filters match TestFiltersQuestion question = new TestFiltersQuestion(new NodesSpecifier(c1.getHostname()), "fake_filter", null, null); TestFiltersAnswerer answerer = new TestFiltersAnswerer(question, batfish); _thrown.expect(BatfishException.class); _thrown.expectMessage("No matching filters"); answerer.answer(); } }
new MockBatfish( configs, MockSpecifierContext.builder() .setConfigs(configs) .setInterfaceOwnedIps(
MockSpecifierContext.builder() .setConfigs(ImmutableSortedMap.of(_c1.getHostname(), _c1, _c2.getHostname(), _c2)) .setInterfaceOwnedIps(