@Override public AbstractConstraint parse() throws PlacementConstraintParseException { // do pre-process, validate input. validate(); String op = nextToken(); shouldHaveNext(); List<AbstractConstraint> constraints = new ArrayList<>(); while(hasMoreTokens()) { // each child expression can be any valid form of // constraint expressions. String constraintStr = nextToken(); AbstractConstraint constraint = parseExpression(constraintStr); constraints.add(constraint); } if (AND.equalsIgnoreCase(op)) { return PlacementConstraints.and( constraints.toArray( new AbstractConstraint[constraints.size()])); } else if (OR.equalsIgnoreCase(op)) { return PlacementConstraints.or( constraints.toArray( new AbstractConstraint[constraints.size()])); } else { throw new PlacementConstraintParseException( "Unexpected conjunction operator : " + op + ", expecting " + AND + " or " + OR); } } }
maxCardinality(NODE, 3, "spark"))); c6 = PlacementConstraints .build(or(targetIn(NODE, allocationTag("hbase-m")), targetIn(NODE, allocationTag("hbase-rs")))); c7 = PlacementConstraints .build(or(targetIn(NODE, allocationTag("hbase-m")), and(targetIn(NODE, allocationTag("hbase-rs")), targetIn(NODE, allocationTag("spark")))));
@Test public void testCompositeConstraintProtoConverter() { AbstractConstraint constraintExpr = or(targetIn(RACK, allocationTag("spark")), maxCardinality(NODE, 3), targetCardinality(RACK, 2, 10, allocationTag("zk"))); Assert.assertTrue(constraintExpr instanceof Or);
or(targetIn("node", allocationTag("foo")), targetIn("node", allocationTag("moo")))).build(); Assert.assertEquals(actualPc1, expectedPc1);
app1Constraints.put(Collections.singleton("moo"), PlacementConstraints.build( PlacementConstraints.or( PlacementConstraints.targetIn(NODE, allocationTag("foo")), PlacementConstraints.targetIn(NODE, allocationTag("bar")))));
@Test public void testCompositeConstraint() { AbstractConstraint constraintExpr = or(targetIn(RACK, allocationTag("spark")), maxCardinality(NODE, 3), targetCardinality(RACK, 2, 10, allocationTag("zk"))); Assert.assertTrue(constraintExpr instanceof Or);
.allocationRequestId(10L).priority(Priority.newInstance(1)) .placementConstraintExpression( PlacementConstraints.or( PlacementConstraints .targetNodeAttribute(PlacementConstraints.NODE,