use of org.batfish.z3.expr.RuleStatement in project batfish by batfish.
the class DefaultTransitionGeneratorTest method testVisitAclLineNoMatch.
@Test
public void testVisitAclLineNoMatch() {
SynthesizerInput input = MockSynthesizerInput.builder().setAclConditions(aclConditions()).build();
Set<RuleStatement> rules = ImmutableSet.copyOf(DefaultTransitionGenerator.generateTransitions(input, ImmutableSet.of(AclLineNoMatch.State.INSTANCE)));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), new AclLineNoMatch(NODE1, ACL1, 0))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL1, 0)), new AclLineNoMatch(NODE1, ACL1, 1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL1, 1)), new AclLineNoMatch(NODE1, ACL1, 2))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL1, 2)), new AclLineNoMatch(NODE1, ACL1, 3))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), new AclLineNoMatch(NODE1, ACL2, 0))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL2, 0)), new AclLineNoMatch(NODE1, ACL2, 1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL2, 1)), new AclLineNoMatch(NODE1, ACL2, 2))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE1, ACL2, 2)), new AclLineNoMatch(NODE1, ACL2, 3))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), new AclLineNoMatch(NODE2, ACL1, 0))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL1, 0)), new AclLineNoMatch(NODE2, ACL1, 1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL1, 1)), new AclLineNoMatch(NODE2, ACL1, 2))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL1, 2)), new AclLineNoMatch(NODE2, ACL1, 3))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), new AclLineNoMatch(NODE2, ACL2, 0))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL2, 0)), new AclLineNoMatch(NODE2, ACL2, 1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(FalseExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL2, 1)), new AclLineNoMatch(NODE2, ACL2, 2))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(TrueExpr.INSTANCE), ImmutableSet.of(new AclLineNoMatch(NODE2, ACL2, 2)), new AclLineNoMatch(NODE2, ACL2, 3))));
}
use of org.batfish.z3.expr.RuleStatement in project batfish by batfish.
the class DefaultTransitionGeneratorTest method testVisitNodeDropAcl.
@Test
public void testVisitNodeDropAcl() {
SynthesizerInput input = MockSynthesizerInput.builder().setEnabledNodes(ImmutableSet.of(NODE1, NODE2)).build();
Set<RuleStatement> rules = ImmutableSet.copyOf(DefaultTransitionGenerator.generateTransitions(input, ImmutableSet.of(NodeDropAcl.State.INSTANCE)));
Set<RuleStatement> expectedCopyNodeDropAclIn = ImmutableSet.of(new BasicRuleStatement(new NodeDropAclIn(NODE1), new NodeDropAcl(NODE1)), new BasicRuleStatement(new NodeDropAclIn(NODE2), new NodeDropAcl(NODE2)));
Set<RuleStatement> expectedCopyNodeDropAclOut = ImmutableSet.of(new BasicRuleStatement(new NodeDropAclOut(NODE1), new NodeDropAcl(NODE1)), new BasicRuleStatement(new NodeDropAclOut(NODE2), new NodeDropAcl(NODE2)));
assertThat(rules, equalTo(Sets.union(expectedCopyNodeDropAclIn, expectedCopyNodeDropAclOut)));
}
use of org.batfish.z3.expr.RuleStatement in project batfish by batfish.
the class DefaultTransitionGeneratorTest method testVisitNodeDropNoRoute.
@Test
public void testVisitNodeDropNoRoute() {
SynthesizerInput input = MockSynthesizerInput.builder().setRoutableIps(ImmutableMap.of(NODE1, ImmutableMap.of(VRF1, B1, VRF2, B2), NODE2, ImmutableMap.of(VRF1, B1, VRF2, B2))).build();
Set<RuleStatement> rules = ImmutableSet.copyOf(DefaultTransitionGenerator.generateTransitions(input, ImmutableSet.of(NodeDropNoRoute.State.INSTANCE)));
// DestinationRouting
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(B1), ImmutableSet.of(new PostInVrf(NODE1, VRF1), new PreOut(NODE1)), new NodeDropNoRoute(NODE1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(B2), ImmutableSet.of(new PostInVrf(NODE1, VRF2), new PreOut(NODE1)), new NodeDropNoRoute(NODE1))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(B1), ImmutableSet.of(new PostInVrf(NODE2, VRF1), new PreOut(NODE2)), new NodeDropNoRoute(NODE2))));
assertThat(rules, hasItem(new BasicRuleStatement(new NotExpr(B2), ImmutableSet.of(new PostInVrf(NODE2, VRF2), new PreOut(NODE2)), new NodeDropNoRoute(NODE2))));
}
use of org.batfish.z3.expr.RuleStatement in project batfish by batfish.
the class DefaultTransitionGeneratorTest method testVisitDropAclIn.
@Test
public void testVisitDropAclIn() {
SynthesizerInput input = MockSynthesizerInput.builder().setEnabledNodes(ImmutableSet.of(NODE1, NODE2)).build();
Set<RuleStatement> rules = ImmutableSet.copyOf(DefaultTransitionGenerator.generateTransitions(input, ImmutableSet.of(DropAclIn.State.INSTANCE)));
assertThat(rules, hasItem(new BasicRuleStatement(new NodeDropAclIn(NODE1), DropAclIn.INSTANCE)));
assertThat(rules, hasItem(new BasicRuleStatement(new NodeDropAclIn(NODE2), DropAclIn.INSTANCE)));
}
use of org.batfish.z3.expr.RuleStatement in project batfish by batfish.
the class DefaultTransitionGeneratorTest method testVisitAclPermit.
@Test
public void testVisitAclPermit() {
SynthesizerInput input = MockSynthesizerInput.builder().setAclActions(aclActions()).build();
Set<RuleStatement> rules = ImmutableSet.copyOf(DefaultTransitionGenerator.generateTransitions(input, ImmutableSet.of(AclPermit.State.INSTANCE)));
// MatchPermitLine
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE1, ACL1, 0), new AclPermit(NODE1, ACL1))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE1, ACL1, 2), new AclPermit(NODE1, ACL1))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE1, ACL2, 1), new AclPermit(NODE1, ACL2))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE1, ACL2, 3), new AclPermit(NODE1, ACL2))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE2, ACL1, 0), new AclPermit(NODE2, ACL1))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE2, ACL1, 2), new AclPermit(NODE2, ACL1))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE2, ACL2, 1), new AclPermit(NODE2, ACL2))));
assertThat(rules, hasItem(new BasicRuleStatement(new AclLineMatch(NODE2, ACL2, 3), new AclPermit(NODE2, ACL2))));
}
Aggregations