public PathConstraintsInput build() { PathConstraintsInput pathConstraintsInput = new PathConstraintsInput(null, null, null, null); pathConstraintsInput._startLocation = this._startLocation; pathConstraintsInput._forbiddenLocations = this._forbiddenLocations; pathConstraintsInput._transitLocations = this._transitLocations; pathConstraintsInput._endLocation = this._endLocation; return pathConstraintsInput; } }
public SpecifiersReachabilityQuestion build() { return new SpecifiersReachabilityQuestion( _actions, _headerConstraints, _ignoreFilters, _invertSearch, _maxTraces, _pathConstraints); } }
@Override protected Question createQuestion() { // no reason for this to be the default but we must instantiate with something return new SpecifiersQuestion(QueryType.IP_SPACE); } }
@Test public void testTransitAndForbiddenNodesSpecification() { SpecifiersReachabilityQuestion question = SpecifiersReachabilityQuestion.builder() .setPathConstraints( PathConstraintsInput.builder() .setTransitLocations("foo") .setForbiddenLocations("bar") .build()) .build(); assertThat( question.getReachabilityParameters().getRequiredTransitNodesSpecifier(), equalTo( NodeSpecifierFactory.load(FlexibleNodeSpecifierFactory.NAME) .buildNodeSpecifier("foo"))); assertThat( question.getReachabilityParameters().getForbiddenTransitNodesSpecifier(), equalTo( NodeSpecifierFactory.load(FlexibleNodeSpecifierFactory.NAME) .buildNodeSpecifier("bar"))); }
@Override public AnswerElement answer() { SpecifiersQuestion question = (SpecifiersQuestion) _question; SpecifierContext context = _batfish.specifierContext(); switch (question.getQueryType()) { case FILTER: return resolveFilter(question, context); case INTERFACE: return resolveInterface(question, context); case IP_SPACE: return resolveIpSpace(question, context); case IP_SPACE_OF_LOCATION: return resolveIpSpaceOfLocation(question, context); case LOCATION: return resolveLocation(question, context); case NODE: return resolveNode(question, context); default: throw new IllegalArgumentException("Unhandled query type: " + question.getQueryType()); } }
@Test public void testGetIpSpaceSpecifier() { String input = "input"; SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(new TestIpSpaceSpecifierFactory().getName()); question.setIpSpaceSpecifierInput(input); IpSpaceSpecifier ipSpaceSpecifier = question.getIpSpaceSpecifier(); assertThat(ipSpaceSpecifier, instanceOf(TestIpSpaceSpecifier.class)); TestIpSpaceSpecifier testIpSpaceSpecifier = (TestIpSpaceSpecifier) ipSpaceSpecifier; assertThat(testIpSpaceSpecifier.getInput(), equalTo(input)); }
@Test public void testInvertSearch() { SpecifiersReachabilityQuestion q = SpecifiersReachabilityQuestion.builder().setInvertSearch(true).build(); assertThat(q.getReachabilityParameters().getInvertSearch(), equalTo(true)); } }
@Test public void testIgnoreFilters() { SpecifiersReachabilityQuestion q = SpecifiersReachabilityQuestion.builder().setIgnoreFilters(true).build(); assertThat(q.getReachabilityParameters().getIgnoreFilters(), equalTo(true)); }
@Test public void testGetIpSpaceSpecifier_inputWithoutFactory() { exception.expect(NullPointerException.class); SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(null); question.setIpSpaceSpecifierInput("foo"); question.getIpSpaceSpecifier(); }
@Test public void testGetLocationSpecifier_inputWithoutFactory() { exception.expect(NullPointerException.class); SpecifiersQuestion question = new SpecifiersQuestion(QueryType.LOCATION); question.setLocationSpecifierFactory(null); question.setLocationSpecifierInput("foo"); question.getLocationSpecifier(); } }
@Test public void testGetLocationSpecifier_defaultFactory() { LocationSpecifier locationSpecifier = new SpecifiersQuestion(QueryType.LOCATION).getLocationSpecifier(); assertThat(locationSpecifier, equalTo(AllInterfacesLocationSpecifier.INSTANCE)); }
@Override protected Answerer createAnswerer(Question question, IBatfish batfish) { return new SpecifiersReachabilityAnswerer(question, batfish); }
public static Builder builder() { return new Builder(); }
@Override protected Answerer createAnswerer(Question question, IBatfish batfish) { return new SpecifiersAnswerer(question, batfish); }
@VisibleForTesting PathConstraints getPathConstraints() { return createPathConstraints(_pathConstraints); }
@VisibleForTesting static Builder builder() { return new Builder(); }
@Override public IpSpaceSpecifier buildIpSpaceSpecifier(Object input) { return new TestIpSpaceSpecifier(input); } }
@Test public void testGetIpSpaceSpecifier_defaultInput() { SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(new TestIpSpaceSpecifierFactory().getName()); IpSpaceSpecifier ipSpaceSpecifier = question.getIpSpaceSpecifier(); assertThat(ipSpaceSpecifier, instanceOf(TestIpSpaceSpecifier.class)); TestIpSpaceSpecifier testIpSpaceSpecifier = (TestIpSpaceSpecifier) ipSpaceSpecifier; assertThat(testIpSpaceSpecifier.getInput(), nullValue()); }
@Override protected Question createQuestion() { return new SpecifiersReachabilityQuestion(); } }
public static PathConstraintsInput unconstrained() { return new PathConstraintsInput(null, null, null, null); }