diff options
Diffstat (limited to 'searchlib/src/tests/groupingengine/groupingengine_test.cpp')
-rw-r--r-- | searchlib/src/tests/groupingengine/groupingengine_test.cpp | 671 |
1 files changed, 326 insertions, 345 deletions
diff --git a/searchlib/src/tests/groupingengine/groupingengine_test.cpp b/searchlib/src/tests/groupingengine/groupingengine_test.cpp index 4b2cf6a708a..d3f1df8c501 100644 --- a/searchlib/src/tests/groupingengine/groupingengine_test.cpp +++ b/searchlib/src/tests/groupingengine/groupingengine_test.cpp @@ -1,7 +1,5 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP("groupingengine_test"); + #include <vespa/vespalib/testkit/testapp.h> #include <vespa/searchlib/aggregation/perdocexpression.h> #include <vespa/searchlib/aggregation/aggregation.h> @@ -41,7 +39,7 @@ public: for (uint32_t docid = 0; docid < numDocs; ++docid) { T val; uint32_t res = rhs._attr->get(docid, &val, 1); - LOG_ASSERT(res == 1); + assert(res == 1); add(val); } } @@ -316,26 +314,57 @@ Test::testAggregationSimple() testAggregationSimpleSum(ctx, MaxAggregationResult(), Int64ResultNode(15), FloatResultNode(15), StringResultNode("7")); } +#define MU std::make_unique + void Test::testAggregationSimpleSum(AggregationContext & ctx, const AggregationResult & aggr, const ResultNode & ir, const ResultNode & fr, const ResultNode & sr) { ExpressionNode::CP clone(aggr); - Grouping request = Grouping() - .setRoot(Group() - .setId(NullResultNode()) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int"))) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float"))) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string"))) - ); - - Group expect = Group() - .setId(NullResultNode()) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int")).setResult(ir)) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float")).setResult(fr)) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string")).setResult(sr)); + Grouping request; + request.setRoot(Group().setId(NullResultNode()) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("int"))) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("float"))) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("string")))); + + Group expect; + expect.setId(NullResultNode()) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("int")).setResult(ir)) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("float")).setResult(fr)) + .addResult(static_cast<AggregationResult &>(*clone).setExpression(MU<AttributeNode>("string")).setResult(sr)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } +GroupingLevel +createGL(ExpressionNode::UP expr, ExpressionNode::UP result) { + GroupingLevel l; + l.setExpression(std::move(expr)); + l.addResult(SumAggregationResult().setExpression(std::move(result))); + return l; +} + +GroupingLevel +createGL(ExpressionNode::UP expr) { + GroupingLevel l; + l.setExpression(std::move(expr)); + return l; +} + +GroupingLevel +createGL(size_t maxGroups, ExpressionNode::UP expr) { + GroupingLevel l; + l.setMaxGroups(maxGroups); + l.setExpression(std::move(expr)); + return l; +} + +GroupingLevel +createGL(size_t maxGroups, ExpressionNode::UP expr, ExpressionNode::UP result) { + GroupingLevel l; + l.setMaxGroups(maxGroups); + l.setExpression(std::move(expr)); + l.addResult(SumAggregationResult().setExpression(std::move(result))); + return l; +} /** * Verify that the backend aggregation will classify and collect on * the appropriate levels, as indicated by the firstLevel and @@ -351,97 +380,71 @@ Test::testAggregationLevels() ctx.add(IntAttrBuilder("attr3").add(13).add(13).sp()); ctx.result().add(0).add(1); - Grouping baseRequest = Grouping() - .setRoot(Group() - .setId(NullResultNode()) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")))); - - Group notDone = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0"))); -// Hmm, do not need to prepare more than the levels needed. .setResult(Int64ResultNode(0))); - - Group done0 = Group() - .setId(NullResultNode()) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(0)))); + Grouping baseRequest; + baseRequest.setRoot(Group().setId(NullResultNode()) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")))) + .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2"))) + .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3"))) + .addLevel(createGL(MU<AttributeNode>("attr3"), MU<AttributeNode>("attr1"))); - Group done1 = Group() - .setId(NullResultNode()) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(24))) - .addChild(Group() - .setId(Int64ResultNode(12)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) - .setResult(Int64ResultNode(0))))); + Group notDone; + notDone.addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))); +// Hmm, do not need to prepare more than the levels needed. .setResult(Int64ResultNode(0))); - Group done2 = Group() - .setId(NullResultNode()) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(24))) - .addChild(Group() + Group done0; + done0.setId(NullResultNode()) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(0)))); + + Group done1; + done1.setId(NullResultNode()) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(24))) + .addChild(Group().setId(Int64ResultNode(12)) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3")) + .setResult(Int64ResultNode(0))))); + + Group done2; + done2.setId(NullResultNode()) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(24))) + .addChild(Group() .setId(Int64ResultNode(12)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) + .setExpression(MU<AttributeNode>("attr3")) .setResult(Int64ResultNode(26))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")) + .setExpression(MU<AttributeNode>("attr1")) .setResult(Int64ResultNode(0)))))); - Group done3 = Group() - .setId(NullResultNode()) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(24))) - .addChild(Group() - .setId(Int64ResultNode(12)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) - .setResult(Int64ResultNode(26))) - .addChild(Group() - .setId(Int64ResultNode(13)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")) - .setResult(Int64ResultNode(22)))))); + Group done3; + done3.setId(NullResultNode()) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(24))) + .addChild(Group().setId(Int64ResultNode(12)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr3")) + .setResult(Int64ResultNode(26))) + .addChild(Group().setId(Int64ResultNode(13)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr1")) + .setResult(Int64ResultNode(22)))))); { // level 0 only Grouping request = baseRequest.unchain().setFirstLevel(0).setLastLevel(0); @@ -498,8 +501,7 @@ Test::testAggregationMaxGroups() Grouping baseRequest = Grouping() .setRoot(Group().setId(NullResultNode())) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); + .addLevel(createGL(MU<AttributeNode>("attr"))); Group empty = Group().setId(NullResultNode()); Group grp1 = empty.unchain().addChild(Group().setId(Int64ResultNode(5))); @@ -550,18 +552,17 @@ Test::testAggregationGroupOrder() Grouping request = Grouping() .setRoot(Group().setId(NullResultNode())) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); - - Group expect = Group() - .setId(NullResultNode()) - .addChild(Group().setId(Int64ResultNode(5))) - .addChild(Group().setId(Int64ResultNode(10))) - .addChild(Group().setId(Int64ResultNode(15))) - .addChild(Group().setId(Int64ResultNode(20))) - .addChild(Group().setId(Int64ResultNode(25))) - .addChild(Group().setId(Int64ResultNode(30))) - .addChild(Group().setId(Int64ResultNode(35))); + .addLevel(createGL(MU<AttributeNode>("attr"))); + + Group expect; + expect.setId(NullResultNode()) + .addChild(Group().setId(Int64ResultNode(5))) + .addChild(Group().setId(Int64ResultNode(10))) + .addChild(Group().setId(Int64ResultNode(15))) + .addChild(Group().setId(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(25))) + .addChild(Group().setId(Int64ResultNode(30))) + .addChild(Group().setId(Int64ResultNode(35))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -584,7 +585,7 @@ Test::testAggregationGroupRank() Grouping request = Grouping() .setRoot(Group().setId(NullResultNode())) - .addLevel(GroupingLevel().setExpression(AttributeNode("attr"))); + .addLevel(createGL(MU<AttributeNode>("attr"))); Group expect = Group() .setId(NullResultNode()) @@ -595,6 +596,22 @@ Test::testAggregationGroupRank() EXPECT_TRUE(testAggregation(ctx, request, expect)); } +template<typename T> +ExpressionNode::UP +createAggr(ExpressionNode::UP e) { + std::unique_ptr<T> aggr = MU<T>(); + aggr->setExpression(std::move(e)); + return aggr; +} + +template<typename T> +ExpressionNode::UP +createAggr(SingleResultNode::UP r, ExpressionNode::UP e) { + std::unique_ptr<T> aggr = MU<T>(std::move(r)); + aggr->setExpression(std::move(e)); + return aggr; +} + void Test::testAggregationGroupCapping() { @@ -609,8 +626,8 @@ Test::testAggregationGroupCapping() .add(6, 7).add(7, 8).add(8, 9); { - Grouping request = Grouping().setRoot(Group().setId(NullResultNode())).addLevel( - GroupingLevel().setExpression(AttributeNode("attr"))); + Grouping request; + request.setRoot(Group().setId(NullResultNode())).addLevel(createGL(MU<AttributeNode>("attr"))); Group expect = Group().setId(NullResultNode()) .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1))) @@ -626,66 +643,86 @@ Test::testAggregationGroupCapping() EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping().setRoot(Group().setId(NullResultNode())).addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr"))); + Grouping request; + request.setRoot(Group().setId(NullResultNode())).addLevel( + createGL(3, MU<AttributeNode>("attr"))); - Group expect = Group().setId(NullResultNode()) - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); + Group expect; + expect.setId(NullResultNode()) + .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping(). - setRoot(Group().setId(NullResultNode())). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))). - addOrderBy(AggregationRefNode(0), false)); - - Group expect = Group().setId(NullResultNode()) - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)); + Grouping request; + request.setRoot(Group().setId(NullResultNode())) + .setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")) + .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false))); + + Group expect; + expect.setId(NullResultNode()) + .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping(). - setRoot(Group().setId(NullResultNode())). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)); - - Group expect = Group().setId(NullResultNode()) - .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)).addAggregationResult(SumAggregationResult(Int64ResultNode(1)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)) - .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)).addAggregationResult(SumAggregationResult(Int64ResultNode(2)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)) - .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)).addAggregationResult(SumAggregationResult(Int64ResultNode(3)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)); + Grouping request; + request.setRoot(Group().setId(NullResultNode())) + .setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")) + .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true))); + + Group expect; + expect.setId(NullResultNode()) + .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(1), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)) + .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(2), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)) + .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(3), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { AddFunctionNode *add = new AddFunctionNode(); - add->addArg(AggregationRefNode(0)); - add->appendArg(ConstantNode(Int64ResultNode(3))); - ExpressionNode::CP i1(add); - Grouping request = Grouping(). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))). - addOrderBy(i1, false)); + add->addArg(MU<AggregationRefNode>(0)); + add->appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))); + ExpressionNode::UP i1(add); + Grouping request; + request.setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")). + addResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))). + addOrderBy(std::move(i1), false))); Group expect = Group() - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(10)), false)) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(11)), false)) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(12)), false)); + .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(10)), false)) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(11)), false)) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(12)), false)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -706,20 +743,20 @@ Test::testMergeSimpleSum() .setRoot(Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(20)))); Grouping b = Grouping() .setRoot(Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(30)))); Group expect = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(50))); EXPECT_TRUE(testMerge(a, b, expect)); @@ -732,167 +769,158 @@ void Test::testMergeLevels() { Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + .addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); Group a = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); Group b = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); Group expect_all = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(20))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_0 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(20))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_1 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_2 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_3 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); EXPECT_TRUE(testMerge(request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(a), @@ -920,9 +948,7 @@ Test::testMergeLevels() void Test::testMergeGroups() { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); + Grouping request = Grouping().addLevel(createGL(MU<AttributeNode>("attr"))); Group a = Group() .setId(NullResultNode()) @@ -983,48 +1009,36 @@ Test::testMergeGroups() void Test::testMergeTrees() { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setMaxGroups(3) - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setMaxGroups(2) - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setMaxGroups(1) - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + Grouping request; + request.addLevel(createGL(3, MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(2, MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(1, MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); Group a = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(5)) // merged with 200 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1034,21 +1048,21 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) // dummy child would be picked up here .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(14)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1058,14 +1072,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) ) ); @@ -1073,28 +1087,28 @@ Test::testMergeTrees() Group b = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1104,14 +1118,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) // dummy child would be picket up here .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) ) ) @@ -1120,21 +1134,21 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(5)) // merged with 300 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(5)) // merged with 100 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1143,14 +1157,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(25)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(24)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(25)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1159,25 +1173,25 @@ Test::testMergeTrees() Group expect = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1185,13 +1199,13 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1200,19 +1214,19 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1221,19 +1235,19 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1241,13 +1255,13 @@ Test::testMergeTrees() .setId(Int64ResultNode(25)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(25)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1400,39 +1414,30 @@ Test::testPruneComplex() void Test::testPartialMerging() { - Grouping baseRequest = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + Grouping baseRequest; + baseRequest.addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); // Cached result Group cached = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(110))) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(14)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1440,17 +1445,17 @@ Test::testPartialMerging() .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(15)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(22)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1461,23 +1466,23 @@ Test::testPartialMerging() Grouping request = baseRequest.unchain().setFirstLevel(0).setLastLevel(0); Group incoming = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(0))); Group expected = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(110))) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setLastLevel(3).setRoot(cached), expected)); @@ -1487,81 +1492,81 @@ Test::testPartialMerging() Grouping request = baseRequest.unchain().setFirstLevel(1).setLastLevel(1); Group incoming = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(3)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(7)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0)))) .addChild(Group() .setId(Int64ResultNode(33)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); Group expected = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(3)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(0))) ) ) .addChild(Group() .setId(Int64ResultNode(7)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(15)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(0))) ) ) .addChild(Group() .setId(Int64ResultNode(33)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(cached), expected)); @@ -1575,11 +1580,8 @@ void Test::testPruneSimple() { { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))) - .setFirstLevel(1) - .setLastLevel(1); + Grouping request; + request.addLevel(createGL(MU<AttributeNode>("attr"))).setFirstLevel(1).setLastLevel(1); Group a = Group() .addChild(Group().setId(StringResultNode("foo"))) @@ -1607,34 +1609,26 @@ Test::testTopN() ctx.result().add(0).add(1).add(2); ctx.add(IntAttrBuilder("foo").add(3).add(7).add(15).sp()); - Grouping request = Grouping() - .setRoot(Group().setId(NullResultNode()) - .addResult(CountAggregationResult() - .setExpression(ConstantNode(Int64ResultNode(0))) - ) - ); + Grouping request; + request.setRoot(Group().setId(NullResultNode()).addResult(CountAggregationResult().setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))))); { - Group expect = Group().setId(NullResultNode()) - .addResult(CountAggregationResult().setCount(3) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect; + expect.setId(NullResultNode()).addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Group expect = Group().setId(NullResultNode()) - .addResult(CountAggregationResult().setCount(1) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect; + expect.setId(NullResultNode()).addResult(CountAggregationResult().setCount(1).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request.setTopN(1), expect)); } { Grouping request2 = Grouping() .setRoot(Group().setId(NullResultNode())) - .addLevel(GroupingLevel() - .addAggregationResult(SumAggregationResult()) - .addOrderBy(AggregationRefNode(0), false)); + .addLevel(std::move(GroupingLevel() + .addAggregationResult(MU<SumAggregationResult>()) + .addOrderBy(MU<AggregationRefNode>(0), false))); EXPECT_TRUE(request2.needResort()); request2.setTopN(0); EXPECT_TRUE(request2.needResort()); @@ -1659,14 +1653,11 @@ Test::testCount() Grouping request = Grouping() .setRoot(Group().setId(NullResultNode()) .addResult(CountAggregationResult() - .setExpression(ConstantNode(Int64ResultNode(0))) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))) ) ); - Group expect = Group().setId(NullResultNode()) - .addResult(CountAggregationResult().setCount(3) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect = Group().setId(NullResultNode()).addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -1693,7 +1684,7 @@ Test::testFS4HitCollection() .setRoot(Group().setId(NullResultNode()) .addResult(HitsAggregationResult() .setMaxHits(3) - .setExpression(ConstantNode(Int64ResultNode(0)))) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))) ); Group expect = Group().setId(NullResultNode()) @@ -1703,7 +1694,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(25, 25.0)) .addHit(FS4Hit(20, 20.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -1713,7 +1704,7 @@ Test::testFS4HitCollection() .setRoot(Group() .addResult(HitsAggregationResult() .setMaxHits(3) - .setExpression(ConstantNode(Int64ResultNode(0)))) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))) ); Group expect = Group() @@ -1724,7 +1715,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(20, 20.0)) .addHit(FS4Hit(10, 10.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group a = Group() .setId(NullResultNode()) @@ -1734,7 +1725,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(1, 5.0)) .addHit(FS4Hit(2, 4.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group b = Group() .setId(NullResultNode()) @@ -1744,7 +1735,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(3, 7.0)) .addHit(FS4Hit(4, 6.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group c = Group() .setId(NullResultNode()) @@ -1754,7 +1745,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(5, 9.0)) .addHit(FS4Hit(6, 8.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testMerge(request.unchain().setRoot(a), request.unchain().setRoot(b), request.unchain().setRoot(c), expect)); EXPECT_TRUE(testMerge(request.unchain().setRoot(b), request.unchain().setRoot(c), request.unchain().setRoot(a), expect)); @@ -1810,9 +1801,10 @@ Test::checkBucket(const NumericResultNode &width, const NumericResultNode &value } else { return EXPECT_TRUE(false); } + std::unique_ptr<FixedWidthBucketFunctionNode> fixed = MU<FixedWidthBucketFunctionNode>(MU<AttributeNode>("attr")); + fixed->setWidth(width); Grouping request = Grouping().setRoot(Group().setId(NullResultNode())) - .addLevel(GroupingLevel() - .setExpression(FixedWidthBucketFunctionNode(AttributeNode("attr")).setWidth(width))); + .addLevel(createGL(std::move(fixed))); Group expect = Group().setId(NullResultNode()).addChild(Group().setId(bucket)); return testAggregation(ctx, request, expect); } @@ -1929,22 +1921,11 @@ Test::testGroupingEngineFromRequest() ctx.add(IntAttrBuilder("attr2").add(12).add(12).sp()); ctx.add(IntAttrBuilder("attr3").add(13).add(13).sp()); ctx.result().add(0).add(1); - Grouping baseRequest = Grouping() - .setRoot(Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")))); + Grouping baseRequest; + baseRequest.setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")))) + .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2"))) + .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3"))) + .addLevel(createGL(MU<AttributeNode>("attr3"), MU<AttributeNode>("attr1"))); ctx.setup(baseRequest); GroupingEngine engine(baseRequest.setFirstLevel(0).setLastLevel(2)); EXPECT_EQUAL(4u, engine.getEngines().size()); |