@Test public void testFailure() { assertThat( DispositionSpecifier.create("FAILURE").getDispositions(), equalTo(FAILURE_SPECIFIER.getDispositions())); }
@Test public void testTrimming() { assertThat( DispositionSpecifier.create("no_route , null_routed").getDispositions(), equalTo(ImmutableSet.of(FlowDisposition.NO_ROUTE, FlowDisposition.NULL_ROUTED))); }
@Test public void testSuccessDisjointFromFailure() { Set<FlowDisposition> success = DispositionSpecifier.create("SUCCESS").getDispositions(); Set<FlowDisposition> failure = DispositionSpecifier.create("FAILURE").getDispositions(); assertThat( "No overlap between success and failure dispositions", Sets.intersection(success, failure).isEmpty()); }
@Test public void testCaseInsensitive() { assertThat( DispositionSpecifier.create("SUCCESS").getDispositions(), equalTo(DispositionSpecifier.create("suCCess").getDispositions())); }
@Test public void testCreationDefault() { assertThat( DispositionSpecifier.create(null).getDispositions(), equalTo( ImmutableSet.of( FlowDisposition.ACCEPTED, FlowDisposition.DELIVERED_TO_SUBNET, FlowDisposition.EXITS_NETWORK))); }
@Test public void testSuccess() { assertThat( DispositionSpecifier.create("success").getDispositions(), equalTo( ImmutableSet.of( FlowDisposition.ACCEPTED, FlowDisposition.DELIVERED_TO_SUBNET, FlowDisposition.EXITS_NETWORK))); }
@Test public void testSupportsPrimitiveDispositions() { assertThat( DispositionSpecifier.create("no_route").getDispositions(), equalTo(ImmutableSet.of(FlowDisposition.NO_ROUTE))); }
@Test public void testAllDispositionsCovered() { assertThat( DispositionSpecifier.create("success,failure").getDispositions(), equalTo( Sets.difference( ImmutableSet.copyOf(FlowDisposition.values()), ImmutableSet.of(NEIGHBOR_UNREACHABLE_OR_EXITS_NETWORK)))); }
@Test public void testQuestionDefaults() { SpecifiersReachabilityQuestion question = new SpecifiersReachabilityQuestion(); assertThat( question.getActions().getDispositions(), equalTo(ImmutableSortedSet.of(ACCEPTED, DELIVERED_TO_SUBNET, EXITS_NETWORK))); assertThat( question.getReachabilityParameters().getDestinationIpSpaceSpecifier(), equalTo(new ConstantIpSpaceSpecifier(UniverseIpSpace.INSTANCE))); assertThat( question.getReachabilityParameters().getSourceIpSpaceSpecifier(), equalTo(InferFromLocationIpSpaceSpecifier.INSTANCE)); assertThat( question.getPathConstraints().getTransitLocations(), equalTo(NoNodesNodeSpecifier.INSTANCE)); assertThat( question.getPathConstraints().getForbiddenLocations(), equalTo(NoNodesNodeSpecifier.INSTANCE)); assertThat(question.getIgnoreFilters(), equalTo(false)); }
ReachabilityParameters.filterDispositions(question.getActions().getDispositions()), forbiddenTransitNodes, finalNodes,
ReachabilityParameters getReachabilityParameters() { PathConstraints pathConstraints = getPathConstraints(); return ReachabilityParameters.builder() .setActions( ImmutableSortedSet.copyOf( ReachabilityParameters.filterDispositions(getActions().getDispositions()))) .setDestinationIpSpaceSpecifier(getDestinationIpSpaceSpecifier()) .setFinalNodesSpecifier(pathConstraints.getEndLocation()) .setForbiddenTransitNodesSpecifier(pathConstraints.getForbiddenLocations()) .setHeaderSpace(getHeaderSpace()) .setIgnoreFilters(getIgnoreFilters()) .setInvertSearch(getInvertSearch()) .setRequiredTransitNodesSpecifier(pathConstraints.getTransitLocations()) .setSourceLocationSpecifier(pathConstraints.getStartLocation()) .setSourceIpSpaceSpecifier(getSourceIpSpaceSpecifier()) .setSpecialize(true) .build(); }