@Test public void getPrefixRangesTest() { assertThat("No ranges yet", _ps.getPrefixRanges().isEmpty(), equalTo(true)); _ps.addPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-21")); Set<PrefixRange> ranges = _ps.getPrefixRanges(); assertThat(ranges.contains(PrefixRange.fromString("10.10.0.0/18")), equalTo(true)); assertThat(ranges.contains(PrefixRange.fromString("10.10.0.0/19")), equalTo(true)); assertThat(ranges.contains(PrefixRange.fromString("10.10.10.0/20:18-21")), equalTo(true)); assertThat(ranges.size(), equalTo(3)); _ps.addPrefixRange((PrefixRange.fromString("10.10.10.0/20:20-22"))); ranges = _ps.getPrefixRanges(); assertThat(ranges.contains(PrefixRange.fromString("10.10.10.0/20:20-22")), equalTo(true)); }
@Test public void testDeSerialization() throws IOException { PrefixRange pr = PrefixRange.fromString("1.2.3.4/8:17-19"); assertThat( BatfishObjectMapper.mapper().readValue("\"1.0.0.0/8:17-19\"", PrefixRange.class), equalTo(pr)); }
@Test public void testSerialization() throws JsonProcessingException { PrefixRange pr = PrefixRange.fromString("1.2.3.4/8:17-19"); assertThat(BatfishObjectMapper.writeString(pr), equalTo("\"1.0.0.0/8:17-19\"")); }
@Test public void constructPrefixSpaceTest() { _ps = new PrefixSpace(PrefixRange.fromString("100.0.0.0/32")); assertThat(_ps.isEmpty(), equalTo(false)); assertThat(_ps.containsPrefixRange(PrefixRange.fromString("100.0.0.0/32")), equalTo(true)); }
@Test public void testToString() { PrefixRange pr = PrefixRange.fromString("1.2.3.4/8:17-19"); assertThat(pr.toString(), equalTo("1.0.0.0/8:17-19")); }
@Test public void containsPrefixRangeTest() { PrefixRange range = PrefixRange.fromString("10.10.10.0/20:16-24"); _ps.addPrefixRange(range); assertThat( "Ranges earlier than this range not included", _ps.containsPrefixRange(PrefixRange.fromString("10.10.10.0/20:15-24")), equalTo(false)); assertThat( "Ranges later than this range not included", _ps.containsPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-26")), equalTo(false)); assertThat( "Ranges contained in this range included", _ps.containsPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-20")), equalTo(true)); assertThat( "Range not included if prefix is shorter", _ps.containsPrefixRange(PrefixRange.fromString("10.10.10.0/8:16-24")), equalTo(false)); assertThat( "Range included if prefix is longer", _ps.containsPrefixRange(PrefixRange.fromString("10.10.10.0/28:16-24")), equalTo(true)); }
@Test public void testPruning() { PrefixRange ten8to15 = PrefixRange.fromString("10.0.0.0/8:8-15"); PrefixRange ten8to16 = PrefixRange.fromString("10.0.0.0/8:8-16"); PrefixRange ten9to17 = PrefixRange.fromString("10.0.0.0/8:9-17"); PrefixRange one9to9 = PrefixRange.fromString("1.0.0.0/8:9-9"); PrefixRange eleven9to9 = PrefixRange.fromString("11.0.0.0/8:9-9"); PrefixRange all = PrefixRange.fromString("0.0.0.0/0:0-32");
@Test public void addSpaceTest() { PrefixRange range = PrefixRange.fromString("100.0.0.0/32"); _ps.addSpace(new PrefixSpace(range)); assertThat(_ps.isEmpty(), equalTo(false)); assertThat(_ps.containsPrefixRange(range), equalTo(true)); }
String.format("A Batfish %s must be a JSON string", expectedType.getName())); PrefixRange.fromString(value.textValue()); break; case PROTOCOL:
@Test public void intersectionAndOverlapsTest() { PrefixSpace other = new PrefixSpace(); assertThat("empty spaces don't intersect", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap for empty spaces", _ps.overlaps(other), equalTo(false)); _ps.addPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-21")); assertThat("no intersection for one empty", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap for one empty", _ps.overlaps(other), equalTo(false)); other.addPrefixRange(PrefixRange.fromString("10.10.10.0/16:14-16")); assertThat("no intersection", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap", _ps.overlaps(other), equalTo(false)); other.addPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-20")); PrefixSpace intersection = _ps.intersection(other); assertThat( "now intersect for length 18", intersection.containsPrefix(Prefix.parse("10.10.0.0/18")), equalTo(true)); assertThat( "now intersect for length 19", intersection.containsPrefix(Prefix.parse("10.10.0.0/19")), equalTo(true)); assertThat( "now intersect for range 18-20", intersection.containsPrefixRange(PrefixRange.fromString("10.10.0.0/20:18-20")), equalTo(true)); assertThat("don't intersect anywhere else", intersection.getPrefixRanges().size(), equalTo(3)); assertThat("has overlap", _ps.overlaps(other), equalTo(true)); }
@Test public void addPrefixRangeTest() { PrefixRange range = PrefixRange.fromString("10.10.10.0/32:16-24"); _ps = new PrefixSpace(range); assertThat(_ps.containsPrefixRange(range), equalTo(true)); assertThat( "Shorter prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/15")), equalTo(false)); assertThat( "Shortest prefix is included", _ps.containsPrefix(Prefix.parse("10.10.10.0/16")), equalTo(true)); assertThat( "Longest prefix is included", _ps.containsPrefix(Prefix.parse("10.10.10.0/24")), equalTo(true)); assertThat( "Longer prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/25")), equalTo(false)); assertThat( "Prefixes with mismatch in masked bits not included", _ps.containsPrefix(Prefix.parse("10.10.11.0/24")), equalTo(false)); assertThat( "Prefixes with mismatch in unmasked bits included", _ps.containsPrefix(Prefix.parse("10.10.10.255/24")), equalTo(true)); }