aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/tests/searchvisitor
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /streamingvisitors/src/tests/searchvisitor
Publish
Diffstat (limited to 'streamingvisitors/src/tests/searchvisitor')
-rw-r--r--streamingvisitors/src/tests/searchvisitor/.gitignore4
-rw-r--r--streamingvisitors/src/tests/searchvisitor/CMakeLists.txt8
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/documenttypes.cfg317
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.aaa.cfg11
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.aaa.cfg43
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/summary.aaa.cfg30
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/summary.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/summarymap.aaa.cfg11
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/summarymap.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.aaa.cfg98
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.aaa.cfg26
-rw-r--r--streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.simple.cfg0
-rw-r--r--streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp123
16 files changed, 671 insertions, 0 deletions
diff --git a/streamingvisitors/src/tests/searchvisitor/.gitignore b/streamingvisitors/src/tests/searchvisitor/.gitignore
new file mode 100644
index 00000000000..543f6428e3c
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/.gitignore
@@ -0,0 +1,4 @@
+/.depend
+/Makefile
+/searchvisitor_test
+streamingvisitors_searchvisitor_test_app
diff --git a/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
new file mode 100644
index 00000000000..83abfde144a
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(streamingvisitors_searchvisitor_test_app
+ SOURCES
+ searchvisitor.cpp
+ DEPENDS
+ streamingvisitors_searchvisitor
+)
+vespa_add_test(NAME streamingvisitors_searchvisitor_test_app COMMAND streamingvisitors_searchvisitor_test_app)
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/documenttypes.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/documenttypes.cfg
new file mode 100644
index 00000000000..7bb863dc8e2
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/documenttypes.cfg
@@ -0,0 +1,317 @@
+enablecompression false
+documenttype[0].id 1843830320
+documenttype[0].name "maptest"
+documenttype[0].version 0
+documenttype[0].headerstruct -91088113
+documenttype[0].bodystruct -1659731740
+documenttype[0].inherits[0].id 8
+documenttype[0].datatype[0].id 3474528
+documenttype[0].datatype[0].type STRUCT
+documenttype[0].datatype[0].array.element.id 0
+documenttype[0].datatype[0].map.key.id 0
+documenttype[0].datatype[0].map.value.id 0
+documenttype[0].datatype[0].wset.key.id 0
+documenttype[0].datatype[0].wset.createifnonexistent false
+documenttype[0].datatype[0].wset.removeifzero false
+documenttype[0].datatype[0].annotationref.annotation.id 0
+documenttype[0].datatype[0].sstruct.name "s1"
+documenttype[0].datatype[0].sstruct.version 0
+documenttype[0].datatype[0].sstruct.compression.type NONE
+documenttype[0].datatype[0].sstruct.compression.level 0
+documenttype[0].datatype[0].sstruct.compression.threshold 95
+documenttype[0].datatype[0].sstruct.compression.minsize 200
+documenttype[0].datatype[0].sstruct.field[0].name "a"
+documenttype[0].datatype[0].sstruct.field[0].id 493339625
+documenttype[0].datatype[0].sstruct.field[0].id_v6 703514648
+documenttype[0].datatype[0].sstruct.field[0].datatype 2
+documenttype[0].datatype[0].sstruct.field[1].name "b"
+documenttype[0].datatype[0].sstruct.field[1].id 441632370
+documenttype[0].datatype[0].sstruct.field[1].id_v6 1420600727
+documenttype[0].datatype[0].sstruct.field[1].datatype 2
+documenttype[0].datatype[1].id 339965458
+documenttype[0].datatype[1].type MAP
+documenttype[0].datatype[1].array.element.id 0
+documenttype[0].datatype[1].map.key.id 2
+documenttype[0].datatype[1].map.value.id 2
+documenttype[0].datatype[1].wset.key.id 0
+documenttype[0].datatype[1].wset.createifnonexistent false
+documenttype[0].datatype[1].wset.removeifzero false
+documenttype[0].datatype[1].annotationref.annotation.id 0
+documenttype[0].datatype[1].sstruct.name ""
+documenttype[0].datatype[1].sstruct.version 0
+documenttype[0].datatype[1].sstruct.compression.type NONE
+documenttype[0].datatype[1].sstruct.compression.level 0
+documenttype[0].datatype[1].sstruct.compression.threshold 95
+documenttype[0].datatype[1].sstruct.compression.minsize 200
+documenttype[0].datatype[2].id 1888564261
+documenttype[0].datatype[2].type MAP
+documenttype[0].datatype[2].array.element.id 0
+documenttype[0].datatype[2].map.key.id 2
+documenttype[0].datatype[2].map.value.id 3474528
+documenttype[0].datatype[2].wset.key.id 0
+documenttype[0].datatype[2].wset.createifnonexistent false
+documenttype[0].datatype[2].wset.removeifzero false
+documenttype[0].datatype[2].annotationref.annotation.id 0
+documenttype[0].datatype[2].sstruct.name ""
+documenttype[0].datatype[2].sstruct.version 0
+documenttype[0].datatype[2].sstruct.compression.type NONE
+documenttype[0].datatype[2].sstruct.compression.level 0
+documenttype[0].datatype[2].sstruct.compression.threshold 95
+documenttype[0].datatype[2].sstruct.compression.minsize 200
+documenttype[0].datatype[3].id -1486737430
+documenttype[0].datatype[3].type ARRAY
+documenttype[0].datatype[3].array.element.id 2
+documenttype[0].datatype[3].map.key.id 0
+documenttype[0].datatype[3].map.value.id 0
+documenttype[0].datatype[3].wset.key.id 0
+documenttype[0].datatype[3].wset.createifnonexistent false
+documenttype[0].datatype[3].wset.removeifzero false
+documenttype[0].datatype[3].annotationref.annotation.id 0
+documenttype[0].datatype[3].sstruct.name ""
+documenttype[0].datatype[3].sstruct.version 0
+documenttype[0].datatype[3].sstruct.compression.type NONE
+documenttype[0].datatype[3].sstruct.compression.level 0
+documenttype[0].datatype[3].sstruct.compression.threshold 95
+documenttype[0].datatype[3].sstruct.compression.minsize 200
+documenttype[0].datatype[4].id -1220861393
+documenttype[0].datatype[4].type MAP
+documenttype[0].datatype[4].array.element.id 0
+documenttype[0].datatype[4].map.key.id 2
+documenttype[0].datatype[4].map.value.id -1486737430
+documenttype[0].datatype[4].wset.key.id 0
+documenttype[0].datatype[4].wset.createifnonexistent false
+documenttype[0].datatype[4].wset.removeifzero false
+documenttype[0].datatype[4].annotationref.annotation.id 0
+documenttype[0].datatype[4].sstruct.name ""
+documenttype[0].datatype[4].sstruct.version 0
+documenttype[0].datatype[4].sstruct.compression.type NONE
+documenttype[0].datatype[4].sstruct.compression.level 0
+documenttype[0].datatype[4].sstruct.compression.threshold 95
+documenttype[0].datatype[4].sstruct.compression.minsize 200
+documenttype[0].datatype[5].id 1070047409
+documenttype[0].datatype[5].type MAP
+documenttype[0].datatype[5].array.element.id 0
+documenttype[0].datatype[5].map.key.id 2
+documenttype[0].datatype[5].map.value.id 339965458
+documenttype[0].datatype[5].wset.key.id 0
+documenttype[0].datatype[5].wset.createifnonexistent false
+documenttype[0].datatype[5].wset.removeifzero false
+documenttype[0].datatype[5].annotationref.annotation.id 0
+documenttype[0].datatype[5].sstruct.name ""
+documenttype[0].datatype[5].sstruct.version 0
+documenttype[0].datatype[5].sstruct.compression.type NONE
+documenttype[0].datatype[5].sstruct.compression.level 0
+documenttype[0].datatype[5].sstruct.compression.threshold 95
+documenttype[0].datatype[5].sstruct.compression.minsize 200
+documenttype[0].datatype[6].id -91088113
+documenttype[0].datatype[6].type STRUCT
+documenttype[0].datatype[6].array.element.id 0
+documenttype[0].datatype[6].map.key.id 0
+documenttype[0].datatype[6].map.value.id 0
+documenttype[0].datatype[6].wset.key.id 0
+documenttype[0].datatype[6].wset.createifnonexistent false
+documenttype[0].datatype[6].wset.removeifzero false
+documenttype[0].datatype[6].annotationref.annotation.id 0
+documenttype[0].datatype[6].sstruct.name "maptest.header"
+documenttype[0].datatype[6].sstruct.version 0
+documenttype[0].datatype[6].sstruct.compression.type NONE
+documenttype[0].datatype[6].sstruct.compression.level 0
+documenttype[0].datatype[6].sstruct.compression.threshold 95
+documenttype[0].datatype[6].sstruct.compression.minsize 200
+documenttype[0].datatype[6].sstruct.field[0].name "name"
+documenttype[0].datatype[6].sstruct.field[0].id 1160796772
+documenttype[0].datatype[6].sstruct.field[0].id_v6 774203930
+documenttype[0].datatype[6].sstruct.field[0].datatype 2
+documenttype[0].datatype[6].sstruct.field[1].name "m1"
+documenttype[0].datatype[6].sstruct.field[1].id 656260193
+documenttype[0].datatype[6].sstruct.field[1].id_v6 1013611640
+documenttype[0].datatype[6].sstruct.field[1].datatype 339965458
+documenttype[0].datatype[6].sstruct.field[2].name "m2"
+documenttype[0].datatype[6].sstruct.field[2].id 1105173090
+documenttype[0].datatype[6].sstruct.field[2].id_v6 1026497887
+documenttype[0].datatype[6].sstruct.field[2].datatype 1888564261
+documenttype[0].datatype[6].sstruct.field[3].name "m3"
+documenttype[0].datatype[6].sstruct.field[3].id 1834987989
+documenttype[0].datatype[6].sstruct.field[3].id_v6 1365320273
+documenttype[0].datatype[6].sstruct.field[3].datatype -1220861393
+documenttype[0].datatype[6].sstruct.field[4].name "m4"
+documenttype[0].datatype[6].sstruct.field[4].id 1696105521
+documenttype[0].datatype[6].sstruct.field[4].id_v6 1636310067
+documenttype[0].datatype[6].sstruct.field[4].datatype 1070047409
+documenttype[0].datatype[7].id -1659731740
+documenttype[0].datatype[7].type STRUCT
+documenttype[0].datatype[7].array.element.id 0
+documenttype[0].datatype[7].map.key.id 0
+documenttype[0].datatype[7].map.value.id 0
+documenttype[0].datatype[7].wset.key.id 0
+documenttype[0].datatype[7].wset.createifnonexistent false
+documenttype[0].datatype[7].wset.removeifzero false
+documenttype[0].datatype[7].annotationref.annotation.id 0
+documenttype[0].datatype[7].sstruct.name "maptest.body"
+documenttype[0].datatype[7].sstruct.version 0
+documenttype[0].datatype[7].sstruct.compression.type NONE
+documenttype[0].datatype[7].sstruct.compression.level 0
+documenttype[0].datatype[7].sstruct.compression.threshold 95
+documenttype[0].datatype[7].sstruct.compression.minsize 200
+documenttype[1].id -753106277
+documenttype[1].name "maptest_search"
+documenttype[1].version 0
+documenttype[1].headerstruct 919697476
+documenttype[1].bodystruct -125720743
+documenttype[1].inherits[0].id 8
+documenttype[1].datatype[0].id 3474528
+documenttype[1].datatype[0].type STRUCT
+documenttype[1].datatype[0].array.element.id 0
+documenttype[1].datatype[0].map.key.id 0
+documenttype[1].datatype[0].map.value.id 0
+documenttype[1].datatype[0].wset.key.id 0
+documenttype[1].datatype[0].wset.createifnonexistent false
+documenttype[1].datatype[0].wset.removeifzero false
+documenttype[1].datatype[0].annotationref.annotation.id 0
+documenttype[1].datatype[0].sstruct.name "s1"
+documenttype[1].datatype[0].sstruct.version 0
+documenttype[1].datatype[0].sstruct.compression.type NONE
+documenttype[1].datatype[0].sstruct.compression.level 0
+documenttype[1].datatype[0].sstruct.compression.threshold 95
+documenttype[1].datatype[0].sstruct.compression.minsize 200
+documenttype[1].datatype[0].sstruct.field[0].name "a"
+documenttype[1].datatype[0].sstruct.field[0].id 493339625
+documenttype[1].datatype[0].sstruct.field[0].id_v6 703514648
+documenttype[1].datatype[0].sstruct.field[0].datatype 2
+documenttype[1].datatype[0].sstruct.field[1].name "b"
+documenttype[1].datatype[0].sstruct.field[1].id 441632370
+documenttype[1].datatype[0].sstruct.field[1].id_v6 1420600727
+documenttype[1].datatype[0].sstruct.field[1].datatype 2
+documenttype[1].datatype[1].id 339965458
+documenttype[1].datatype[1].type MAP
+documenttype[1].datatype[1].array.element.id 0
+documenttype[1].datatype[1].map.key.id 2
+documenttype[1].datatype[1].map.value.id 2
+documenttype[1].datatype[1].wset.key.id 0
+documenttype[1].datatype[1].wset.createifnonexistent false
+documenttype[1].datatype[1].wset.removeifzero false
+documenttype[1].datatype[1].annotationref.annotation.id 0
+documenttype[1].datatype[1].sstruct.name ""
+documenttype[1].datatype[1].sstruct.version 0
+documenttype[1].datatype[1].sstruct.compression.type NONE
+documenttype[1].datatype[1].sstruct.compression.level 0
+documenttype[1].datatype[1].sstruct.compression.threshold 95
+documenttype[1].datatype[1].sstruct.compression.minsize 200
+documenttype[1].datatype[2].id 1888564261
+documenttype[1].datatype[2].type MAP
+documenttype[1].datatype[2].array.element.id 0
+documenttype[1].datatype[2].map.key.id 2
+documenttype[1].datatype[2].map.value.id 3474528
+documenttype[1].datatype[2].wset.key.id 0
+documenttype[1].datatype[2].wset.createifnonexistent false
+documenttype[1].datatype[2].wset.removeifzero false
+documenttype[1].datatype[2].annotationref.annotation.id 0
+documenttype[1].datatype[2].sstruct.name ""
+documenttype[1].datatype[2].sstruct.version 0
+documenttype[1].datatype[2].sstruct.compression.type NONE
+documenttype[1].datatype[2].sstruct.compression.level 0
+documenttype[1].datatype[2].sstruct.compression.threshold 95
+documenttype[1].datatype[2].sstruct.compression.minsize 200
+documenttype[1].datatype[3].id -1486737430
+documenttype[1].datatype[3].type ARRAY
+documenttype[1].datatype[3].array.element.id 2
+documenttype[1].datatype[3].map.key.id 0
+documenttype[1].datatype[3].map.value.id 0
+documenttype[1].datatype[3].wset.key.id 0
+documenttype[1].datatype[3].wset.createifnonexistent false
+documenttype[1].datatype[3].wset.removeifzero false
+documenttype[1].datatype[3].annotationref.annotation.id 0
+documenttype[1].datatype[3].sstruct.name ""
+documenttype[1].datatype[3].sstruct.version 0
+documenttype[1].datatype[3].sstruct.compression.type NONE
+documenttype[1].datatype[3].sstruct.compression.level 0
+documenttype[1].datatype[3].sstruct.compression.threshold 95
+documenttype[1].datatype[3].sstruct.compression.minsize 200
+documenttype[1].datatype[4].id -1220861393
+documenttype[1].datatype[4].type MAP
+documenttype[1].datatype[4].array.element.id 0
+documenttype[1].datatype[4].map.key.id 2
+documenttype[1].datatype[4].map.value.id -1486737430
+documenttype[1].datatype[4].wset.key.id 0
+documenttype[1].datatype[4].wset.createifnonexistent false
+documenttype[1].datatype[4].wset.removeifzero false
+documenttype[1].datatype[4].annotationref.annotation.id 0
+documenttype[1].datatype[4].sstruct.name ""
+documenttype[1].datatype[4].sstruct.version 0
+documenttype[1].datatype[4].sstruct.compression.type NONE
+documenttype[1].datatype[4].sstruct.compression.level 0
+documenttype[1].datatype[4].sstruct.compression.threshold 95
+documenttype[1].datatype[4].sstruct.compression.minsize 200
+documenttype[1].datatype[5].id 1070047409
+documenttype[1].datatype[5].type MAP
+documenttype[1].datatype[5].array.element.id 0
+documenttype[1].datatype[5].map.key.id 2
+documenttype[1].datatype[5].map.value.id 339965458
+documenttype[1].datatype[5].wset.key.id 0
+documenttype[1].datatype[5].wset.createifnonexistent false
+documenttype[1].datatype[5].wset.removeifzero false
+documenttype[1].datatype[5].annotationref.annotation.id 0
+documenttype[1].datatype[5].sstruct.name ""
+documenttype[1].datatype[5].sstruct.version 0
+documenttype[1].datatype[5].sstruct.compression.type NONE
+documenttype[1].datatype[5].sstruct.compression.level 0
+documenttype[1].datatype[5].sstruct.compression.threshold 95
+documenttype[1].datatype[5].sstruct.compression.minsize 200
+documenttype[1].datatype[6].id 919697476
+documenttype[1].datatype[6].type STRUCT
+documenttype[1].datatype[6].array.element.id 0
+documenttype[1].datatype[6].map.key.id 0
+documenttype[1].datatype[6].map.value.id 0
+documenttype[1].datatype[6].wset.key.id 0
+documenttype[1].datatype[6].wset.createifnonexistent false
+documenttype[1].datatype[6].wset.removeifzero false
+documenttype[1].datatype[6].annotationref.annotation.id 0
+documenttype[1].datatype[6].sstruct.name "maptest_search.header"
+documenttype[1].datatype[6].sstruct.version 0
+documenttype[1].datatype[6].sstruct.compression.type NONE
+documenttype[1].datatype[6].sstruct.compression.level 0
+documenttype[1].datatype[6].sstruct.compression.threshold 95
+documenttype[1].datatype[6].sstruct.compression.minsize 200
+documenttype[1].datatype[6].sstruct.field[0].name "name"
+documenttype[1].datatype[6].sstruct.field[0].id 1160796772
+documenttype[1].datatype[6].sstruct.field[0].id_v6 774203930
+documenttype[1].datatype[6].sstruct.field[0].datatype 2
+documenttype[1].datatype[6].sstruct.field[1].name "m1"
+documenttype[1].datatype[6].sstruct.field[1].id 656260193
+documenttype[1].datatype[6].sstruct.field[1].id_v6 1013611640
+documenttype[1].datatype[6].sstruct.field[1].datatype 339965458
+documenttype[1].datatype[6].sstruct.field[2].name "m2"
+documenttype[1].datatype[6].sstruct.field[2].id 1105173090
+documenttype[1].datatype[6].sstruct.field[2].id_v6 1026497887
+documenttype[1].datatype[6].sstruct.field[2].datatype 1888564261
+documenttype[1].datatype[6].sstruct.field[3].name "m3"
+documenttype[1].datatype[6].sstruct.field[3].id 1834987989
+documenttype[1].datatype[6].sstruct.field[3].id_v6 1365320273
+documenttype[1].datatype[6].sstruct.field[3].datatype -1220861393
+documenttype[1].datatype[6].sstruct.field[4].name "m4"
+documenttype[1].datatype[6].sstruct.field[4].id 1696105521
+documenttype[1].datatype[6].sstruct.field[4].id_v6 1636310067
+documenttype[1].datatype[6].sstruct.field[4].datatype 1070047409
+documenttype[1].datatype[6].sstruct.field[5].name "rankfeatures"
+documenttype[1].datatype[6].sstruct.field[5].id 1883197392
+documenttype[1].datatype[6].sstruct.field[5].id_v6 699950698
+documenttype[1].datatype[6].sstruct.field[5].datatype 2
+documenttype[1].datatype[6].sstruct.field[6].name "summaryfeatures"
+documenttype[1].datatype[6].sstruct.field[6].id 1840337115
+documenttype[1].datatype[6].sstruct.field[6].id_v6 1981648971
+documenttype[1].datatype[6].sstruct.field[6].datatype 2
+documenttype[1].datatype[7].id -125720743
+documenttype[1].datatype[7].type STRUCT
+documenttype[1].datatype[7].array.element.id 0
+documenttype[1].datatype[7].map.key.id 0
+documenttype[1].datatype[7].map.value.id 0
+documenttype[1].datatype[7].wset.key.id 0
+documenttype[1].datatype[7].wset.createifnonexistent false
+documenttype[1].datatype[7].wset.removeifzero false
+documenttype[1].datatype[7].annotationref.annotation.id 0
+documenttype[1].datatype[7].sstruct.name "maptest_search.body"
+documenttype[1].datatype[7].sstruct.version 0
+documenttype[1].datatype[7].sstruct.compression.type NONE
+documenttype[1].datatype[7].sstruct.compression.level 0
+documenttype[1].datatype[7].sstruct.compression.threshold 95
+documenttype[1].datatype[7].sstruct.compression.minsize 200
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.aaa.cfg
new file mode 100644
index 00000000000..09e13ed0f8b
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.aaa.cfg
@@ -0,0 +1,11 @@
+length 256
+max_match_candidates 1000
+max_matches 3
+min_length 128
+prefix true
+stem_max_extend 3
+stem_min_length 5
+surround_max 128
+winsize 200
+winsize_fallback_multiplier 10.0
+override[0]
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/juniperrc.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.aaa.cfg
new file mode 100644
index 00000000000..cf3ee6a7179
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.aaa.cfg
@@ -0,0 +1,43 @@
+rankprofile[2]
+rankprofile[0].name "default"
+rankprofile[0].fef.property[15]
+rankprofile[0].fef.property[00].name "vespa.summary.feature"
+rankprofile[0].fef.property[00].value "fieldTermMatch(m1.key,0).firstPosition"
+rankprofile[0].fef.property[01].name "vespa.summary.feature"
+rankprofile[0].fef.property[01].value "fieldTermMatch(m1.key,0).occurrences"
+rankprofile[0].fef.property[02].name "vespa.summary.feature"
+rankprofile[0].fef.property[02].value "fieldLength(m1.key)"
+rankprofile[0].fef.property[03].name "vespa.summary.feature"
+rankprofile[0].fef.property[03].value "fieldTermMatch(m1.value,0).firstPosition"
+rankprofile[0].fef.property[04].name "vespa.summary.feature"
+rankprofile[0].fef.property[04].value "fieldTermMatch(m1.value,0).occurrences"
+rankprofile[0].fef.property[05].name "vespa.summary.feature"
+rankprofile[0].fef.property[05].value "fieldLength(m1.value)"
+rankprofile[0].fef.property[06].name "vespa.summary.feature"
+rankprofile[0].fef.property[06].value "fieldTermMatch(m2.value.a,0).firstPosition"
+rankprofile[0].fef.property[07].name "vespa.summary.feature"
+rankprofile[0].fef.property[07].value "fieldTermMatch(m2.value.a,0).occurrences"
+rankprofile[0].fef.property[08].name "vespa.summary.feature"
+rankprofile[0].fef.property[08].value "fieldLength(m2.value.a)"
+rankprofile[0].fef.property[09].name "vespa.summary.feature"
+rankprofile[0].fef.property[09].value "fieldTermMatch(m3.value,0).firstPosition"
+rankprofile[0].fef.property[10].name "vespa.summary.feature"
+rankprofile[0].fef.property[10].value "fieldTermMatch(m3.value,0).occurrences"
+rankprofile[0].fef.property[11].name "vespa.summary.feature"
+rankprofile[0].fef.property[11].value "fieldLength(m3.value)"
+rankprofile[0].fef.property[12].name "vespa.summary.feature"
+rankprofile[0].fef.property[12].value "fieldTermMatch(m4.value.value,0).firstPosition"
+rankprofile[0].fef.property[13].name "vespa.summary.feature"
+rankprofile[0].fef.property[13].value "fieldTermMatch(m4.value.value,0).occurrences"
+rankprofile[0].fef.property[14].name "vespa.summary.feature"
+rankprofile[0].fef.property[14].value "fieldLength(m4.value.value)"
+rankprofile[1].name "unranked"
+rankprofile[1].fef.property[4]
+rankprofile[1].fef.property[0].name "vespa.rank.firstphase"
+rankprofile[1].fef.property[0].value "value(0)"
+rankprofile[1].fef.property[1].name "vespa.hitcollector.heapsize"
+rankprofile[1].fef.property[1].value "0"
+rankprofile[1].fef.property[2].name "vespa.hitcollector.arraysize"
+rankprofile[1].fef.property[2].value "0"
+rankprofile[1].fef.property[3].name "vespa.dump.ignoredefaultfeatures"
+rankprofile[1].fef.property[3].value "true"
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/rank-profiles.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/summary.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/summary.aaa.cfg
new file mode 100644
index 00000000000..8cc32ed5ea4
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/summary.aaa.cfg
@@ -0,0 +1,30 @@
+defaultsummaryid 197963550
+classes[2]
+classes[0].id 190911431
+classes[0].name "attributeprefetch"
+classes[0].fields[3]
+classes[0].fields[0].name "name"
+classes[0].fields[0].type "longstring"
+classes[0].fields[1].name "rankfeatures"
+classes[0].fields[1].type "longstring"
+classes[0].fields[2].name "summaryfeatures"
+classes[0].fields[2].type "longstring"
+classes[1].id 197963550
+classes[1].name "maptest"
+classes[1].fields[8]
+classes[1].fields[0].name "documentid"
+classes[1].fields[0].type "longstring"
+classes[1].fields[1].name "m1"
+classes[1].fields[1].type "jsonstring"
+classes[1].fields[2].name "m2"
+classes[1].fields[2].type "jsonstring"
+classes[1].fields[3].name "m3"
+classes[1].fields[3].type "jsonstring"
+classes[1].fields[4].name "m4"
+classes[1].fields[4].type "jsonstring"
+classes[1].fields[5].name "name"
+classes[1].fields[5].type "longstring"
+classes[1].fields[6].name "rankfeatures"
+classes[1].fields[6].type "longstring"
+classes[1].fields[7].name "summaryfeatures"
+classes[1].fields[7].type "longstring"
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/summary.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/summary.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/summary.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.aaa.cfg
new file mode 100644
index 00000000000..1c9567431ae
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.aaa.cfg
@@ -0,0 +1,11 @@
+defaultoutputclass -1
+override[3]
+override[0].arguments "name"
+override[0].command "attribute"
+override[0].field "name"
+override[1].arguments ""
+override[1].command "rankfeatures"
+override[1].field "rankfeatures"
+override[2].arguments ""
+override[2].command "summaryfeatures"
+override[2].field "summaryfeatures"
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/summarymap.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.aaa.cfg
new file mode 100644
index 00000000000..4d976764bd9
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.aaa.cfg
@@ -0,0 +1,98 @@
+documentverificationlevel 0
+searchall 1
+documenttype[1]
+documenttype[0].name "maptest"
+documenttype[0].index[17]
+documenttype[0].index[00].name "m1"
+documenttype[0].index[00].field[2]
+documenttype[0].index[00].field[0].name "m1.key"
+documenttype[0].index[00].field[1].name "m1.value"
+documenttype[0].index[01].name "m1.key"
+documenttype[0].index[01].field[1]
+documenttype[0].index[01].field[0].name "m1.key"
+documenttype[0].index[02].name "m1.value"
+documenttype[0].index[02].field[1]
+documenttype[0].index[02].field[0].name "m1.value"
+documenttype[0].index[03].name "m2"
+documenttype[0].index[03].field[3]
+documenttype[0].index[03].field[0].name "m2.key"
+documenttype[0].index[03].field[1].name "m2.value.a"
+documenttype[0].index[03].field[2].name "m2.value.b"
+documenttype[0].index[04].name "m2.key"
+documenttype[0].index[04].field[1]
+documenttype[0].index[04].field[0].name "m2.key"
+documenttype[0].index[05].name "m2.value"
+documenttype[0].index[05].field[2]
+documenttype[0].index[05].field[0].name "m2.value.a"
+documenttype[0].index[05].field[1].name "m2.value.b"
+documenttype[0].index[06].name "m2.value.a"
+documenttype[0].index[06].field[1]
+documenttype[0].index[06].field[0].name "m2.value.a"
+documenttype[0].index[07].name "m2.value.b"
+documenttype[0].index[07].field[1]
+documenttype[0].index[07].field[0].name "m2.value.b"
+documenttype[0].index[08].name "m3"
+documenttype[0].index[08].field[2]
+documenttype[0].index[08].field[0].name "m3.key"
+documenttype[0].index[08].field[1].name "m3.value"
+documenttype[0].index[09].name "m3.key"
+documenttype[0].index[09].field[1]
+documenttype[0].index[09].field[0].name "m3.key"
+documenttype[0].index[10].name "m3.value"
+documenttype[0].index[10].field[1]
+documenttype[0].index[10].field[0].name "m3.value"
+documenttype[0].index[11].name "m4"
+documenttype[0].index[11].field[3]
+documenttype[0].index[11].field[0].name "m4.key"
+documenttype[0].index[11].field[1].name "m4.value.key"
+documenttype[0].index[11].field[2].name "m4.value.value"
+documenttype[0].index[12].name "m4.key"
+documenttype[0].index[12].field[1]
+documenttype[0].index[12].field[0].name "m4.key"
+documenttype[0].index[13].name "m4.value"
+documenttype[0].index[13].field[2]
+documenttype[0].index[13].field[0].name "m4.value.key"
+documenttype[0].index[13].field[1].name "m4.value.value"
+documenttype[0].index[14].name "m4.value.key"
+documenttype[0].index[14].field[1]
+documenttype[0].index[14].field[0].name "m4.value.key"
+documenttype[0].index[15].name "m4.value.value"
+documenttype[0].index[15].field[1]
+documenttype[0].index[15].field[0].name "m4.value.value"
+documenttype[0].index[16].name "name"
+documenttype[0].index[16].field[1]
+documenttype[0].index[16].field[0].name "name"
+fieldspec[11]
+fieldspec[00].arg1 ""
+fieldspec[00].name "m1.key"
+fieldspec[00].searchmethod AUTOUTF8
+fieldspec[01].arg1 ""
+fieldspec[01].name "m1.value"
+fieldspec[01].searchmethod AUTOUTF8
+fieldspec[02].arg1 ""
+fieldspec[02].name "m2.key"
+fieldspec[02].searchmethod AUTOUTF8
+fieldspec[03].arg1 ""
+fieldspec[03].name "m2.value.a"
+fieldspec[03].searchmethod AUTOUTF8
+fieldspec[04].arg1 ""
+fieldspec[04].name "m2.value.b"
+fieldspec[04].searchmethod AUTOUTF8
+fieldspec[05].arg1 ""
+fieldspec[05].name "m3.key"
+fieldspec[05].searchmethod AUTOUTF8
+fieldspec[06].arg1 ""
+fieldspec[06].name "m3.value"
+fieldspec[06].searchmethod AUTOUTF8
+fieldspec[07].arg1 ""
+fieldspec[07].name "m4.key"
+fieldspec[07].searchmethod AUTOUTF8
+fieldspec[08].arg1 ""
+fieldspec[08].name "m4.value.key"
+fieldspec[08].searchmethod AUTOUTF8
+fieldspec[09].arg1 ""
+fieldspec[09].name "m4.value.value"
+fieldspec[09].searchmethod AUTOUTF8
+fieldspec[10].arg1 ""
+fieldspec[10].name "name"
+fieldspec[10].searchmethod AUTOUTF8
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/vsmfields.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.aaa.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.aaa.cfg
new file mode 100644
index 00000000000..664778d40a8
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.aaa.cfg
@@ -0,0 +1,26 @@
+outputclass ""
+fieldmap[6]
+fieldmap[0].command NONE
+fieldmap[0].summary "m1"
+fieldmap[0].document[1]
+fieldmap[0].document[0].field "m1"
+fieldmap[1].command NONE
+fieldmap[1].summary "m2"
+fieldmap[1].document[3]
+fieldmap[1].document[0].field "m2.key"
+fieldmap[1].document[1].field "m2.value.a"
+fieldmap[1].document[2].field "m2.value.b"
+fieldmap[2].command NONE
+fieldmap[2].summary "m3"
+fieldmap[2].document[1]
+fieldmap[2].document[0].field "m3"
+fieldmap[3].command NONE
+fieldmap[3].summary "m4"
+fieldmap[3].document[1]
+fieldmap[3].document[0].field "m4"
+fieldmap[4].command NONE
+fieldmap[4].summary "rankfeatures"
+fieldmap[4].document[0]
+fieldmap[5].command NONE
+fieldmap[5].summary "summaryfeatures"
+fieldmap[5].document[0]
diff --git a/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.simple.cfg b/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.simple.cfg
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/cfg/vsmsummary.simple.cfg
diff --git a/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp
new file mode 100644
index 00000000000..77df70ad256
--- /dev/null
+++ b/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp
@@ -0,0 +1,123 @@
+// 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/vespalib/testkit/testapp.h>
+#include <vespa/searchlib/query/tree/querybuilder.h>
+#include <vespa/searchlib/query/tree/simplequery.h>
+#include <vespa/searchlib/query/tree/stackdumpcreator.h>
+#include <vespa/searchvisitor/searchenvironment.h>
+#include <vespa/searchvisitor/searchvisitor.h>
+#include <vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h>
+#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
+
+using namespace search;
+using namespace search::query;
+using namespace document;
+
+namespace storage {
+
+class SearchVisitorTest : public vespalib::TestApp
+{
+private:
+ framework::defaultimplementation::FakeClock _clock;
+ StorageComponentRegisterImpl _componentRegister;
+ std::unique_ptr<StorageComponent> _component;
+ SearchEnvironment _env;
+ void testSearchVisitor();
+ void testSearchEnvironment();
+ void testCreateSearchVisitor(const vespalib::string & dir, const vdslib::Parameters & parameters);
+ void testOnlyRequireWeakReadConsistency();
+
+public:
+ SearchVisitorTest();
+ int Main();
+};
+
+SearchVisitorTest::SearchVisitorTest() :
+ vespalib::TestApp(),
+ _componentRegister(),
+ _env("dir:cfg")
+{
+ _componentRegister.setNodeInfo("mycluster", lib::NodeType::STORAGE, 1);
+ _componentRegister.setClock(_clock);
+ StorageComponent::DocumentTypeRepoSP repo(new DocumentTypeRepo(readDocumenttypesConfig("cfg/documenttypes.cfg")));
+ _componentRegister.setDocumentTypeRepo(repo);
+ _component.reset(new StorageComponent(_componentRegister, "storage"));
+};
+
+std::vector<spi::DocEntry::LP>
+createDocuments(const vespalib::string & dir)
+{
+ (void) dir;
+ std::vector<spi::DocEntry::LP> documents;
+ spi::Timestamp ts;
+ document::Document::UP doc(new document::Document());
+ spi::DocEntry::LP e(new spi::DocEntry(ts, 0, std::move(doc)));
+ documents.push_back(e);
+ return documents;
+}
+
+void
+SearchVisitorTest::testCreateSearchVisitor(const vespalib::string & dir, const vdslib::Parameters & params)
+{
+ SearchVisitorFactory sFactory(dir);
+ VisitorFactory & factory(sFactory);
+ std::unique_ptr<Visitor> sv(static_cast<SearchVisitor *>(factory.makeVisitor(*_component, _env, params)));
+ document::OrderingSpecification orderSpec;
+ document::BucketId bucketId;
+ std::vector<spi::DocEntry::LP> documents(createDocuments(dir));
+ Visitor::HitCounter hitCounter(&orderSpec);
+ sv->handleDocuments(bucketId, documents, hitCounter);
+}
+
+void
+SearchVisitorTest::testSearchEnvironment()
+{
+ EXPECT_TRUE(_env.getVSMAdapter("simple") != NULL);
+ EXPECT_TRUE(_env.getRankManager("simple") != NULL);
+}
+
+void
+SearchVisitorTest::testSearchVisitor()
+{
+ vdslib::Parameters params;
+ params.set("searchcluster", "aaa");
+ params.set("queryflags", "0x40000");
+ params.set("summarycount", "3");
+ params.set("summaryclass", "petra");
+ params.set("rankprofile", "default");
+
+ QueryBuilder<SimpleQueryNodeTypes> builder;
+ builder.addStringTerm("maptest", "sddocname", 0, Weight(0));
+ Node::UP node = builder.build();
+ vespalib::string stackDump = StackDumpCreator::create(*node);
+
+ params.set("query", stackDump);
+ testCreateSearchVisitor("dir:cfg", params);
+}
+
+void
+SearchVisitorTest::testOnlyRequireWeakReadConsistency()
+{
+ SearchVisitorFactory factory("dir:cfg");
+ VisitorFactory& factoryBase(factory);
+ vdslib::Parameters params;
+ std::unique_ptr<Visitor> sv(
+ factoryBase.makeVisitor(*_component, _env, params));
+ EXPECT_TRUE(sv->getRequiredReadConsistency() == spi::ReadConsistency::WEAK);
+}
+
+int
+SearchVisitorTest::Main()
+{
+ TEST_INIT("searchvisitor_test");
+
+ testSearchVisitor(); TEST_FLUSH();
+ testSearchEnvironment(); TEST_FLUSH();
+ testOnlyRequireWeakReadConsistency(); TEST_FLUSH();
+
+ TEST_DONE();
+}
+
+} // namespace storage
+
+TEST_APPHOOK(storage::SearchVisitorTest)