@Test public void testAllDispositions() { IpSpaceAssignment assignment = _batfish.getAllSourcesInferFromLocationIpSpaceAssignment(_batfish.getSnapshot()); Set<FlowDisposition> dropDispositions = ImmutableSet.of(DENIED_IN, DENIED_OUT, NO_ROUTE, NULL_ROUTED); Set<String> finalNodes = _net._configs.keySet(); Map<IngressLocation, BDD> acceptedBDDs = _graphFactory .bddReachabilityAnalysis( assignment, matchDst(UniverseIpSpace.INSTANCE), ImmutableSet.of(), ImmutableSet.of(), finalNodes, ImmutableSet.of(ACCEPTED)) .getIngressLocationReachableBDDs(); Map<IngressLocation, BDD> deniedInBDDs = _graphFactory .bddReachabilityAnalysis( assignment, matchDst(UniverseIpSpace.INSTANCE), ImmutableSet.of(), ImmutableSet.of(), finalNodes, ImmutableSet.of(DENIED_IN)) .getIngressLocationReachableBDDs(); Map<IngressLocation, BDD> dropBDDs = _graphFactory .bddReachabilityAnalysis( assignment, matchDst(UniverseIpSpace.INSTANCE), ImmutableSet.of(), ImmutableSet.of(), finalNodes, dropDispositions) .getIngressLocationReachableBDDs(); Map<IngressLocation, BDD> dropExceptDeniedInBDDs = _graphFactory .bddReachabilityAnalysis( assignment, matchDst(UniverseIpSpace.INSTANCE), ImmutableSet.of(), ImmutableSet.of(), finalNodes, Sets.difference(dropDispositions, ImmutableSet.of(DENIED_IN))) .getIngressLocationReachableBDDs(); Map<IngressLocation, BDD> neighborUnreachableBDDs = _graphFactory .bddReachabilityAnalysis( assignment, matchDst(UniverseIpSpace.INSTANCE), ImmutableSet.of(), ImmutableSet.of(), finalNodes, ImmutableSet.of(NEIGHBOR_UNREACHABLE)) .getIngressLocationReachableBDDs(); assertThat(computeMultipathInconsistencies(PKT, acceptedBDDs, dropExceptDeniedInBDDs), empty()); assertThat( computeMultipathInconsistencies(PKT, acceptedBDDs, dropBDDs), equalTo(computeMultipathInconsistencies(PKT, acceptedBDDs, deniedInBDDs))); assertThat(computeMultipathInconsistencies(PKT, neighborUnreachableBDDs, dropBDDs), empty()); assertThat( computeMultipathInconsistencies(PKT, acceptedBDDs, neighborUnreachableBDDs), empty()); }
public static List<Flow> computeMultipathInconsistencies( BDDPacket bddPacket, Map<IngressLocation, BDD> disposition1FlowBdds, Map<IngressLocation, BDD> disposition2FlowBdds) { return computeMultipathInconsistencyBDDs(disposition1FlowBdds, disposition2FlowBdds) .map(violation -> multipathInconsistencyToFlow(bddPacket, violation)) .collect(ImmutableList.toImmutableList()); }
BDDMultipathInconsistency { public static List<Flow> computeMultipathInconsistencies( BDDPacket bddPacket, Map<IngressLocation, BDD> disposition1FlowBdds, Map<IngressLocation, BDD> disposition2FlowBdds) { return computeMultipathInconsistencyBDDs(disposition1FlowBdds, disposition2FlowBdds) .map(violation -> multipathInconsistencyToFlow(bddPacket, violation)) .collect(ImmutableList.toImmutableList()); } }
BDDMultipathInconsistency { public static List<Flow> computeMultipathInconsistencies( BDDPacket bddPacket, Map<IngressLocation, BDD> disposition1FlowBdds, Map<IngressLocation, BDD> disposition2FlowBdds) { return computeMultipathInconsistencyBDDs(disposition1FlowBdds, disposition2FlowBdds) .map(violation -> multipathInconsistencyToFlow(bddPacket, violation)) .collect(ImmutableList.toImmutableList()); } private  BDDMultipathInconsistency(); }
BDDMultipathInconsistency { public static List<Flow> computeMultipathInconsistencies( BDDPacket bddPacket, Map<IngressLocation, BDD> disposition1FlowBdds, Map<IngressLocation, BDD> disposition2FlowBdds) { return computeMultipathInconsistencyBDDs(disposition1FlowBdds, disposition2FlowBdds) .map(violation -> multipathInconsistencyToFlow(bddPacket, violation)) .collect(ImmutableList.toImmutableList()); } private  BDDMultipathInconsistency(); static List<Flow> computeMultipathInconsistencies(
      BDDPacket bddPacket,
      Map<IngressLocation, BDD> disposition1FlowBdds,
      Map<IngressLocation, BDD> disposition2FlowBdds); }
BDDMultipathInconsistency { public static List<Flow> computeMultipathInconsistencies( BDDPacket bddPacket, Map<IngressLocation, BDD> disposition1FlowBdds, Map<IngressLocation, BDD> disposition2FlowBdds) { return computeMultipathInconsistencyBDDs(disposition1FlowBdds, disposition2FlowBdds) .map(violation -> multipathInconsistencyToFlow(bddPacket, violation)) .collect(ImmutableList.toImmutableList()); } private  BDDMultipathInconsistency(); static List<Flow> computeMultipathInconsistencies(
      BDDPacket bddPacket,
      Map<IngressLocation, BDD> disposition1FlowBdds,
      Map<IngressLocation, BDD> disposition2FlowBdds);  }