summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/grouping
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-27 12:15:36 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-27 16:21:02 +0200
commit90e312a5b60158871ddde4fef860dd1c9750b198 (patch)
tree7208a2541f18682875ca2e6942bcc3e5aa1f72e7 /searchcore/src/tests/grouping
parent686705737e62988387881b7ada5f9ada2167290a (diff)
Move the GroupingLevel
Diffstat (limited to 'searchcore/src/tests/grouping')
-rw-r--r--searchcore/src/tests/grouping/grouping.cpp216
1 files changed, 90 insertions, 126 deletions
diff --git a/searchcore/src/tests/grouping/grouping.cpp b/searchcore/src/tests/grouping/grouping.cpp
index 2701e697795..0b0b9b17f90 100644
--- a/searchcore/src/tests/grouping/grouping.cpp
+++ b/searchcore/src/tests/grouping/grouping.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("grouping_test");
+
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/aggregation/grouping.h>
#include <vespa/searchlib/aggregation/sumaggregationresult.h>
@@ -11,7 +9,6 @@ LOG_SETUP("grouping_test");
#include <vespa/searchcore/grouping/groupingcontext.h>
#include <vespa/searchcore/grouping/groupingmanager.h>
#include <vespa/searchcore/grouping/groupingsession.h>
-#include <vespa/searchcore/grouping/sessionid.h>
#include <vespa/searchcore/proton/matching/sessionmanager.h>
using namespace search::attribute;
@@ -174,20 +171,36 @@ TEST("testSessionId") {
#define MU std::make_unique
+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, ExpressionNode::UP resultExpr, ResultNode::UP result) {
+ GroupingLevel l;
+ l.setExpression(std::move(expr));
+ l.addResult(SumAggregationResult().setExpression(std::move(resultExpr)).setResult(result.release()));
+ return l;
+}
+GroupingLevel
+createGL(size_t maxGroups, ExpressionNode::UP expr) {
+ GroupingLevel l;
+ l.setMaxGroups(maxGroups);
+ l.setExpression(std::move(expr));
+ return l;
+}
+
TEST_F("testGroupingContextInitialization", DoomFixture()) {
vespalib::nbostream os;
- Grouping baseRequest = Grouping()
- .setRoot(Group()
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr3"))
- .addResult(SumAggregationResult().setExpression(MU<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")));
vespalib::NBOSerializer nos(os);
nos << (uint32_t)1;
@@ -204,34 +217,21 @@ TEST_F("testGroupingContextInitialization", DoomFixture()) {
TEST_F("testGroupingContextUsage", DoomFixture()) {
vespalib::nbostream os;
- Grouping request1 = Grouping()
- .setFirstLevel(0)
- .setLastLevel(0)
- .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr3"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr1"))));
-
- Grouping request2 = Grouping()
- .setFirstLevel(0)
- .setLastLevel(3)
- .setRoot(Group()
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr3"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr1"))));
+ Grouping request1;
+ request1.setFirstLevel(0)
+ .setLastLevel(0)
+ .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")));
+
+ Grouping request2;
+ request2.setFirstLevel(0)
+ .setLastLevel(3)
+ .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")));
GroupingContext::GroupingPtr r1(new Grouping(request1));
@@ -247,18 +247,11 @@ TEST_F("testGroupingContextUsage", DoomFixture()) {
}
TEST_F("testGroupingContextSerializing", DoomFixture()) {
- Grouping baseRequest = Grouping()
- .setRoot(Group()
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr3"))
- .addResult(SumAggregationResult().setExpression(MU<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")));
vespalib::nbostream os;
vespalib::NBOSerializer nos(os);
@@ -276,16 +269,12 @@ TEST_F("testGroupingContextSerializing", DoomFixture()) {
TEST_F("testGroupingManager", DoomFixture()) {
vespalib::nbostream os;
- Grouping request1 = Grouping()
- .setFirstLevel(0)
- .setLastLevel(0)
- .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))));
+ Grouping request1;
+ request1.setFirstLevel(0)
+ .setLastLevel(0)
+ .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2")))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3")));
GroupingContext context(f1.clock, f1.timeOfDoom);
GroupingContext::GroupingPtr bp(new Grouping(request1));
@@ -298,30 +287,20 @@ TEST_F("testGroupingSession", DoomFixture()) {
MyWorld world;
world.basicSetup();
vespalib::nbostream os;
- Grouping request1 = Grouping()
- .setId(0)
- .setFirstLevel(0)
- .setLastLevel(0)
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))));
-
- Grouping request2 = Grouping()
- .setId(1)
- .setFirstLevel(0)
- .setLastLevel(3)
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr3"))
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr1"))));
+ Grouping request1;
+ request1.setId(0)
+ .setFirstLevel(0)
+ .setLastLevel(0)
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2")))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3")));
+
+ Grouping request2;
+ request2.setId(1)
+ .setFirstLevel(0)
+ .setLastLevel(3)
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2")))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3")))
+ .addLevel(createGL(MU<AttributeNode>("attr3"), MU<AttributeNode>("attr1")));
CheckAttributeReferences attrCheck;
@@ -391,18 +370,12 @@ TEST_F("testEmptySessionId", DoomFixture()) {
MyWorld world;
world.basicSetup();
vespalib::nbostream os;
- Grouping request1 = Grouping()
- .setId(0)
- .setFirstLevel(0)
- .setLastLevel(0)
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult()
- .setExpression(MU<AttributeNode>("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult()
- .setExpression(MU<AttributeNode>("attr3"))));
+ Grouping request1;
+ request1.setId(0)
+ .setFirstLevel(0)
+ .setLastLevel(0)
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2")))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3")));
GroupingContext::GroupingPtr r1(new Grouping(request1));
GroupingContext initContext(f1.clock, f1.timeOfDoom);
@@ -431,16 +404,8 @@ TEST_F("testSessionManager", DoomFixture()) {
request1.setId(0)
.setFirstLevel(0)
.setLastLevel(0)
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr1"))
- .addResult(SumAggregationResult()
- .setExpression(MU<AttributeNode>("attr2"))
- .setResult(Int64ResultNode(0))))
- .addLevel(GroupingLevel()
- .setExpression(MU<AttributeNode>("attr2"))
- .addResult(SumAggregationResult()
- .setExpression(MU<AttributeNode>("attr3"))
- .setResult(Int64ResultNode(0))))
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2"), MU<Int64ResultNode>(0)))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3"), MU<Int64ResultNode>(0)))
.setRoot(Group().addResult(SumAggregationResult()
.setExpression(MU<AttributeNode>("attr0"))
.setResult(Int64ResultNode(0))));
@@ -496,11 +461,11 @@ TEST_F("test grouping fork/join", DoomFixture()) {
MyWorld world;
world.basicSetup();
- Grouping request = Grouping()
- .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
- .addLevel(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr0")))
- .setFirstLevel(0)
- .setLastLevel(1);
+ Grouping request;
+ request.setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
+ .addLevel(createGL(3, MU<AttributeNode>("attr0")))
+ .setFirstLevel(0)
+ .setLastLevel(1);
GroupingContext::GroupingPtr g1(new Grouping(request));
GroupingContext context(f1.clock, f1.timeOfDoom);
@@ -523,15 +488,14 @@ TEST_F("test grouping fork/join", DoomFixture()) {
man.prune();
}
- Grouping expect = Grouping()
- .setRoot(Group()
- .addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")).setResult(Int64ResultNode(189)))
- .addChild(Group().setId(Int64ResultNode(21)).setRank(40.0))
- .addChild(Group().setId(Int64ResultNode(22)).setRank(150.0))
- .addChild(Group().setId(Int64ResultNode(32)).setRank(100.0)))
- .addLevel(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr0")))
- .setFirstLevel(0)
- .setLastLevel(1);
+ Grouping expect;
+ expect.setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")).setResult(Int64ResultNode(189)))
+ .addChild(Group().setId(Int64ResultNode(21)).setRank(40.0))
+ .addChild(Group().setId(Int64ResultNode(22)).setRank(150.0))
+ .addChild(Group().setId(Int64ResultNode(32)).setRank(100.0)))
+ .addLevel(createGL(3, MU<AttributeNode>("attr0")))
+ .setFirstLevel(0)
+ .setLastLevel(1);
session.continueExecution(context);
GroupingContext::GroupingList list = context.getGroupingList();