aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/cfg
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 /config-model/src/test/cfg
Publish
Diffstat (limited to 'config-model/src/test/cfg')
-rw-r--r--config-model/src/test/cfg/admin/adminconfig20/hosts.xml9
-rw-r--r--config-model/src/test/cfg/admin/adminconfig20/services.xml14
-rw-r--r--config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml7
-rw-r--r--config-model/src/test/cfg/admin/adminconfigbaseport/services.xml17
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/hosts.xml11
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/searchdefinitions/music.sd16
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/services.xml58
-rw-r--r--config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml10
-rw-r--r--config-model/src/test/cfg/admin/multipleconfigservers/services.xml14
-rw-r--r--config-model/src/test/cfg/admin/sdconfigs/pan-rtx.cfg3
-rw-r--r--config-model/src/test/cfg/admin/sdconfigs/partitions.cfg2
-rw-r--r--config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml7
-rw-r--r--config-model/src/test/cfg/admin/simpleadminconfig20/services.xml9
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/function-test.def73
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml62
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/statistics.cfg4
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml6
-rw-r--r--config-model/src/test/cfg/application/app1/components/defs-only.jarbin0 -> 986 bytes
-rw-r--r--config-model/src/test/cfg/application/app1/components/file.txt1
-rw-r--r--config-model/src/test/cfg/application/app1/files/foo.json1
-rw-r--r--config-model/src/test/cfg/application/app1/files/sub/bar.json1
-rw-r--r--config-model/src/test/cfg/application/app1/hosts.xml11
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/bar.expression1
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/foo.expression1
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/laptop.sd41
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/music.sd44
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/pc.sd47
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/product.sd13
-rw-r--r--config-model/src/test/cfg/application/app1/searchdefinitions/sock.sd27
-rw-r--r--config-model/src/test/cfg/application/app1/services.xml32
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/hosts.xml21
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/searchdefinitions/music.sd44
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/services.xml59
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mail.sd9
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mailbox.sd9
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/searchdefinitions/message.sd9
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/services.xml71
-rw-r--r--config-model/src/test/cfg/application/app_permanent/permanent-services.xml7
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/searchdefinitions/message.sd9
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/services.xml29
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/components/testbundle.jarbin0 -> 1346 bytes
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/components/testbundle2.jarbin0 -> 681 bytes
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/files/foo.txt1
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/files/subdir/bar.txt1
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/hosts.xml11
-rw-r--r--config-model/src/test/cfg/application/app_sdbundles/services.xml32
-rw-r--r--config-model/src/test/cfg/application/classes/attributes.def7
-rw-r--r--config-model/src/test/cfg/application/com/yahoo/vespa/model/test/.gitignore1
-rw-r--r--config-model/src/test/cfg/application/components/com.yahoo.searcher1.jarbin0 -> 8413 bytes
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/bar.def3
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/baz.def3
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/foo.def4
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.foo.def4
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def4
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.def4
-rw-r--r--config-model/src/test/cfg/application/configuredportconfig/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/configuredportconfig/services.xml20
-rw-r--r--config-model/src/test/cfg/application/custompropconfig/hosts.xml9
-rw-r--r--config-model/src/test/cfg/application/custompropconfig/services.xml7
-rw-r--r--config-model/src/test/cfg/application/doubleconfig/hosts.xml9
-rw-r--r--config-model/src/test/cfg/application/doubleconfig/services.xml14
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir1/default.xml6
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml8
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml10
-rw-r--r--config-model/src/test/cfg/application/include_dirs/empty_dir/.gitignore0
-rw-r--r--config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml4
-rw-r--r--config-model/src/test/cfg/application/include_dirs/services.xml26
-rw-r--r--config-model/src/test/cfg/application/invalid_legacy_user_config/configs/qr-searchers.cfg5
-rw-r--r--config-model/src/test/cfg/application/invalid_legacy_user_config/services.xml10
-rw-r--r--config-model/src/test/cfg/application/metricsconfig/hosts.xml9
-rw-r--r--config-model/src/test/cfg/application/metricsconfig/services.xml22
-rw-r--r--config-model/src/test/cfg/application/newfilenames/hosts.xml9
-rw-r--r--config-model/src/test/cfg/application/newfilenames/services.xml9
-rw-r--r--config-model/src/test/cfg/application/plugins/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/plugins/services.xml22
-rw-r--r--config-model/src/test/cfg/application/sdfilenametest/searchdefinitions/notmusic.sd12
-rw-r--r--config-model/src/test/cfg/application/sdfilenametest/services.xml8
-rw-r--r--config-model/src/test/cfg/application/serverdefs/attributes.def8
-rw-r--r--config-model/src/test/cfg/application/simpleconfig/hosts.xml9
-rw-r--r--config-model/src/test/cfg/application/simpleconfig/services.xml14
-rw-r--r--config-model/src/test/cfg/application/treeconfig/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/treeconfig/services.xml21
-rw-r--r--config-model/src/test/cfg/application/validation/components/.gitignore0
-rw-r--r--config-model/src/test/cfg/application/validation/index_struct/searchdefinitions/simple.sd8
-rw-r--r--config-model/src/test/cfg/application/validation/index_struct/services.xml17
-rw-r--r--config-model/src/test/cfg/application/validation/invalidjar_app/components/invalid.jar0
-rw-r--r--config-model/src/test/cfg/application/validation/prefix/searchdefinitions/simple.sd9
-rw-r--r--config-model/src/test/cfg/application/validation/prefix/services.xml16
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index/searchdefinitions/simple.sd9
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index/services.xml16
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index_and_attribute/searchdefinitions/simple.sd9
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml16
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_streaming/searchdefinitions/simple.sd9
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_streaming/services.xml16
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd16
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/services.xml17
-rw-r--r--config-model/src/test/cfg/application/validation/search_content/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/validation/search_content/searchdefinitions/simple.sd7
-rw-r--r--config-model/src/test/cfg/application/validation/search_content/services.xml29
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/searchdefinitions/simple.sd6
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/services.xml17
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/hosts.xml7
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/searchdefinitions/simple.sd10
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/services.xml17
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/missing_osgi_headers.jarbin0 -> 2542 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/nomanifest.jarbin0 -> 2283 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/ok.jarbin0 -> 2550 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/snapshot_bundle.jarbin0 -> 1579 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/test.jarbin0 -> 2578 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/wrong_classpath.jarbin0 -> 2574 bytes
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/wrong_export.jarbin0 -> 2578 bytes
-rw-r--r--config-model/src/test/cfg/clients/advancedconfig.v2/hosts.xml7
-rw-r--r--config-model/src/test/cfg/clients/advancedconfig.v2/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/clients/advancedconfig.v2/services.xml70
-rw-r--r--config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/hosts.xml7
-rw-r--r--config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/services.xml63
-rw-r--r--config-model/src/test/cfg/clients/simpleconfig.v2/searchdefinitions/.gitignore0
-rw-r--r--config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml10
-rw-r--r--config-model/src/test/cfg/container/data/configserverinclude/services.xml10
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/hosts.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/services.xml35
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude2/hosts.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude2/services.xml19
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude3/hosts.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude3/services.xml19
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude4/hosts.xml7
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude4/services.xml19
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml6
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude5/services.xml18
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude6/empty_dir/.gitignore0
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude6/services.xml18
-rw-r--r--config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml6
-rw-r--r--config-model/src/test/cfg/container/data/include_xml_error/services.xml20
-rwxr-xr-xconfig-model/src/test/cfg/routing/content_two_clusters/documentrouteselectorpolicy.cfg6
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/content_two_clusters/messagebus.cfg44
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/mobile.sd15
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/services.xml31
-rwxr-xr-xconfig-model/src/test/cfg/routing/contentsimpleconfig/documentrouteselectorpolicy.cfg3
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/contentsimpleconfig/messagebus.cfg25
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/services.xml21
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/documentrouteselectorpolicy.cfg1
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/messagebus.cfg6
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicatehop/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/duplicatehop/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicatehop/services.xml18
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicateroute/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/duplicateroute/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicateroute/services.xml18
-rwxr-xr-xconfig-model/src/test/cfg/routing/emptyhop/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/emptyhop/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/emptyhop/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/emptyroute/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/emptyroute/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/emptyroute/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/documentrouteselectorpolicy.cfg1
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/messagebus.cfg15
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/services.xml24
-rwxr-xr-xconfig-model/src/test/cfg/routing/hoperror/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/hoperror/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/hoperror/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/hoperrorinrecipient/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml15
-rwxr-xr-xconfig-model/src/test/cfg/routing/hoperrorinroute/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinroute/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopnotfound/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/hopnotfound/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/hopnotfound/services.xml13
-rw-r--r--config-model/src/test/cfg/routing/invalidstoragepolicy/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml11
-rwxr-xr-xconfig-model/src/test/cfg/routing/mismatchedrecipient/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/mismatchedrecipient/services.xml15
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/documentrouteselectorpolicy.cfg3
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/messagebus.cfg22
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/searchdefinitions/music.sd13
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/services.xml32
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/documentrouteselectorpolicy.cfg3
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/messagebus.cfg19
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/searchdefinitions/music.sd13
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/services.xml28
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/documentrouteselectorpolicy.cfg1
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/messagebus.cfg7
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/services.xml14
-rwxr-xr-xconfig-model/src/test/cfg/routing/routenotfound/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/routenotfound/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/routenotfound/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/routenotfoundinroute/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/routenotfoundinroute/services.xml13
-rwxr-xr-xconfig-model/src/test/cfg/routing/servicenotfound/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/servicenotfound/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/servicenotfound/services.xml15
-rwxr-xr-xconfig-model/src/test/cfg/routing/unexpectedrecipient/errors.txt1
-rw-r--r--config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml7
-rw-r--r--config-model/src/test/cfg/routing/unexpectedrecipient/services.xml20
-rw-r--r--config-model/src/test/cfg/search/compare/complex/hosts/dev-mathiasm/sentinel/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/hosts/zarya/sentinel/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r1/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r1/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/1/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg66
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/partitions.MODEL.cfg66
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r1/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r1/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx-rtlogic.MODEL.cfg19
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx-rtlogic.MODEL.cfg19
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/partitions.MODEL.cfg66
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.2/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/hosts/zarya/sentinel/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/cluster.music/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/cluster.music/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg48
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.2/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/hosts/zarya/sentinel/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx-rtlogic.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg48
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/cluster.streaming/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/search/qrservers/qrserver.0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/client/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/distributor/0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/fleetcontroller/0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/gateway/0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/storage/0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/hosts/zarya/sentinel/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx-rtlogic.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/partitions.MODEL.cfg48
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r0/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r1/translogserver.MODEL.cfg7
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r1/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/rtx/0/pan-rtx.MODEL.cfg6
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/fdispatchrc.MODEL.cfg23
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/partitions.MODEL.cfg54
-rw-r--r--config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/qrservers/qrserver.0/.gitignore0
-rw-r--r--config-model/src/test/cfg/search/data/nextgen-simple-v2/searchdefinitions/nextgendoc.sd8
-rw-r--r--config-model/src/test/cfg/search/data/nextgen-simple-v2/services.xml37
-rw-r--r--config-model/src/test/cfg/search/data/onlybundles/components/testbundle.jarbin0 -> 696 bytes
-rw-r--r--config-model/src/test/cfg/search/data/onlybundles/services.xml34
-rw-r--r--config-model/src/test/cfg/search/data/travel/searchdefinitions/TTData.sd10
-rw-r--r--config-model/src/test/cfg/search/data/travel/searchdefinitions/TTEdge.sd10
-rw-r--r--config-model/src/test/cfg/search/data/travel/searchdefinitions/TTPOI.sd19
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/base.sd8
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/left.sd14
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/music.sd15
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/right.sd8
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml17
-rw-r--r--config-model/src/test/cfg/search/data/v2/modularsearchchains/hosts.xml7
-rw-r--r--config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain2.xml9
-rw-r--r--config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain3.xml10
-rw-r--r--config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/default.xml6
-rw-r--r--config-model/src/test/cfg/search/data/v2/modularsearchchains/services.xml25
-rw-r--r--config-model/src/test/cfg/search/data/v2/onlybundles/components/testbundle.jarbin0 -> 696 bytes
-rw-r--r--config-model/src/test/cfg/search/data/v2/onlybundles/services.xml34
-rw-r--r--config-model/src/test/cfg/search/data/v2/proton-yamas/hosts.xml7
-rw-r--r--config-model/src/test/cfg/search/data/v2/proton-yamas/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/search/data/v2/proton-yamas/services.xml30
-rw-r--r--config-model/src/test/cfg/search/data/v2/stripped/services.xml32
-rw-r--r--config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/hosts.xml7
-rwxr-xr-xconfig-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/searchdefinitions/music.sd13
-rw-r--r--config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/services.xml55
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml11
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/searchdefinitions/music.sd15
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml30
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml15
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/searchdefinitions/music.sd15
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml37
320 files changed, 3920 insertions, 0 deletions
diff --git a/config-model/src/test/cfg/admin/adminconfig20/hosts.xml b/config-model/src/test/cfg/admin/adminconfig20/hosts.xml
new file mode 100644
index 00000000000..0cc1fdf13bf
--- /dev/null
+++ b/config-model/src/test/cfg/admin/adminconfig20/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>adminserver</alias>
+ <alias>configserver</alias>
+ <alias>logserver</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/admin/adminconfig20/services.xml b/config-model/src/test/cfg/admin/adminconfig20/services.xml
new file mode 100644
index 00000000000..b3a6f3daa7a
--- /dev/null
+++ b/config-model/src/test/cfg/admin/adminconfig20/services.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="configserver" />
+ <logserver hostalias="logserver" />
+ <slobroks>
+ <slobrok hostalias="configserver" />
+ <slobrok hostalias="logserver" />
+ </slobroks>
+ </admin>
+
+</services>
diff --git a/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml b/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml
new file mode 100644
index 00000000000..8c8d8b7233a
--- /dev/null
+++ b/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>adminserver</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml b/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml
new file mode 100644
index 00000000000..6a44e5f2fe9
--- /dev/null
+++ b/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="adminserver" baseport="9999"/>
+ <adminserver hostalias="adminserver"/>
+ <logserver hostalias="adminserver"/>
+ </admin>
+
+ <search version="1.0">
+ <qrservers>
+ <qrserver hostalias="adminserver" baseport="4080"/>
+ </qrservers>
+ </search>
+
+</services>
diff --git a/config-model/src/test/cfg/admin/metricconfig/hosts.xml b/config-model/src/test/cfg/admin/metricconfig/hosts.xml
new file mode 100644
index 00000000000..6d48a020e93
--- /dev/null
+++ b/config-model/src/test/cfg/admin/metricconfig/hosts.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="foo1">
+ <alias>node1</alias>
+ </host>
+ <host name="foo2">
+ <alias>node2</alias>
+ </host>
+
+</hosts>
diff --git a/config-model/src/test/cfg/admin/metricconfig/searchdefinitions/music.sd b/config-model/src/test/cfg/admin/metricconfig/searchdefinitions/music.sd
new file mode 100644
index 00000000000..3323357cc2f
--- /dev/null
+++ b/config-model/src/test/cfg/admin/metricconfig/searchdefinitions/music.sd
@@ -0,0 +1,16 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ header
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ body
+ }
+ }
+}
+
diff --git a/config-model/src/test/cfg/admin/metricconfig/services.xml b/config-model/src/test/cfg/admin/metricconfig/services.xml
new file mode 100644
index 00000000000..cf102f94307
--- /dev/null
+++ b/config-model/src/test/cfg/admin/metricconfig/services.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ <yamas interval="60"/>
+ <metric-consumers>
+ <consumer name="fooConsumer">
+ <metric name="some.foo.metric" output-name="someFooMetric"/>
+ <metric name="some.foo.metric2" output-name="someFooMetric2"/>
+ <metric name="proton.numdocs.average" output-name="tull"/>
+ </consumer>
+ <consumer name="fooConsumer2">
+ <metric name="some.foo.metric3" output-name="someFooMetric3"/>
+ </consumer>
+ <consumer name="yamas">
+ <metric name="vds.distributor.bytesstored.average" output-name="tullball"/>
+ <metric name="proton.numdocs.average" output-name="overridden"/>
+ </consumer>
+ </metric-consumers>
+ </admin>
+
+ <container version="1.0">
+
+ <nodes>
+ <node hostalias="node1"/>
+ <node hostalias="node2" />
+ </nodes>
+
+ <search/>
+
+ <document-api/>
+
+ <document-processing>
+ <chain id="default">
+ <documentprocessor id="com.yahoo.docprocs.FoobarDocumentProcessor"/>
+ </chain>
+ </document-processing>
+
+ </container>
+
+ <content version="1.0" id="music">
+
+ <redundancy>1</redundancy>
+
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+
+ <nodes>
+ <node hostalias="node1" distribution-key="0"/>
+ <node hostalias="node2" distribution-key="1"/>
+ </nodes>
+
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml b/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml
new file mode 100644
index 00000000000..76b26c00009
--- /dev/null
+++ b/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+ <host name="localhost2">
+ <alias>node2</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/admin/multipleconfigservers/services.xml b/config-model/src/test/cfg/admin/multipleconfigservers/services.xml
new file mode 100644
index 00000000000..07e3f407d0f
--- /dev/null
+++ b/config-model/src/test/cfg/admin/multipleconfigservers/services.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <configservers>
+ <configserver hostalias="node1" />
+ <configserver hostalias="node2" />
+ </configservers>
+ <logserver hostalias="node2" />
+ </admin>
+
+</services>
diff --git a/config-model/src/test/cfg/admin/sdconfigs/pan-rtx.cfg b/config-model/src/test/cfg/admin/sdconfigs/pan-rtx.cfg
new file mode 100644
index 00000000000..6e18bdf64e7
--- /dev/null
+++ b/config-model/src/test/cfg/admin/sdconfigs/pan-rtx.cfg
@@ -0,0 +1,3 @@
+namespace=config
+foo bar
+baz []678
diff --git a/config-model/src/test/cfg/admin/sdconfigs/partitions.cfg b/config-model/src/test/cfg/admin/sdconfigs/partitions.cfg
new file mode 100644
index 00000000000..20bff56fe4a
--- /dev/null
+++ b/config-model/src/test/cfg/admin/sdconfigs/partitions.cfg
@@ -0,0 +1,2 @@
+namespace=config
+partbits 8
diff --git a/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml b/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml
new file mode 100644
index 00000000000..8c8d8b7233a
--- /dev/null
+++ b/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>adminserver</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml b/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml
new file mode 100644
index 00000000000..bb77f05086d
--- /dev/null
+++ b/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="adminserver" />
+ </admin>
+
+</services>
diff --git a/config-model/src/test/cfg/admin/userconfigs/function-test.def b/config-model/src/test/cfg/admin/userconfigs/function-test.def
new file mode 100644
index 00000000000..5391ee1dc3c
--- /dev/null
+++ b/config-model/src/test/cfg/admin/userconfigs/function-test.def
@@ -0,0 +1,73 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#
+# This def file should test most aspects of def files that makes a difference
+# for the autogenerated config classes. The goal is to trigger all blocks of
+# code in the code generators. This includes:
+#
+# - Use all legal special characters in the def file name, to ensure that those
+# that needs to be replaced in type names are actually replaced.
+# - Use the same enum type twice to verify that we dont declare or define it
+# twice.
+# - Use the same struct type twice for the same reason.
+# - Include arrays of primitives and structs.
+# - Include enum primitives and array of enums. Arrays of enums must be handled
+# specially by the C++ code.
+# - Include enums both with and without default values.
+# - Include primitive string, numbers & doubles both with and without default
+# values.
+# - Have an array within a struct, to verify that we correctly recurse.
+# - Reuse type name further within to ensure that this works.
+
+namespace=test
+
+# Some random bool without a default value. These comments exist to check
+ # that comment parsing works.
+bool_val bool
+ ## A bool with a default value set.
+bool_with_def bool default=false
+int_val int
+int_with_def int default=-545
+long_val long
+long_with_def long default=-50000000000
+double_val double
+double_with_def double default=-6.43
+# Another comment
+string_val string
+stringwithdef string default="foobar"
+enum_val enum { FOO, BAR, FOOBAR }
+enumwithdef enum { FOO2, BAR2, FOOBAR2 } default=BAR2
+onechoice enum { ONLYFOO } default=ONLYFOO
+refval reference
+refwithdef reference default=":parent:"
+fileVal file
+
+boolarr[] bool
+intarr[] int
+longarr[] long
+doublearr[] double
+stringarr[] string
+enumarr[] enum { ARRAY, VALUES }
+refarr[] reference
+fileArr[] file
+
+# A basic struct
+basicStruct.foo string default="basic"
+basicStruct.bar int
+basicStruct.intArr[] int
+
+# A struct of struct
+rootStruct.inner0.name string default="inner0"
+rootStruct.inner0.index int
+rootStruct.inner1.name string default="inner1"
+rootStruct.inner1.index int
+rootStruct.innerArr[].boolVal bool default=false
+rootStruct.innerArr[].stringVal string
+
+myarray[].intval int default=14
+myarray[].stringval[] string
+myarray[].enumval enum { INNER, ENUM, TYPE } default=TYPE
+myarray[].refval reference # Value in array without default
+myarray[].fileVal file
+myarray[].anotherarray[].foo int default=-4
+myarray[].myStruct.a int
+myarray[].myStruct.b int default=2
diff --git a/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml b/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml
new file mode 100644
index 00000000000..8dc033c7d79
--- /dev/null
+++ b/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<config name="function-test">
+ <bool_val>false</bool_val>
+ <int_val>5</int_val>
+ <long_val>1234567890123</long_val>
+ <double_val>41.23</double_val>
+ <string_val>foo</string_val>
+ <enum_val>FOOBAR</enum_val>
+ <refval>:parent:</refval>
+ <fileVal>vespa.log</fileVal>
+
+ <boolarr><item>false</item>item></boolarr>
+ <doublearr><item>2344</item><item>123</item></doublearr>
+ <stringarr><item>bar</item></stringarr>
+ <enumarr><item>VALUES</item></enumarr>
+
+ <basicStruct>
+ <bar>3</bar>
+ <intArr><item>10</item></intArr>
+ </basicStruct>
+
+ <rootStruct>
+ <inner0>
+ <index>11</index>
+ </inner0>
+ <inner1>
+ <index>12</index>
+ </inner1>
+ <innerArr>
+ <item><stringVal>deep</stringVal></item>item>
+ </innerArr>
+ </rootStruct>
+
+ <myarray>
+ <item>
+ <stringval><item>baah</item><item>yikes</item></stringval>
+ <refval>:parent:</refval>
+ <fileVal>command.com</fileVal>
+ <anotherarray>
+ <item>
+ <foo>7</foo>
+ </item>
+ </anotherarray>
+ <myStruct>
+ <a>1</a>
+ </myStruct>
+ </item>
+ <item>
+ <refval>:parent:</refval>
+ <fileVal>display.sys</fileVal>
+ <anotherarray>
+ <item><foo>1</foo></item>
+ <item><foo>2</foo></item>
+ </anotherarray>
+ <myStruct>
+ <a>-1</a>
+ </myStruct>
+ </item>
+ </myarray>
+
+</config>
diff --git a/config-model/src/test/cfg/admin/userconfigs/statistics.cfg b/config-model/src/test/cfg/admin/userconfigs/statistics.cfg
new file mode 100644
index 00000000000..6ee2fb46670
--- /dev/null
+++ b/config-model/src/test/cfg/admin/userconfigs/statistics.cfg
@@ -0,0 +1,4 @@
+namespace=config
+
+sampleinterval 10000.23
+statinterval -1456
diff --git a/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml b/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml
new file mode 100644
index 00000000000..c51dc001626
--- /dev/null
+++ b/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<config name="function-test">
+ <stringVal> This is a string
+ that contains different kinds of whitespace </stringVal>
+</config>
diff --git a/config-model/src/test/cfg/application/app1/components/defs-only.jar b/config-model/src/test/cfg/application/app1/components/defs-only.jar
new file mode 100644
index 00000000000..c0cf0397c97
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/components/defs-only.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/app1/components/file.txt b/config-model/src/test/cfg/application/app1/components/file.txt
new file mode 100644
index 00000000000..e167ca380f5
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/components/file.txt
@@ -0,0 +1 @@
+/home/vespa/test/file.txt \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/app1/files/foo.json b/config-model/src/test/cfg/application/app1/files/foo.json
new file mode 100644
index 00000000000..ed72b09660a
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/files/foo.json
@@ -0,0 +1 @@
+foo : foo
diff --git a/config-model/src/test/cfg/application/app1/files/sub/bar.json b/config-model/src/test/cfg/application/app1/files/sub/bar.json
new file mode 100644
index 00000000000..2f008f410ec
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/files/sub/bar.json
@@ -0,0 +1 @@
+bar : bar
diff --git a/config-model/src/test/cfg/application/app1/hosts.xml b/config-model/src/test/cfg/application/app1/hosts.xml
new file mode 100644
index 00000000000..fc545b34f6f
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/hosts.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+ <host name="schmocalhost">
+ <alias>node2</alias>
+ </host>
+</hosts>
+
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/bar.expression b/config-model/src/test/cfg/application/app1/searchdefinitions/bar.expression
new file mode 100644
index 00000000000..eed496e6aeb
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/bar.expression
@@ -0,0 +1 @@
+bar(f*2)
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/foo.expression b/config-model/src/test/cfg/application/app1/searchdefinitions/foo.expression
new file mode 100644
index 00000000000..ce26aa75dcb
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/foo.expression
@@ -0,0 +1 @@
+foo()+1
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/laptop.sd b/config-model/src/test/cfg/application/app1/searchdefinitions/laptop.sd
new file mode 100644
index 00000000000..147e128df16
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/laptop.sd
@@ -0,0 +1,41 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search laptop {
+
+ document laptop inherits product {
+
+ field batterycapacity type int {
+ indexing: attribute
+ }
+
+ field location_str type array<string> {
+
+ }
+ }
+
+ field batteryrank type int {
+ indexing: input batterycapacity | attribute
+ }
+
+ field location type array<position> {
+ indexing: input location_str | for_each { to_pos } | attribute
+ }
+
+ rank-profile default {
+ second-phase {
+ expression: fieldMatch(title)*fieldMatch(title).weight
+ rerank-count: 150
+ }
+ summary-features: fieldMatch(title)
+
+ rank-features: attribute(batterycapacity) match.weight.batterycapacity
+
+ rank-properties {
+ fieldMatch(title).maxOccurrences : 40
+ fieldMatch(title).proximityLimit : 5
+ }
+ }
+
+ rank-profile batteryranked {
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/music.sd b/config-model/src/test/cfg/application/app1/searchdefinitions/music.sd
new file mode 100644
index 00000000000..d0eec200b90
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/music.sd
@@ -0,0 +1,44 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# A basic search definition - called music, should be saved to music.sd
+search music {
+
+ # It contains one document type only - called music as well
+ document music {
+
+ field title type string {
+ indexing: summary | index # How this field should be indexed
+ # index-to: title, default # Create two indexes
+ rank-type: about # Type of ranking settings to apply
+ header
+ }
+
+ field artist type string {
+ indexing: summary | attribute | index
+ # index-to: artist, default
+ rank-type:about
+ header
+ }
+
+ field year type int {
+ indexing: summary | attribute
+ header
+ }
+
+ # Increase rank score of popular documents regardless of query
+ field popularity type int {
+ indexing: summary | attribute
+ body
+ }
+
+ field url type uri {
+ indexing: summary | index
+ header
+ }
+
+ field cover type raw {
+ body
+ }
+
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/pc.sd b/config-model/src/test/cfg/application/app1/searchdefinitions/pc.sd
new file mode 100644
index 00000000000..89f9ffe530d
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/pc.sd
@@ -0,0 +1,47 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search pc {
+
+ document pc inherits product {
+
+ field brand type string {
+ indexing: index | summary
+ }
+
+ field color type string {
+ indexing: summary | index
+ index: prefix
+ alias: colour
+ rank: filter
+ }
+
+ field cpuspeed type int {
+ indexing: summary
+ }
+
+ field location_str type array<string> {
+
+ }
+ }
+
+ field location type array<position> {
+ indexing: input location_str | for_each { to_pos } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: fieldMatch(brand).completeness + fieldMatch(color).completeness
+ }
+ second-phase {
+ expression: fieldMatch(brand).completeness*fieldMatch(brand).importancy + fieldMatch(color).completeness*fieldMatch(color).importancy
+ }
+
+ summary-features: fieldMatch(title) fieldMatch(brand).proximity match.weight.title nativeFieldMatch(title)
+
+ rank-features: attribute(cpuspeed)
+
+ rank-properties {
+ fieldMatch(brand).maxOccurrences : 20
+ }
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/product.sd b/config-model/src/test/cfg/application/app1/searchdefinitions/product.sd
new file mode 100644
index 00000000000..d8b1d725d1c
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/product.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+document product {
+
+ field title type string {
+ indexing: index | summary
+ # index-to: title, default
+ }
+
+ field price type int {
+ indexing: index | summary | attribute
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app1/searchdefinitions/sock.sd b/config-model/src/test/cfg/application/app1/searchdefinitions/sock.sd
new file mode 100644
index 00000000000..1620d790b65
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/searchdefinitions/sock.sd
@@ -0,0 +1,27 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search sock {
+
+ document sock inherits product {
+
+ field size type int {
+ indexing: index | summary | attribute
+ }
+
+ field color type string {
+ indexing: summary
+ index: prefix
+ }
+
+ field brand type string {
+ indexing: summary
+ }
+
+ }
+
+ rank-profile other {
+ second-phase {
+ expression: fieldMatch(color).fieldCompleteness + fieldMatch(brand).proximity
+ }
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app1/services.xml b/config-model/src/test/cfg/application/app1/services.xml
new file mode 100644
index 00000000000..537ec488537
--- /dev/null
+++ b/config-model/src/test/cfg/application/app1/services.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <slobroks>
+ <slobrok hostalias="node1"/>
+ <slobrok hostalias="node2"/>
+ </slobroks>
+ </admin>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+
+ <search/>
+ <document-api/>
+ </container>
+
+ <content id="music" version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music" mode="index" />
+ </documents>
+ <nodes>
+ <node hostalias="node1" distribution-key="0" />
+ </nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/application/app_genericservices/hosts.xml b/config-model/src/test/cfg/application/app_genericservices/hosts.xml
new file mode 100644
index 00000000000..7a41bc218cd
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_genericservices/hosts.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="bogusname1">
+ <alias>node1</alias>
+ </host>
+ <host name="bogusname2">
+ <alias>node2</alias>
+ </host>
+ <host name="bogusname3">
+ <alias>node3</alias>
+ </host>
+ <host name="bogusname4">
+ <alias>node4</alias>
+ </host>
+ <host name="bogusname5">
+ <alias>node5</alias>
+ </host>
+
+</hosts>
+
diff --git a/config-model/src/test/cfg/application/app_genericservices/searchdefinitions/music.sd b/config-model/src/test/cfg/application/app_genericservices/searchdefinitions/music.sd
new file mode 100644
index 00000000000..d0eec200b90
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_genericservices/searchdefinitions/music.sd
@@ -0,0 +1,44 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# A basic search definition - called music, should be saved to music.sd
+search music {
+
+ # It contains one document type only - called music as well
+ document music {
+
+ field title type string {
+ indexing: summary | index # How this field should be indexed
+ # index-to: title, default # Create two indexes
+ rank-type: about # Type of ranking settings to apply
+ header
+ }
+
+ field artist type string {
+ indexing: summary | attribute | index
+ # index-to: artist, default
+ rank-type:about
+ header
+ }
+
+ field year type int {
+ indexing: summary | attribute
+ header
+ }
+
+ # Increase rank score of popular documents regardless of query
+ field popularity type int {
+ indexing: summary | attribute
+ body
+ }
+
+ field url type uri {
+ indexing: summary | index
+ header
+ }
+
+ field cover type raw {
+ body
+ }
+
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/app_genericservices/services.xml b/config-model/src/test/cfg/application/app_genericservices/services.xml
new file mode 100644
index 00000000000..67169253bba
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_genericservices/services.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <service version="1.0" name="myservice" command="mycmd1.sh">
+ <config name="myconfig">
+ <mysetting>bar</mysetting>
+ </config>
+ <node hostalias="node1">
+ <config name="myconfig">
+ <mysetting>baz</mysetting>
+ </config>
+ </node>
+ <node hostalias="node2"/>
+ <node hostalias="node3"/>
+ <node hostalias="node3"/>
+ </service>
+
+ <service version="1.0" name="myotherservice" command="/home/vespa/bin/mycmd2.sh --ytest $FOO_BAR">
+ <config name="myconfig">
+ <mysetting>bar2</mysetting>
+ </config>
+ <node hostalias="node3">
+ <config name="myconfig">
+ <mysetting>baz2</mysetting>
+ </config>
+ </node>
+ <node hostalias="node4"/>
+ <node hostalias="node5"/>
+ </service>
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <slobroks>
+ <slobrok hostalias="node1"/>
+ <slobrok hostalias="node2"/>
+ </slobroks>
+ </admin>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+
+ <search/>
+ <document-api/>
+ </container>
+
+ <content id="music" version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music" mode="index" />
+ </documents>
+ <nodes>
+ <node hostalias="node1" distribution-key="0" />
+ </nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mail.sd b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mail.sd
new file mode 100644
index 00000000000..6ce2f4164e8
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mail.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search mail {
+
+ document mail {
+
+ }
+
+}
+
diff --git a/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mailbox.sd b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mailbox.sd
new file mode 100644
index 00000000000..fac4abe46a8
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/mailbox.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search mailbox {
+
+ document mailbox {
+ }
+
+
+}
+
diff --git a/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/message.sd b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/message.sd
new file mode 100644
index 00000000000..b31b2055dd5
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_nohosts/searchdefinitions/message.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search message {
+
+ document message {
+
+ }
+
+}
+
diff --git a/config-model/src/test/cfg/application/app_nohosts/services.xml b/config-model/src/test/cfg/application/app_nohosts/services.xml
new file mode 100644
index 00000000000..3169394f9d4
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_nohosts/services.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="ADMIN0" />
+ <logserver hostalias="ADMIN0" />
+ <slobroks>
+ <slobrok hostalias="SLOBROK0" />
+ </slobroks>
+ <configservers>
+ <configserver hostalias="ADMIN0" />
+ <configserver hostalias="SLOBROK0" />
+ </configservers>
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="cats" hops="storage"/>
+ </routingtable>
+ </routing>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="QRS0"/>
+ </nodes>
+ <document-api/>
+ <handler id="com.yahoo.foo.bar.FooHandler:1" />
+ </container>
+
+ <container version="1.0" id="migration">
+ <http>
+ <server port="8000" id="migration-server" />
+ </http>
+ <document-processing>
+ <chain id="baz">
+ <documentprocessor id="com.yahoo.foo.bar.baz.BazDocproc" />
+ </chain>
+ </document-processing>
+
+ <nodes>
+ <node hostalias="DOCPROC0" />
+ </nodes>
+ </container>
+
+ <content version="1.0" id="mailbox">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="mailbox" mode="streaming"/>
+ </documents>
+ <nodes><node hostalias="VDS0" distribution-key="0"/></nodes>
+ </content>
+
+ <content version="1.0" id="message">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="message" mode="streaming"/>
+ </documents>
+ <nodes><node hostalias="VDS0" distribution-key="0"/></nodes>
+ </content>
+
+ <content version="1.0" id="mail">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="mail" mode="streaming"/>
+ </documents>
+ <nodes><node hostalias="VDS0" distribution-key="0"/></nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/application/app_permanent/permanent-services.xml b/config-model/src/test/cfg/application/app_permanent/permanent-services.xml
new file mode 100644
index 00000000000..85ae636d206
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_permanent/permanent-services.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+ <jdisc version="1.0">
+ <search />
+ </jdisc>
+</services>
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml b/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml
new file mode 100644
index 00000000000..346dc5c7652
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node0</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/searchdefinitions/message.sd b/config-model/src/test/cfg/application/app_qrserverandgw/searchdefinitions/message.sd
new file mode 100644
index 00000000000..fdc220aef3d
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/searchdefinitions/message.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search message {
+
+ document message {
+ field foo type string {
+ indexing: summary
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/services.xml b/config-model/src/test/cfg/application/app_qrserverandgw/services.xml
new file mode 100644
index 00000000000..5136b06b892
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/services.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node0"/>
+ </admin>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="node0"/>
+ </nodes>
+ <document-api/>
+ <search/>
+ </container>
+
+ <content version="1.0" id="message">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="message" mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias="node0" distribution-key="0" />
+ </nodes>
+ </content>
+
+
+</services>
diff --git a/config-model/src/test/cfg/application/app_sdbundles/components/testbundle.jar b/config-model/src/test/cfg/application/app_sdbundles/components/testbundle.jar
new file mode 100644
index 00000000000..00749d776c2
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/components/testbundle.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/app_sdbundles/components/testbundle2.jar b/config-model/src/test/cfg/application/app_sdbundles/components/testbundle2.jar
new file mode 100644
index 00000000000..36c97c2716c
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/components/testbundle2.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/app_sdbundles/files/foo.txt b/config-model/src/test/cfg/application/app_sdbundles/files/foo.txt
new file mode 100644
index 00000000000..b7d6715e2df
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/files/foo.txt
@@ -0,0 +1 @@
+FOO
diff --git a/config-model/src/test/cfg/application/app_sdbundles/files/subdir/bar.txt b/config-model/src/test/cfg/application/app_sdbundles/files/subdir/bar.txt
new file mode 100644
index 00000000000..ba578e48b18
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/files/subdir/bar.txt
@@ -0,0 +1 @@
+BAR
diff --git a/config-model/src/test/cfg/application/app_sdbundles/hosts.xml b/config-model/src/test/cfg/application/app_sdbundles/hosts.xml
new file mode 100644
index 00000000000..fc545b34f6f
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/hosts.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+ <host name="schmocalhost">
+ <alias>node2</alias>
+ </host>
+</hosts>
+
diff --git a/config-model/src/test/cfg/application/app_sdbundles/services.xml b/config-model/src/test/cfg/application/app_sdbundles/services.xml
new file mode 100644
index 00000000000..537ec488537
--- /dev/null
+++ b/config-model/src/test/cfg/application/app_sdbundles/services.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <slobroks>
+ <slobrok hostalias="node1"/>
+ <slobrok hostalias="node2"/>
+ </slobroks>
+ </admin>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+
+ <search/>
+ <document-api/>
+ </container>
+
+ <content id="music" version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music" mode="index" />
+ </documents>
+ <nodes>
+ <node hostalias="node1" distribution-key="0" />
+ </nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/application/classes/attributes.def b/config-model/src/test/cfg/application/classes/attributes.def
new file mode 100644
index 00000000000..bb3a0df6299
--- /dev/null
+++ b/config-model/src/test/cfg/application/classes/attributes.def
@@ -0,0 +1,7 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=vespa.config.search
+attribute[].name string
+attribute[].datatype string
+attribute[].multivalue bool default=false
+attribute[].sortsigned bool default=true
+attribute[].disableprep bool default=false
diff --git a/config-model/src/test/cfg/application/com/yahoo/vespa/model/test/.gitignore b/config-model/src/test/cfg/application/com/yahoo/vespa/model/test/.gitignore
new file mode 100644
index 00000000000..6ff331c7e35
--- /dev/null
+++ b/config-model/src/test/cfg/application/com/yahoo/vespa/model/test/.gitignore
@@ -0,0 +1 @@
+hosts
diff --git a/config-model/src/test/cfg/application/components/com.yahoo.searcher1.jar b/config-model/src/test/cfg/application/components/com.yahoo.searcher1.jar
new file mode 100644
index 00000000000..437246152db
--- /dev/null
+++ b/config-model/src/test/cfg/application/components/com.yahoo.searcher1.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/bar.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/bar.def
new file mode 100644
index 00000000000..5ba447b9f7d
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/bar.def
@@ -0,0 +1,3 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=xyzzy
+bar int default="1"
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/baz.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/baz.def
new file mode 100644
index 00000000000..d9649a64203
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/baz.def
@@ -0,0 +1,3 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=xyzzy
+bar int
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/foo.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/foo.def
new file mode 100644
index 00000000000..f1cb7a75c8a
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/foo.def
@@ -0,0 +1,4 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+version=2
+namespace=config
+bar int default=1
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.foo.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.foo.def
new file mode 100644
index 00000000000..5fa36afc8e4
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.foo.def
@@ -0,0 +1,4 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=qux
+bar int default=2
+quux int default=3
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def
new file mode 100644
index 00000000000..aae291ec190
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def
@@ -0,0 +1,4 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=xyzzy
+bar int default="2"
+foo int
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.def
new file mode 100644
index 00000000000..e078d9cf77a
--- /dev/null
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.def
@@ -0,0 +1,4 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+version=1
+namespace=config
+bar int default=1
diff --git a/config-model/src/test/cfg/application/configuredportconfig/hosts.xml b/config-model/src/test/cfg/application/configuredportconfig/hosts.xml
new file mode 100644
index 00000000000..f3b3ad44df1
--- /dev/null
+++ b/config-model/src/test/cfg/application/configuredportconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/configuredportconfig/services.xml b/config-model/src/test/cfg/application/configuredportconfig/services.xml
new file mode 100644
index 00000000000..1b85de210df
--- /dev/null
+++ b/config-model/src/test/cfg/application/configuredportconfig/services.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <com.yahoo.vespa.model.test.SimplePlugin version="1.0">
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" baseport="9000" />
+
+ <!-- Conflicts with the previous service -->
+ <simpleservice hostalias="host1" baseport="9000" />
+
+ <!-- Conflicts with the first service, because of getWantedPort() -->
+ <simpleservice hostalias="host1" baseport="10000" />
+
+ <!-- Above the dynamic port range -->
+ <simpleservice hostalias="host1" baseport="20000" />
+
+ </com.yahoo.vespa.model.test.SimplePlugin>
+</services>
diff --git a/config-model/src/test/cfg/application/custompropconfig/hosts.xml b/config-model/src/test/cfg/application/custompropconfig/hosts.xml
new file mode 100644
index 00000000000..02dc37701cf
--- /dev/null
+++ b/config-model/src/test/cfg/application/custompropconfig/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ <alias>host2</alias>
+ <alias>host3</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/custompropconfig/services.xml b/config-model/src/test/cfg/application/custompropconfig/services.xml
new file mode 100644
index 00000000000..229dfdf7f06
--- /dev/null
+++ b/config-model/src/test/cfg/application/custompropconfig/services.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <com.yahoo.vespa.model.test.SimpleCustomPropPlugin version="1.0">
+ <simplecustompropservice hostalias="host1" />
+ </com.yahoo.vespa.model.test.SimpleCustomPropPlugin>
+</services>
diff --git a/config-model/src/test/cfg/application/doubleconfig/hosts.xml b/config-model/src/test/cfg/application/doubleconfig/hosts.xml
new file mode 100644
index 00000000000..02dc37701cf
--- /dev/null
+++ b/config-model/src/test/cfg/application/doubleconfig/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ <alias>host2</alias>
+ <alias>host3</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/doubleconfig/services.xml b/config-model/src/test/cfg/application/doubleconfig/services.xml
new file mode 100644
index 00000000000..74efd598d01
--- /dev/null
+++ b/config-model/src/test/cfg/application/doubleconfig/services.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <simpleplugin version="1.0">
+ <simpleservice hostalias="host2" />
+ <simpleservice hostalias="host2" />
+ </simpleplugin>
+
+ <simpleplugin version="1.0">
+ <simpleservice hostalias="host2" />
+ </simpleplugin>
+
+</services>
diff --git a/config-model/src/test/cfg/application/include_dirs/dir1/default.xml b/config-model/src/test/cfg/application/include_dirs/dir1/default.xml
new file mode 100644
index 00000000000..f1e16333fc1
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/dir1/default.xml
@@ -0,0 +1,6 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="default">
+ <searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml b/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml
new file mode 100644
index 00000000000..9d297be5212
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml
@@ -0,0 +1,8 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <searcher class="com.yahoo.search.example.SimpleSearcher" id="s1" bundle="mybundle"/>
+ <chain id="chain2">
+ <searcher id="s1"/>
+ <searcher id="com.yahoo.search.example.SimpleSearcher2" bundle="mybundle"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml b/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml
new file mode 100644
index 00000000000..0e019ba9d02
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml
@@ -0,0 +1,10 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="chain3_1">
+ <searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
+ </chain>
+ <chain id="chain3_2">
+ <searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
+ <searcher id="com.yahoo.search.example.SimpleSearcher2" bundle="mybundle"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/application/include_dirs/empty_dir/.gitignore b/config-model/src/test/cfg/application/include_dirs/empty_dir/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/empty_dir/.gitignore
diff --git a/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml b/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml
new file mode 100644
index 00000000000..629fc830372
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml
@@ -0,0 +1,4 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<components>
+ <component id="test.Exampledocproc"/>
+</components>
diff --git a/config-model/src/test/cfg/application/include_dirs/services.xml b/config-model/src/test/cfg/application/include_dirs/services.xml
new file mode 100644
index 00000000000..c7349881aed
--- /dev/null
+++ b/config-model/src/test/cfg/application/include_dirs/services.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+
+ <jdisc id="default" version="1.0">
+ <!-- <component id="test.Exampledocproc"/> -->
+ <components>
+ <include dir="jdisc_dir"/>
+ </components>
+ <search>
+ <include dir='dir1'/>
+ <include dir='dir2'/>
+ <include dir='empty_dir'/>
+ </search>
+
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+ </jdisc>
+
+</services>
diff --git a/config-model/src/test/cfg/application/invalid_legacy_user_config/configs/qr-searchers.cfg b/config-model/src/test/cfg/application/invalid_legacy_user_config/configs/qr-searchers.cfg
new file mode 100644
index 00000000000..07538a1dce2
--- /dev/null
+++ b/config-model/src/test/cfg/application/invalid_legacy_user_config/configs/qr-searchers.cfg
@@ -0,0 +1,5 @@
+builtin[StemmingSearcher].enabled false
+builtin[NoRankingSearcher].enabled false
+tag.bold.open "^_"
+tag.bold.close "^_"
+tag.separator " ... "
diff --git a/config-model/src/test/cfg/application/invalid_legacy_user_config/services.xml b/config-model/src/test/cfg/application/invalid_legacy_user_config/services.xml
new file mode 100644
index 00000000000..2cfe35d8893
--- /dev/null
+++ b/config-model/src/test/cfg/application/invalid_legacy_user_config/services.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+</services>
diff --git a/config-model/src/test/cfg/application/metricsconfig/hosts.xml b/config-model/src/test/cfg/application/metricsconfig/hosts.xml
new file mode 100644
index 00000000000..02dc37701cf
--- /dev/null
+++ b/config-model/src/test/cfg/application/metricsconfig/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ <alias>host2</alias>
+ <alias>host3</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/metricsconfig/services.xml b/config-model/src/test/cfg/application/metricsconfig/services.xml
new file mode 100644
index 00000000000..dd6005f1e74
--- /dev/null
+++ b/config-model/src/test/cfg/application/metricsconfig/services.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <simple version="1.0">
+ <simpleservice hostalias="host2">
+ <metric-consumers>
+ <consumer name="yamas">
+ <metric name="onlyMine" output-name="user"/>
+ </consumer>
+ </metric-consumers>
+ </simpleservice>
+
+ <simpleservice hostalias="host2">
+ <metric-consumers>
+ <consumer name="yamas">
+ <metric name="test" output-name="user"/>
+ </consumer>
+ </metric-consumers>
+ </simpleservice>
+ </simple>
+</services>
diff --git a/config-model/src/test/cfg/application/newfilenames/hosts.xml b/config-model/src/test/cfg/application/newfilenames/hosts.xml
new file mode 100644
index 00000000000..02dc37701cf
--- /dev/null
+++ b/config-model/src/test/cfg/application/newfilenames/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ <alias>host2</alias>
+ <alias>host3</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/newfilenames/services.xml b/config-model/src/test/cfg/application/newfilenames/services.xml
new file mode 100644
index 00000000000..f76ab8eba78
--- /dev/null
+++ b/config-model/src/test/cfg/application/newfilenames/services.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <simpleplugin version="1.0">
+ <simpleservice hostalias="host2" />
+ <simpleservice hostalias="host2" />
+ </simpleplugin>
+</services>
diff --git a/config-model/src/test/cfg/application/plugins/hosts.xml b/config-model/src/test/cfg/application/plugins/hosts.xml
new file mode 100644
index 00000000000..f3b3ad44df1
--- /dev/null
+++ b/config-model/src/test/cfg/application/plugins/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/plugins/services.xml b/config-model/src/test/cfg/application/plugins/services.xml
new file mode 100644
index 00000000000..79aa2ab9740
--- /dev/null
+++ b/config-model/src/test/cfg/application/plugins/services.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="host1" />
+ </admin>
+
+ <simple version="1.0">
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" />
+ </simple>
+
+ <simple id="simple2" version="1.0">
+ <simpleservice hostalias="host1" />
+ </simple>
+
+ <api version="1.0">
+ <apiservice hostalias="host1" />
+ </api>
+
+</services>
diff --git a/config-model/src/test/cfg/application/sdfilenametest/searchdefinitions/notmusic.sd b/config-model/src/test/cfg/application/sdfilenametest/searchdefinitions/notmusic.sd
new file mode 100644
index 00000000000..a70236a7d6f
--- /dev/null
+++ b/config-model/src/test/cfg/application/sdfilenametest/searchdefinitions/notmusic.sd
@@ -0,0 +1,12 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+
+ document music {
+
+ field title type string {
+ indexing: summary | index
+ # index-to: title, default
+ }
+ }
+
+}
diff --git a/config-model/src/test/cfg/application/sdfilenametest/services.xml b/config-model/src/test/cfg/application/sdfilenametest/services.xml
new file mode 100644
index 00000000000..1052e27430f
--- /dev/null
+++ b/config-model/src/test/cfg/application/sdfilenametest/services.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+</services>
diff --git a/config-model/src/test/cfg/application/serverdefs/attributes.def b/config-model/src/test/cfg/application/serverdefs/attributes.def
new file mode 100644
index 00000000000..aa9bce983ab
--- /dev/null
+++ b/config-model/src/test/cfg/application/serverdefs/attributes.def
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+namespace=vespa.config.search
+
+attribute[].name string
+attribute[].datatype string
+attribute[].multivalue bool default=false
+attribute[].sortsigned bool default=true
+attribute[].disableprep bool default=false
diff --git a/config-model/src/test/cfg/application/simpleconfig/hosts.xml b/config-model/src/test/cfg/application/simpleconfig/hosts.xml
new file mode 100644
index 00000000000..02dc37701cf
--- /dev/null
+++ b/config-model/src/test/cfg/application/simpleconfig/hosts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ <alias>host2</alias>
+ <alias>host3</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/simpleconfig/services.xml b/config-model/src/test/cfg/application/simpleconfig/services.xml
new file mode 100644
index 00000000000..25b5057fe8b
--- /dev/null
+++ b/config-model/src/test/cfg/application/simpleconfig/services.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <simple version="1.0">
+ <simpleservice hostalias="host2" />
+ <simpleservice hostalias="host2" />
+ </simple>
+
+ <simple id="second" version="1.0">
+ <simpleservice hostalias="host3" />
+ </simple>
+
+</services>
diff --git a/config-model/src/test/cfg/application/treeconfig/hosts.xml b/config-model/src/test/cfg/application/treeconfig/hosts.xml
new file mode 100644
index 00000000000..f3b3ad44df1
--- /dev/null
+++ b/config-model/src/test/cfg/application/treeconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>host1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/treeconfig/services.xml b/config-model/src/test/cfg/application/treeconfig/services.xml
new file mode 100644
index 00000000000..cee45284c2e
--- /dev/null
+++ b/config-model/src/test/cfg/application/treeconfig/services.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <com.yahoo.vespa.model.test.SimplePlugin version="1.0">
+ <parentservice hostalias="host1" >
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" />
+
+ <parentservice hostalias="host1" >
+ <simpleservice hostalias="host1" />
+ <simpleservice hostalias="host1" />
+ </parentservice>
+
+ </parentservice>
+
+ <parentservice hostalias="host1" />
+
+ </com.yahoo.vespa.model.test.SimplePlugin>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/components/.gitignore b/config-model/src/test/cfg/application/validation/components/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/components/.gitignore
diff --git a/config-model/src/test/cfg/application/validation/index_struct/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/index_struct/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..d13477732d8
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/index_struct/searchdefinitions/simple.sd
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field foo type map<string, string> { }
+ field bar type map<string, string> { indexing: summary}
+ field baz type map<string, string> { indexing: index | summary }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/index_struct/services.xml b/config-model/src/test/cfg/application/validation/index_struct/services.xml
new file mode 100644
index 00000000000..be6672f415f
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/index_struct/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/invalidjar_app/components/invalid.jar b/config-model/src/test/cfg/application/validation/invalidjar_app/components/invalid.jar
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/invalidjar_app/components/invalid.jar
diff --git a/config-model/src/test/cfg/application/validation/prefix/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/prefix/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..65f0502a8f7
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix/searchdefinitions/simple.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field artist type string {
+ indexing: summary | attribute
+ match:prefix
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/prefix/services.xml b/config-model/src/test/cfg/application/validation/prefix/services.xml
new file mode 100644
index 00000000000..2518a2cc4f0
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix/services.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/prefix_index/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/prefix_index/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..7dc6b88c037
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_index/searchdefinitions/simple.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field artist type string {
+ indexing: summary | index
+ match:prefix
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/prefix_index/services.xml b/config-model/src/test/cfg/application/validation/prefix_index/services.xml
new file mode 100644
index 00000000000..2518a2cc4f0
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_index/services.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..4fea7a5c3a4
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/searchdefinitions/simple.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field artist type string {
+ indexing: summary | attribute | index
+ match:prefix
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml
new file mode 100644
index 00000000000..2518a2cc4f0
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/prefix_streaming/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/prefix_streaming/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..7dc6b88c037
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_streaming/searchdefinitions/simple.sd
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field artist type string {
+ indexing: summary | index
+ match:prefix
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml b/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml
new file mode 100644
index 00000000000..4700fa75612
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="streaming"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml b/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..d2851816bc0
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd
@@ -0,0 +1,16 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field my_pos type position { indexing: summary }
+ field my_int type int { indexing: summary }
+ field my_float type float { indexing: summary }
+ field my_str type string { indexing: summary }
+ field my_raw type raw { indexing: summary }
+ field my_long type long { indexing: summary }
+ field my_double type double { indexing: summary }
+ field my_uri type uri { indexing: summary }
+ field my_byte type byte { indexing: summary }
+ field my_predicate type predicate { indexing: summary }
+ field my_tensor type tensor { indexing: summary }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/services.xml b/config-model/src/test/cfg/application/validation/search_alltypes/services.xml
new file mode 100644
index 00000000000..be6672f415f
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/search_content/hosts.xml b/config-model/src/test/cfg/application/validation/search_content/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_content/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/validation/search_content/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/search_content/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..3647689de10
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_content/searchdefinitions/simple.sd
@@ -0,0 +1,7 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field foo type raw { }
+ field bar type raw { indexing: summary }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/search_content/services.xml b/config-model/src/test/cfg/application/validation/search_content/services.xml
new file mode 100644
index 00000000000..c415b2aad4c
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_content/services.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1" />
+ </qrservers>
+ <cluster indexingmode="realtime">
+ <searchdefinitions>
+ <searchdefinition name="simple" />
+ </searchdefinitions>
+ <clustercontrollers>
+ <clustercontroller hostalias="node1" />
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1" />
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0" />
+ </searchnodes>
+ </row>
+ </cluster>
+ </search>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml b/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/search_empty_content/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..023943fd3b1
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/searchdefinitions/simple.sd
@@ -0,0 +1,6 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field foo type raw { }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/services.xml b/config-model/src/test/cfg/application/validation/search_empty_content/services.xml
new file mode 100644
index 00000000000..be6672f415f
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/search_struct/hosts.xml b/config-model/src/test/cfg/application/validation/search_struct/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_struct/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/application/validation/search_struct/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/search_struct/searchdefinitions/simple.sd
new file mode 100644
index 00000000000..e8d3d37906d
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_struct/searchdefinitions/simple.sd
@@ -0,0 +1,10 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search simple {
+ document simple {
+ field foo type my_struct { }
+ field bar type my_struct { indexing: summary }
+ struct my_struct {
+ field bar type string { }
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/application/validation/search_struct/services.xml b/config-model/src/test/cfg/application/validation/search_struct/services.xml
new file mode 100644
index 00000000000..be6672f415f
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/search_struct/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+ <content version="1.0">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type='simple' mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias='node1' distribution-key='0'/>
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/application/validation/testjars/missing_osgi_headers.jar b/config-model/src/test/cfg/application/validation/testjars/missing_osgi_headers.jar
new file mode 100644
index 00000000000..84781c4802e
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/missing_osgi_headers.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/nomanifest.jar b/config-model/src/test/cfg/application/validation/testjars/nomanifest.jar
new file mode 100644
index 00000000000..f4f7dd4e127
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/nomanifest.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/ok.jar b/config-model/src/test/cfg/application/validation/testjars/ok.jar
new file mode 100644
index 00000000000..fce043c6ff7
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/ok.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/snapshot_bundle.jar b/config-model/src/test/cfg/application/validation/testjars/snapshot_bundle.jar
new file mode 100644
index 00000000000..a395a52d17d
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/snapshot_bundle.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/test.jar b/config-model/src/test/cfg/application/validation/testjars/test.jar
new file mode 100644
index 00000000000..47fbd01f1ec
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/test.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/wrong_classpath.jar b/config-model/src/test/cfg/application/validation/testjars/wrong_classpath.jar
new file mode 100644
index 00000000000..31266f1e8f2
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/wrong_classpath.jar
Binary files differ
diff --git a/config-model/src/test/cfg/application/validation/testjars/wrong_export.jar b/config-model/src/test/cfg/application/validation/testjars/wrong_export.jar
new file mode 100644
index 00000000000..47fbd01f1ec
--- /dev/null
+++ b/config-model/src/test/cfg/application/validation/testjars/wrong_export.jar
Binary files differ
diff --git a/config-model/src/test/cfg/clients/advancedconfig.v2/hosts.xml b/config-model/src/test/cfg/clients/advancedconfig.v2/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/clients/advancedconfig.v2/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/clients/advancedconfig.v2/searchdefinitions/music.sd b/config-model/src/test/cfg/clients/advancedconfig.v2/searchdefinitions/music.sd
new file mode 100644
index 00000000000..136efeafaf6
--- /dev/null
+++ b/config-model/src/test/cfg/clients/advancedconfig.v2/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/clients/advancedconfig.v2/services.xml b/config-model/src/test/cfg/clients/advancedconfig.v2/services.xml
new file mode 100644
index 00000000000..5147b1b546f
--- /dev/null
+++ b/config-model/src/test/cfg/clients/advancedconfig.v2/services.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services xmlns="">
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <clients version="2.0">
+ <spoolers>
+ <feederoptions>
+ <timeout>90</timeout>
+ </feederoptions>
+
+ <spooler hostalias="node1" keepsuccess="true">
+ <abortondocumenterror>false</abortondocumenterror>
+ <maxpendingbytes>8000</maxpendingbytes>
+ <parsers>
+ <parser type="com.yahoo.vespaspooler.XMLFileParser"/>
+ <parser type="com.yahoo.vespaspooler.MusicFileParser"/>
+ <parser type="com.yahoo.vespaspooler.MusicParser">
+ <parameter key="route" value="default"/>
+ </parser>
+ </parsers>
+ </spooler>
+
+ <spooler hostalias="node1">
+ <abortondocumenterror>false</abortondocumenterror>
+ <maxpendingbytes>4000</maxpendingbytes>
+ <timeout>50</timeout>
+ <parsers>
+ <parser type="com.yahoo.vespaspooler.MusicParser">
+ <parameter key="route" value="othercluster"/>
+ </parser>
+ </parsers>
+ </spooler>
+
+ <spooler id="plan9">
+ <route>myroute</route>
+ <mbusport>14064</mbusport>
+
+ <parsers>
+ <parser type="com.yahoo.vespaspooler.MusicFileParser" />
+ </parsers>
+ </spooler>
+
+ </spoolers>
+ </clients>
+
+ <container version="1.0">
+ <search/>
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+ <content version="1.0" id="music">
+ <redundancy>2</redundancy>
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+ <nodes>
+ <node hostalias="node1" distribution-key="0" />
+ </nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/hosts.xml b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/searchdefinitions/music.sd b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/searchdefinitions/music.sd
new file mode 100644
index 00000000000..136efeafaf6
--- /dev/null
+++ b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/services.xml b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/services.xml
new file mode 100644
index 00000000000..955256618a4
--- /dev/null
+++ b/config-model/src/test/cfg/clients/simpleconfig.v2.docprocv3/services.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <clients version="2.0">
+ <spoolers>
+ <spooler hostalias="node1" maxfailuresize="100000" maxfatalfailuresize="1000000" threads="5">
+ <abortondocumenterror>false</abortondocumenterror>
+ <maxpendingbytes>8000</maxpendingbytes>
+ <tracelevel>7</tracelevel>
+ <parsers>
+ <parser type="com.yahoo.vespaspooler.XMLFileParser"/>
+ <parser type="com.yahoo.vespaspooler.MusicFileParser"/>
+ <parser type="com.yahoo.vespaspooler.MusicParser">
+ <parameter key="route" value="default"/>
+ <parameter key="foo" value="bar"/>
+ </parser>
+ </parsers>
+ </spooler>
+ </spoolers>
+ </clients>
+
+ <container version="1.0">
+
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+
+ <document-api/>
+
+ <document-processing>
+ <chain id="main">
+ <documentprocessor id="com.yahoo.docprocs.FoobarDocumentProcessor" />
+ </chain>
+ </document-processing>
+
+ <search/>
+
+ </container>
+
+ <content version="1.0" id="music">
+
+ <redundancy>2</redundancy>
+
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+
+ <nodes>
+ <node hostalias="node1" distribution-key="0" />
+ </nodes>
+
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/clients/simpleconfig.v2/searchdefinitions/.gitignore b/config-model/src/test/cfg/clients/simpleconfig.v2/searchdefinitions/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/clients/simpleconfig.v2/searchdefinitions/.gitignore
diff --git a/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml b/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml
new file mode 100644
index 00000000000..dbe3bb659e0
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml
@@ -0,0 +1,10 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<jdisc>
+ <config name="cloud.config.elk">
+ <elasticsearch>
+ <item>
+ <host>foo</host>
+ </item>
+ </elasticsearch>
+ </config>
+</jdisc>
diff --git a/config-model/src/test/cfg/container/data/configserverinclude/services.xml b/config-model/src/test/cfg/container/data/configserverinclude/services.xml
new file mode 100644
index 00000000000..1cd2633c5e0
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/configserverinclude/services.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <jdisc id='configserver' version="1.0">
+ <http>
+ <server id="configserver" port="1234" />
+ </http>
+ </jdisc>
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml b/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml
new file mode 100644
index 00000000000..80a49949581
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<document-processing>
+ <chain id="docprocchain2">
+ <documentprocessor id="com.yahoo.DocumentProcessor2"/>
+ </chain>
+</document-processing>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude/hosts.xml
new file mode 100644
index 00000000000..3ab86a21aef
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml b/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml
new file mode 100644
index 00000000000..8ae46c0c9c7
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<processing>
+ <chain id="processingchain2">
+ <processor id="com.yahoo.Processor2"/>
+ </chain>
+</processing>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml
new file mode 100644
index 00000000000..9cdf3e767fe
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="searchchain2">
+ <searcher id="com.yahoo.Searcher2"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml
new file mode 100644
index 00000000000..2cbe93a2cd1
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="searchchain3">
+ <searcher id="com.yahoo.Searcher3"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml
new file mode 100644
index 00000000000..fbc0b5eb98b
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="searchchain4">
+ <searcher id="com.yahoo.Searcher4"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/services.xml b/config-model/src/test/cfg/container/data/containerinclude/services.xml
new file mode 100644
index 00000000000..172587ad8f8
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude/services.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <search>
+ <include dir="searchinclude1"/>
+ <include dir="searchinclude2"/>
+ <chain id="searchchain1">
+ <searcher id="com.yahoo.Searcher1"/>
+ </chain>
+ </search>
+ <document-processing>
+ <include dir="docprocinclude1"/>
+ <chain id="docprocchain1">
+ <documentprocessor id="com.yahoo.DocumentProcessor1"/>
+ </chain>
+ </document-processing>
+ <processing>
+ <include dir="processinginclude1"/>
+ <chain id="processingchain1">
+ <processor id="com.yahoo.Processor1"/>
+ </chain>
+ </processing>
+
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml
new file mode 100644
index 00000000000..3ab86a21aef
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/container/data/containerinclude2/services.xml b/config-model/src/test/cfg/container/data/containerinclude2/services.xml
new file mode 100644
index 00000000000..517e562d9d3
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude2/services.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <document-processing>
+ <include dir="doesnotexist"/>
+ </document-processing>
+
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml
new file mode 100644
index 00000000000..3ab86a21aef
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/container/data/containerinclude3/services.xml b/config-model/src/test/cfg/container/data/containerinclude3/services.xml
new file mode 100644
index 00000000000..40121832467
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude3/services.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <document-processing>
+ <include dir="/bin"/>
+ </document-processing>
+
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml
new file mode 100644
index 00000000000..3ab86a21aef
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/container/data/containerinclude4/services.xml b/config-model/src/test/cfg/container/data/containerinclude4/services.xml
new file mode 100644
index 00000000000..69b3dba40c0
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude4/services.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <document-processing>
+ <include dir="hosts.xml"/>
+ </document-processing>
+
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml b/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml
new file mode 100644
index 00000000000..98045c7bb0a
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml
@@ -0,0 +1,6 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<processing>
+ <chain id="processingchain2">
+ <processor id="com.yahoo.Processor2"/>
+ </chain>
+</processing>
diff --git a/config-model/src/test/cfg/container/data/containerinclude5/services.xml b/config-model/src/test/cfg/container/data/containerinclude5/services.xml
new file mode 100644
index 00000000000..cf19fcd0b98
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude5/services.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <search>
+ <include dir="searchinclude"/>
+ </search>
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/containerinclude6/empty_dir/.gitignore b/config-model/src/test/cfg/container/data/containerinclude6/empty_dir/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude6/empty_dir/.gitignore
diff --git a/config-model/src/test/cfg/container/data/containerinclude6/services.xml b/config-model/src/test/cfg/container/data/containerinclude6/services.xml
new file mode 100644
index 00000000000..603e474c5f0
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/containerinclude6/services.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ </admin>
+
+ <container version="1.0">
+ <search>
+ <include dir="empty_dir"/>
+ </search>
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml b/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml
new file mode 100644
index 00000000000..8e0472b4547
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml
@@ -0,0 +1,6 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<search>
+ <chain id="default">
+ <zearcer id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
+ </chain>
+</search>
diff --git a/config-model/src/test/cfg/container/data/include_xml_error/services.xml b/config-model/src/test/cfg/container/data/include_xml_error/services.xml
new file mode 100644
index 00000000000..a5a3cda10e4
--- /dev/null
+++ b/config-model/src/test/cfg/container/data/include_xml_error/services.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+
+ <jdisc version="1.0">
+ <search>
+ <include dir='dir1'/>
+ </search>
+
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+ </jdisc>
+
+</services>
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/content_two_clusters/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..657b05d63b7
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/documentrouteselectorpolicy.cfg
@@ -0,0 +1,6 @@
+route[0].name "content/mobile"
+route[0].selector "mobile or mobile_search"
+route[0].feed ""
+route[1].name "content/music"
+route[1].selector "music or music_search"
+route[1].feed ""
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml b/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/messagebus.cfg b/config-model/src/test/cfg/routing/content_two_clusters/messagebus.cfg
new file mode 100755
index 00000000000..3860bf71431
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/messagebus.cfg
@@ -0,0 +1,44 @@
+routingtable[0].protocol "document"
+routingtable[0].hop[0].name "docproc/cluster.mobile.indexing/chain.mobile.indexing"
+routingtable[0].hop[0].selector "[LoadBalancer:cluster=docproc/cluster.mobile.indexing;session=chain.mobile.indexing]"
+routingtable[0].hop[0].ignoreresult false
+routingtable[0].hop[1].name "docproc/cluster.music.indexing/chain.music.indexing"
+routingtable[0].hop[1].selector "[LoadBalancer:cluster=docproc/cluster.music.indexing;session=chain.music.indexing]"
+routingtable[0].hop[1].ignoreresult false
+routingtable[0].hop[2].name "indexing"
+routingtable[0].hop[2].selector "[DocumentRouteSelector]"
+routingtable[0].hop[2].recipient[0] "content/mobile"
+routingtable[0].hop[2].recipient[1] "content/music"
+routingtable[0].hop[2].ignoreresult false
+routingtable[0].route[0].name "content/mobile"
+routingtable[0].route[0].hop[0] "[MessageType:content/mobile]"
+routingtable[0].route[1].name "content/mobile-direct"
+routingtable[0].route[1].hop[0] "[Content:cluster=mobile]"
+routingtable[0].route[2].name "content/mobile-index"
+routingtable[0].route[2].hop[0] "docproc/cluster.mobile.indexing/chain.mobile.indexing"
+routingtable[0].route[2].hop[1] "[Content:cluster=mobile]"
+routingtable[0].route[3].name "content/music"
+routingtable[0].route[3].hop[0] "[MessageType:content/music]"
+routingtable[0].route[4].name "content/music-direct"
+routingtable[0].route[4].hop[0] "[Content:cluster=music]"
+routingtable[0].route[5].name "content/music-index"
+routingtable[0].route[5].hop[0] "docproc/cluster.music.indexing/chain.music.indexing"
+routingtable[0].route[5].hop[1] "[Content:cluster=music]"
+routingtable[0].route[6].name "default"
+routingtable[0].route[6].hop[0] "indexing"
+routingtable[0].route[7].name "mobile"
+routingtable[0].route[7].hop[0] "route:content/mobile"
+routingtable[0].route[8].name "mobile-direct"
+routingtable[0].route[8].hop[0] "route:content/mobile-direct"
+routingtable[0].route[9].name "mobile-index"
+routingtable[0].route[9].hop[0] "route:content/mobile-index"
+routingtable[0].route[10].name "music"
+routingtable[0].route[10].hop[0] "route:content/music"
+routingtable[0].route[11].name "music-direct"
+routingtable[0].route[11].hop[0] "route:content/music-direct"
+routingtable[0].route[12].name "music-index"
+routingtable[0].route[12].hop[0] "route:content/music-index"
+routingtable[0].route[13].name "storage/cluster.mobile"
+routingtable[0].route[13].hop[0] "route:content/mobile"
+routingtable[0].route[14].name "storage/cluster.music"
+routingtable[0].route[14].hop[0] "route:content/music"
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/mobile.sd b/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/mobile.sd
new file mode 100644
index 00000000000..ee52751f137
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/mobile.sd
@@ -0,0 +1,15 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search mobile {
+ document mobile {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ header
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ body
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/music.sd b/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/music.sd
new file mode 100644
index 00000000000..136efeafaf6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/services.xml b/config-model/src/test/cfg/routing/content_two_clusters/services.xml
new file mode 100644
index 00000000000..df9717c4980
--- /dev/null
+++ b/config-model/src/test/cfg/routing/content_two_clusters/services.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <content version="1.0" id="music">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+ <group name="mygroup">
+ <node hostalias="node1" distribution-key="0" />
+ </group>
+ </content>
+
+ <content version="1.0" id="mobile">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="mobile" mode="index"/>
+ </documents>
+ <group name="mygroup">
+ <node hostalias="node1" distribution-key="0" />
+ </group>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/contentsimpleconfig/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..7e7a546235c
--- /dev/null
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/documentrouteselectorpolicy.cfg
@@ -0,0 +1,3 @@
+route[0].name "content/music"
+route[0].selector "music or music_search"
+route[0].feed ""
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml b/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/messagebus.cfg b/config-model/src/test/cfg/routing/contentsimpleconfig/messagebus.cfg
new file mode 100755
index 00000000000..e1c87a4274d
--- /dev/null
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/messagebus.cfg
@@ -0,0 +1,25 @@
+routingtable[0].protocol "document"
+routingtable[0].hop[0].name "docproc/cluster.music.indexing/chain.music.indexing"
+routingtable[0].hop[0].selector "[LoadBalancer:cluster=docproc/cluster.music.indexing;session=chain.music.indexing]"
+routingtable[0].hop[0].ignoreresult false
+routingtable[0].hop[1].name "indexing"
+routingtable[0].hop[1].selector "[DocumentRouteSelector]"
+routingtable[0].hop[1].recipient[0] "content/music"
+routingtable[0].hop[1].ignoreresult false
+routingtable[0].route[0].name "content/music"
+routingtable[0].route[0].hop[0] "[MessageType:content/music]"
+routingtable[0].route[1].name "content/music-direct"
+routingtable[0].route[1].hop[0] "[Content:cluster=music]"
+routingtable[0].route[2].name "content/music-index"
+routingtable[0].route[2].hop[0] "docproc/cluster.music.indexing/chain.music.indexing"
+routingtable[0].route[2].hop[1] "[Content:cluster=music]"
+routingtable[0].route[3].name "default"
+routingtable[0].route[3].hop[0] "indexing"
+routingtable[0].route[4].name "music"
+routingtable[0].route[4].hop[0] "route:content/music"
+routingtable[0].route[5].name "music-direct"
+routingtable[0].route[5].hop[0] "route:content/music-direct"
+routingtable[0].route[6].name "music-index"
+routingtable[0].route[6].hop[0] "route:content/music-index"
+routingtable[0].route[7].name "storage/cluster.music"
+routingtable[0].route[7].hop[0] "route:content/music"
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/searchdefinitions/music.sd b/config-model/src/test/cfg/routing/contentsimpleconfig/searchdefinitions/music.sd
new file mode 100644
index 00000000000..136efeafaf6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml b/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml
new file mode 100644
index 00000000000..b46e126444f
--- /dev/null
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <content version="1.0" id="c">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+ <group name="mygroup">
+ <node hostalias="node1" distribution-key="0" />
+ </group>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/routing/defaultconfig/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/defaultconfig/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..8b137891791
--- /dev/null
+++ b/config-model/src/test/cfg/routing/defaultconfig/documentrouteselectorpolicy.cfg
@@ -0,0 +1 @@
+
diff --git a/config-model/src/test/cfg/routing/defaultconfig/hosts.xml b/config-model/src/test/cfg/routing/defaultconfig/hosts.xml
new file mode 100755
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/defaultconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/defaultconfig/messagebus.cfg b/config-model/src/test/cfg/routing/defaultconfig/messagebus.cfg
new file mode 100755
index 00000000000..bddd1de480c
--- /dev/null
+++ b/config-model/src/test/cfg/routing/defaultconfig/messagebus.cfg
@@ -0,0 +1,6 @@
+routingtable[0].protocol "document"
+routingtable[0].route[0].name "aliasme"
+routingtable[0].route[0].hop[0] "docproc/cluster.music.indexing/*/chain.music.indexing"
+routingtable[0].route[0].hop[1] "search/search.music"
+routingtable[0].route[1].name "default"
+routingtable[0].route[1].hop[0] "route:aliasme"
diff --git a/config-model/src/test/cfg/routing/defaultconfig/services.xml b/config-model/src/test/cfg/routing/defaultconfig/services.xml
new file mode 100755
index 00000000000..03e6ac9ae9c
--- /dev/null
+++ b/config-model/src/test/cfg/routing/defaultconfig/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document" verify="false">
+ <route name="aliasme" hops="docproc/cluster.music.indexing/*/chain.music.indexing search/search.music" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/duplicatehop/errors.txt b/config-model/src/test/cfg/routing/duplicatehop/errors.txt
new file mode 100755
index 00000000000..ca0e52d6fb3
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicatehop/errors.txt
@@ -0,0 +1 @@
+Hop 'foo' in routing table 'document' is defined 2 times.
diff --git a/config-model/src/test/cfg/routing/duplicatehop/hosts.xml b/config-model/src/test/cfg/routing/duplicatehop/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicatehop/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/duplicatehop/services.xml b/config-model/src/test/cfg/routing/duplicatehop/services.xml
new file mode 100755
index 00000000000..e69f2bf5798
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicatehop/services.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="bar/baz" />
+ <hop name="foo" selector="baz/cox" />
+ </routingtable>
+ <services protocol="document">
+ <service name="bar/baz" />
+ <service name="baz/cox" />
+ </services>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/duplicateroute/errors.txt b/config-model/src/test/cfg/routing/duplicateroute/errors.txt
new file mode 100755
index 00000000000..2fd943e5a27
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicateroute/errors.txt
@@ -0,0 +1 @@
+Route 'foo' in routing table 'document' is defined 2 times.
diff --git a/config-model/src/test/cfg/routing/duplicateroute/hosts.xml b/config-model/src/test/cfg/routing/duplicateroute/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicateroute/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/duplicateroute/services.xml b/config-model/src/test/cfg/routing/duplicateroute/services.xml
new file mode 100755
index 00000000000..33fc9a12717
--- /dev/null
+++ b/config-model/src/test/cfg/routing/duplicateroute/services.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="foo" hops="bar" />
+ <route name="foo" hops="baz" />
+ </routingtable>
+ <services protocol="document">
+ <service name="bar" />
+ <service name="baz" />
+ </services>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/emptyhop/errors.txt b/config-model/src/test/cfg/routing/emptyhop/errors.txt
new file mode 100755
index 00000000000..85317424e5b
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyhop/errors.txt
@@ -0,0 +1 @@
+For hop 'foo' in routing table 'document'; Failed to parse empty string.
diff --git a/config-model/src/test/cfg/routing/emptyhop/hosts.xml b/config-model/src/test/cfg/routing/emptyhop/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyhop/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/emptyhop/services.xml b/config-model/src/test/cfg/routing/emptyhop/services.xml
new file mode 100644
index 00000000000..1cb8136219b
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyhop/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/emptyroute/errors.txt b/config-model/src/test/cfg/routing/emptyroute/errors.txt
new file mode 100755
index 00000000000..66f38f6cabe
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyroute/errors.txt
@@ -0,0 +1 @@
+Route 'foo' in routing table 'document' has no hops.
diff --git a/config-model/src/test/cfg/routing/emptyroute/hosts.xml b/config-model/src/test/cfg/routing/emptyroute/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyroute/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/emptyroute/services.xml b/config-model/src/test/cfg/routing/emptyroute/services.xml
new file mode 100644
index 00000000000..4112fdf2062
--- /dev/null
+++ b/config-model/src/test/cfg/routing/emptyroute/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="foo" hops="" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/hopconfig/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/hopconfig/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..8b137891791
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopconfig/documentrouteselectorpolicy.cfg
@@ -0,0 +1 @@
+
diff --git a/config-model/src/test/cfg/routing/hopconfig/hosts.xml b/config-model/src/test/cfg/routing/hopconfig/hosts.xml
new file mode 100755
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/hopconfig/messagebus.cfg b/config-model/src/test/cfg/routing/hopconfig/messagebus.cfg
new file mode 100755
index 00000000000..f15f89f3a58
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopconfig/messagebus.cfg
@@ -0,0 +1,15 @@
+routingtable[0].protocol "document"
+routingtable[0].hop[0].name "backdoor"
+routingtable[0].hop[0].selector "search/cluster.music/[SearchRow:1]/[SearchColumn:1]/feed-destination"
+routingtable[0].hop[0].recipient[0] "search/cluster.music/r0/c0/feed-destination"
+routingtable[0].hop[0].recipient[1] "search/cluster.music/r0/c1/feed-destination"
+routingtable[0].hop[0].recipient[2] "search/cluster.music/r1/c0/feed-destination"
+routingtable[0].hop[0].recipient[3] "search/cluster.music/r1/c1/feed-destination"
+routingtable[0].hop[0].recipient[4] "search/cluster.music/r0/c0/feed-destination"
+routingtable[0].hop[0].recipient[5] "search/cluster.music/r0/c1/feed-destination"
+routingtable[0].hop[0].recipient[6] "search/cluster.music/r1/c0/feed-destination"
+routingtable[0].hop[0].recipient[7] "search/cluster.music/r1/c1/feed-destination"
+routingtable[0].hop[0].ignoreresult false
+routingtable[0].hop[1].name "foo"
+routingtable[0].hop[1].selector "bar"
+routingtable[0].hop[1].ignoreresult true
diff --git a/config-model/src/test/cfg/routing/hopconfig/services.xml b/config-model/src/test/cfg/routing/hopconfig/services.xml
new file mode 100755
index 00000000000..87b18f4ceda
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopconfig/services.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document" verify="false">
+ <hop name="backdoor" selector=
+ "search/cluster.music/[SearchRow:1]/[SearchColumn:1]/feed-destination">
+ <recipient session="search/cluster.music/r0/c0/feed-destination" />
+ <recipient session="search/cluster.music/r0/c1/feed-destination" />
+ <recipient session="search/cluster.music/r1/c0/feed-destination" />
+ <recipient session="search/cluster.music/r1/c1/feed-destination" />
+ <recipient session="search/cluster.music/r0/c0/feed-destination" />
+ <recipient session="search/cluster.music/r0/c1/feed-destination" />
+ <recipient session="search/cluster.music/r1/c0/feed-destination" />
+ <recipient session="search/cluster.music/r1/c1/feed-destination" />
+ </hop>
+ <hop name="foo" selector="bar" ignore-result="true" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/hoperror/errors.txt b/config-model/src/test/cfg/routing/hoperror/errors.txt
new file mode 100755
index 00000000000..fd0ec8b453c
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperror/errors.txt
@@ -0,0 +1 @@
+For hop 'foo' in routing table 'document'; Failed to completely parse 'bar/baz cox'.
diff --git a/config-model/src/test/cfg/routing/hoperror/hosts.xml b/config-model/src/test/cfg/routing/hoperror/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperror/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/hoperror/services.xml b/config-model/src/test/cfg/routing/hoperror/services.xml
new file mode 100644
index 00000000000..f31a60d03d7
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperror/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="bar/baz cox" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/hoperrorinrecipient/errors.txt b/config-model/src/test/cfg/routing/hoperrorinrecipient/errors.txt
new file mode 100755
index 00000000000..339a569bf6e
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinrecipient/errors.txt
@@ -0,0 +1 @@
+For recipient '[baz]]' in hop 'foo' in routing table 'document'; Unexpected token ']' in '[baz]]'
diff --git a/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml b/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml b/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml
new file mode 100644
index 00000000000..e2a0a5827be
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="[bar]">
+ <recipient session="[baz]]" />
+ </hop>
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/hoperrorinroute/errors.txt b/config-model/src/test/cfg/routing/hoperrorinroute/errors.txt
new file mode 100755
index 00000000000..4640a965903
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinroute/errors.txt
@@ -0,0 +1 @@
+For hop 1 in route 'foo' in routing table 'document'; Unexpected token ']' in '[bar]] baz'
diff --git a/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml b/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/hoperrorinroute/services.xml b/config-model/src/test/cfg/routing/hoperrorinroute/services.xml
new file mode 100644
index 00000000000..61a334440fc
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hoperrorinroute/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="foo" hops="[bar]] baz" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/hopnotfound/errors.txt b/config-model/src/test/cfg/routing/hopnotfound/errors.txt
new file mode 100755
index 00000000000..8b999742157
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopnotfound/errors.txt
@@ -0,0 +1 @@
+Hop 1 in route 'foo' in routing table 'document' references 'bar' which is neither a service, a route nor another hop.
diff --git a/config-model/src/test/cfg/routing/hopnotfound/hosts.xml b/config-model/src/test/cfg/routing/hopnotfound/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopnotfound/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/hopnotfound/services.xml b/config-model/src/test/cfg/routing/hopnotfound/services.xml
new file mode 100644
index 00000000000..ed859c34a8f
--- /dev/null
+++ b/config-model/src/test/cfg/routing/hopnotfound/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="foo" hops="bar" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/invalidstoragepolicy/errors.txt b/config-model/src/test/cfg/routing/invalidstoragepolicy/errors.txt
new file mode 100644
index 00000000000..797dee3fd88
--- /dev/null
+++ b/config-model/src/test/cfg/routing/invalidstoragepolicy/errors.txt
@@ -0,0 +1 @@
+Can't use storage policy with only slobrok in 5.0 and hierarchical grouping \ No newline at end of file
diff --git a/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml b/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml b/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml
new file mode 100644
index 00000000000..806e1cde02c
--- /dev/null
+++ b/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <route name="foo" hops="[Storage:cluster=storage;slobroks=donald.duck.example.com:14020"/>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/mismatchedrecipient/errors.txt b/config-model/src/test/cfg/routing/mismatchedrecipient/errors.txt
new file mode 100755
index 00000000000..7be10cc0c6f
--- /dev/null
+++ b/config-model/src/test/cfg/routing/mismatchedrecipient/errors.txt
@@ -0,0 +1 @@
+Selector 'bar/[baz]/cox' does not match recipient 'cox/0/bar' in hop 'foo' in routing table 'document'.
diff --git a/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml b/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml b/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml
new file mode 100644
index 00000000000..32a4c99066e
--- /dev/null
+++ b/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="bar/[baz]/cox">
+ <recipient session="cox/0/bar" />
+ </hop>
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/replacehop/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/replacehop/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..375e89f7419
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replacehop/documentrouteselectorpolicy.cfg
@@ -0,0 +1,3 @@
+route[0].name "music"
+route[0].selector "(music)"
+route[0].feed ""
diff --git a/config-model/src/test/cfg/routing/replacehop/hosts.xml b/config-model/src/test/cfg/routing/replacehop/hosts.xml
new file mode 100755
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replacehop/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/replacehop/messagebus.cfg b/config-model/src/test/cfg/routing/replacehop/messagebus.cfg
new file mode 100755
index 00000000000..ad8fb260824
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replacehop/messagebus.cfg
@@ -0,0 +1,22 @@
+routingtable[0].protocol "document"
+routingtable[0].hop[0].name "docproc/cluster.music.indexing/chain.indexing"
+routingtable[0].hop[0].selector "[LoadBalancer:cluster=docproc/cluster.music.indexing;session=chain.indexing]"
+routingtable[0].hop[0].ignoreresult false
+routingtable[0].hop[1].name "indexing"
+routingtable[0].hop[1].selector "[DocumentRouteSelector]"
+routingtable[0].hop[1].recipient[0] "music"
+routingtable[0].hop[1].ignoreresult false
+routingtable[0].hop[2].name "search/cluster.music"
+routingtable[0].hop[2].selector "foo"
+routingtable[0].hop[2].ignoreresult false
+routingtable[0].route[0].name "default"
+routingtable[0].route[0].hop[0] "indexing"
+routingtable[0].route[1].name "music"
+routingtable[0].route[1].hop[0] "[MessageType:music]"
+routingtable[0].route[2].name "music-direct"
+routingtable[0].route[2].hop[0] "[Content:cluster=music]"
+routingtable[0].route[3].name "music-index"
+routingtable[0].route[3].hop[0] "docproc/cluster.music.indexing/chain.indexing"
+routingtable[0].route[3].hop[1] "[Content:cluster=music]"
+routingtable[0].route[4].name "storage/cluster.music"
+routingtable[0].route[4].hop[0] "route:music"
diff --git a/config-model/src/test/cfg/routing/replacehop/searchdefinitions/music.sd b/config-model/src/test/cfg/routing/replacehop/searchdefinitions/music.sd
new file mode 100755
index 00000000000..6c6c3e15783
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replacehop/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/routing/replacehop/services.xml b/config-model/src/test/cfg/routing/replacehop/services.xml
new file mode 100755
index 00000000000..1baaf6a9af0
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replacehop/services.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <content id="music" version="1.0">
+ <redundancy>1</redundancy>
+ <nodes>
+ <node hostalias="node1" distribution-key="0"/>
+ </nodes>
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+ </content>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="search/cluster.music" selector="foo" />
+ </routingtable>
+ <services protocol="document">
+ <service name="foo" />
+ </services>
+ </routing>
+
+</services>
diff --git a/config-model/src/test/cfg/routing/replaceroute/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/replaceroute/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..375e89f7419
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replaceroute/documentrouteselectorpolicy.cfg
@@ -0,0 +1,3 @@
+route[0].name "music"
+route[0].selector "(music)"
+route[0].feed ""
diff --git a/config-model/src/test/cfg/routing/replaceroute/hosts.xml b/config-model/src/test/cfg/routing/replaceroute/hosts.xml
new file mode 100755
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replaceroute/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/replaceroute/messagebus.cfg b/config-model/src/test/cfg/routing/replaceroute/messagebus.cfg
new file mode 100755
index 00000000000..e9389a2a6d9
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replaceroute/messagebus.cfg
@@ -0,0 +1,19 @@
+routingtable[0].protocol "document"
+routingtable[0].hop[0].name "docproc/cluster.music.indexing/chain.indexing"
+routingtable[0].hop[0].selector "[LoadBalancer:cluster=docproc/cluster.music.indexing;session=chain.indexing]"
+routingtable[0].hop[0].ignoreresult false
+routingtable[0].hop[1].name "indexing"
+routingtable[0].hop[1].selector "[DocumentRouteSelector]"
+routingtable[0].hop[1].recipient[0] "music"
+routingtable[0].hop[1].ignoreresult false
+routingtable[0].route[0].name "default"
+routingtable[0].route[0].hop[0] "foo"
+routingtable[0].route[1].name "music"
+routingtable[0].route[1].hop[0] "[MessageType:music]"
+routingtable[0].route[2].name "music-direct"
+routingtable[0].route[2].hop[0] "[Content:cluster=music]"
+routingtable[0].route[3].name "music-index"
+routingtable[0].route[3].hop[0] "docproc/cluster.music.indexing/chain.indexing"
+routingtable[0].route[3].hop[1] "[Content:cluster=music]"
+routingtable[0].route[4].name "storage/cluster.music"
+routingtable[0].route[4].hop[0] "route:music"
diff --git a/config-model/src/test/cfg/routing/replaceroute/searchdefinitions/music.sd b/config-model/src/test/cfg/routing/replaceroute/searchdefinitions/music.sd
new file mode 100755
index 00000000000..6c6c3e15783
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replaceroute/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/routing/replaceroute/services.xml b/config-model/src/test/cfg/routing/replaceroute/services.xml
new file mode 100755
index 00000000000..7c39e37e002
--- /dev/null
+++ b/config-model/src/test/cfg/routing/replaceroute/services.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+ <content version="1.0" id="music">
+ <redundancy>1</redundancy>
+ <nodes>
+ <node hostalias="node1" distribution-key="0"/>
+ </nodes>
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+ </content>
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="default" hops="foo" />
+ </routingtable>
+ <services protocol="document">
+ <service name="foo" />
+ </services>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/routeconfig/documentrouteselectorpolicy.cfg b/config-model/src/test/cfg/routing/routeconfig/documentrouteselectorpolicy.cfg
new file mode 100755
index 00000000000..8b137891791
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routeconfig/documentrouteselectorpolicy.cfg
@@ -0,0 +1 @@
+
diff --git a/config-model/src/test/cfg/routing/routeconfig/hosts.xml b/config-model/src/test/cfg/routing/routeconfig/hosts.xml
new file mode 100755
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routeconfig/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/routeconfig/messagebus.cfg b/config-model/src/test/cfg/routing/routeconfig/messagebus.cfg
new file mode 100755
index 00000000000..556cbef7556
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routeconfig/messagebus.cfg
@@ -0,0 +1,7 @@
+routingtable[0].protocol "document"
+routingtable[0].route[0].name "backdoor"
+routingtable[0].route[0].hop[0] "docproc/cluster.music.indexing/*/chain.music.indexing"
+routingtable[0].route[0].hop[1] "backdoor"
+routingtable[0].route[1].name "default"
+routingtable[0].route[1].hop[0] "docproc/cluster.blacklist/*/chain.blacklist"
+routingtable[0].route[1].hop[1] "indexing"
diff --git a/config-model/src/test/cfg/routing/routeconfig/services.xml b/config-model/src/test/cfg/routing/routeconfig/services.xml
new file mode 100755
index 00000000000..bf004ab0cf9
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routeconfig/services.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document" verify="false">
+ <route name="default" hops="docproc/cluster.blacklist/*/chain.blacklist indexing" />
+ <route name="backdoor" hops="docproc/cluster.music.indexing/*/chain.music.indexing backdoor" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/routenotfound/errors.txt b/config-model/src/test/cfg/routing/routenotfound/errors.txt
new file mode 100755
index 00000000000..a2cd1a1a6f1
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfound/errors.txt
@@ -0,0 +1 @@
+Hop 'foo' in routing table 'document' references route 'bar' which does not exist.
diff --git a/config-model/src/test/cfg/routing/routenotfound/hosts.xml b/config-model/src/test/cfg/routing/routenotfound/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfound/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/routenotfound/services.xml b/config-model/src/test/cfg/routing/routenotfound/services.xml
new file mode 100644
index 00000000000..72267cf394d
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfound/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="route:bar" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/routenotfoundinroute/errors.txt b/config-model/src/test/cfg/routing/routenotfoundinroute/errors.txt
new file mode 100755
index 00000000000..536e82a09b1
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfoundinroute/errors.txt
@@ -0,0 +1 @@
+Hop 1 in route 'foo' in routing table 'document' references route 'bar' which does not exist.
diff --git a/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml b/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml b/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml
new file mode 100644
index 00000000000..0083d36933f
--- /dev/null
+++ b/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <route name="foo" hops="route:bar" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/servicenotfound/errors.txt b/config-model/src/test/cfg/routing/servicenotfound/errors.txt
new file mode 100755
index 00000000000..430cd317a90
--- /dev/null
+++ b/config-model/src/test/cfg/routing/servicenotfound/errors.txt
@@ -0,0 +1 @@
+Hop 'foo' in routing table 'document' references 'bar/baz' which is neither a service, a route nor another hop.
diff --git a/config-model/src/test/cfg/routing/servicenotfound/hosts.xml b/config-model/src/test/cfg/routing/servicenotfound/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/servicenotfound/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/servicenotfound/services.xml b/config-model/src/test/cfg/routing/servicenotfound/services.xml
new file mode 100644
index 00000000000..9f3822eb89d
--- /dev/null
+++ b/config-model/src/test/cfg/routing/servicenotfound/services.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="bar/baz" />
+ </routingtable>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/routing/unexpectedrecipient/errors.txt b/config-model/src/test/cfg/routing/unexpectedrecipient/errors.txt
new file mode 100755
index 00000000000..3972c29adcf
--- /dev/null
+++ b/config-model/src/test/cfg/routing/unexpectedrecipient/errors.txt
@@ -0,0 +1 @@
+Hop 'foo' in routing table 'document' has recipients but no policy directive.
diff --git a/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml b/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml b/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml
new file mode 100644
index 00000000000..aa0ac5c896a
--- /dev/null
+++ b/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1" />
+ <logserver hostalias="node1" />
+ </admin>
+
+ <routing version="1.0">
+ <routingtable protocol="document">
+ <hop name="foo" selector="bar">
+ <recipient session="baz" />
+ </hop>
+ </routingtable>
+ <services protocol="document">
+ <service name="bar" />
+ <service name="baz" />
+ </services>
+ </routing>
+</services>
diff --git a/config-model/src/test/cfg/search/compare/complex/hosts/dev-mathiasm/sentinel/.gitignore b/config-model/src/test/cfg/search/compare/complex/hosts/dev-mathiasm/sentinel/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/hosts/dev-mathiasm/sentinel/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/hosts/zarya/sentinel/.gitignore b/config-model/src/test/cfg/search/compare/complex/hosts/zarya/sentinel/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/hosts/zarya/sentinel/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..c5b1dfef610
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19125
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r1/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r1/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..7aed9bdc244
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c0/r1/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19131
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..49e5f59b9be
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19137
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r1/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r1/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..8d5d4fdde7f
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/c1/r1/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19143
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r1/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c0/r1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r0/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r1/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/g0/c1/r1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..be7d8e44c16
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19110
+slobrok.name "search/cluster.music/rtx/0/clustercontroller"
+slobrok.config search/cluster.music/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/1/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/1/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..f39dc6adc03
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/rtx/1/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19112
+slobrok.name "search/cluster.music/rtx/1/clustercontroller"
+slobrok.config search/cluster.music/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..e9368ca2662
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19114
+healthport 19116
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19115
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..bde0b169ef4
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,66 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 1
+dataset[0].numparts 2
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 2
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19121"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].engine[1].name_and_port "tcp/zarya:19127"
+dataset[0].engine[1].partid 0
+dataset[0].engine[1].rowid 1
+dataset[0].engine[1].subdatasetid 0
+dataset[0].engine[1].refcost 1
+dataset[0].engine[1].overridepartids true
+dataset[0].engine[2].name_and_port "tcp/zarya:19133"
+dataset[0].engine[2].partid 1
+dataset[0].engine[2].rowid 0
+dataset[0].engine[2].subdatasetid 0
+dataset[0].engine[2].refcost 1
+dataset[0].engine[2].overridepartids true
+dataset[0].engine[3].name_and_port "tcp/zarya:19139"
+dataset[0].engine[3].partid 1
+dataset[0].engine[3].rowid 1
+dataset[0].engine[3].subdatasetid 0
+dataset[0].engine[3].refcost 1
+dataset[0].engine[3].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..aa48d5fec79
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19117
+healthport 19119
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19118
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/partitions.MODEL.cfg
new file mode 100644
index 00000000000..bde0b169ef4
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.music/tlds/tld.1/partitions.MODEL.cfg
@@ -0,0 +1,66 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 1
+dataset[0].numparts 2
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 2
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19121"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].engine[1].name_and_port "tcp/zarya:19127"
+dataset[0].engine[1].partid 0
+dataset[0].engine[1].rowid 1
+dataset[0].engine[1].subdatasetid 0
+dataset[0].engine[1].refcost 1
+dataset[0].engine[1].overridepartids true
+dataset[0].engine[2].name_and_port "tcp/zarya:19133"
+dataset[0].engine[2].partid 1
+dataset[0].engine[2].rowid 0
+dataset[0].engine[2].subdatasetid 0
+dataset[0].engine[2].refcost 1
+dataset[0].engine[2].overridepartids true
+dataset[0].engine[3].name_and_port "tcp/zarya:19139"
+dataset[0].engine[3].partid 1
+dataset[0].engine[3].rowid 1
+dataset[0].engine[3].subdatasetid 0
+dataset[0].engine[3].refcost 1
+dataset[0].engine[3].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..5c9f46bf8ce
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19156
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r1/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r1/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..69f91eab48c
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c0/r1/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19105
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..eebb1cb6b40
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19111
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r1/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r1/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..82e9aafc5a8
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/c1/r1/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19162
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r1/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c0/r1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r0/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r1/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/g0/c1/r1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx-rtlogic.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx-rtlogic.MODEL.cfg
new file mode 100644
index 00000000000..9c332f32703
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx-rtlogic.MODEL.cfg
@@ -0,0 +1,19 @@
+parts 2
+minnodesperpart 1
+maxbadparts 0
+cluster.rtc[0].spec "tcp/zarya:19151"
+cluster.rtc[0].part 0
+cluster.rtc[0].row 0
+cluster.rtc[0].feedservice "search/cluster.rt/c0/r0/feed-destination"
+cluster.rtc[1].spec "tcp/dev-mathiasm:19100"
+cluster.rtc[1].part 0
+cluster.rtc[1].row 1
+cluster.rtc[1].feedservice "search/cluster.rt/c0/r1/feed-destination"
+cluster.rtc[2].spec "tcp/dev-mathiasm:19106"
+cluster.rtc[2].part 1
+cluster.rtc[2].row 0
+cluster.rtc[2].feedservice "search/cluster.rt/c1/r0/feed-destination"
+cluster.rtc[3].spec "tcp/zarya:19157"
+cluster.rtc[3].part 1
+cluster.rtc[3].row 1
+cluster.rtc[3].feedservice "search/cluster.rt/c1/r1/feed-destination"
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..aa557a9ae04
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19144
+slobrok.name "search/cluster.rt/rtx/0/clustercontroller"
+slobrok.config search/cluster.rt/rtx
+servicemonitor.autodisable true
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx-rtlogic.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx-rtlogic.MODEL.cfg
new file mode 100644
index 00000000000..9c332f32703
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx-rtlogic.MODEL.cfg
@@ -0,0 +1,19 @@
+parts 2
+minnodesperpart 1
+maxbadparts 0
+cluster.rtc[0].spec "tcp/zarya:19151"
+cluster.rtc[0].part 0
+cluster.rtc[0].row 0
+cluster.rtc[0].feedservice "search/cluster.rt/c0/r0/feed-destination"
+cluster.rtc[1].spec "tcp/dev-mathiasm:19100"
+cluster.rtc[1].part 0
+cluster.rtc[1].row 1
+cluster.rtc[1].feedservice "search/cluster.rt/c0/r1/feed-destination"
+cluster.rtc[2].spec "tcp/dev-mathiasm:19106"
+cluster.rtc[2].part 1
+cluster.rtc[2].row 0
+cluster.rtc[2].feedservice "search/cluster.rt/c1/r0/feed-destination"
+cluster.rtc[3].spec "tcp/zarya:19157"
+cluster.rtc[3].part 1
+cluster.rtc[3].row 1
+cluster.rtc[3].feedservice "search/cluster.rt/c1/r1/feed-destination"
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..1407c3ff209
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/rtx/1/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19146
+slobrok.name "search/cluster.rt/rtx/1/clustercontroller"
+slobrok.config search/cluster.rt/rtx
+servicemonitor.autodisable true
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..ac173575923
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19148
+healthport 19150
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19149
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..4ef408e01ce
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/cluster.rt/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,66 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 1
+dataset[0].numparts 2
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 1
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19152"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].engine[1].name_and_port "tcp/dev-mathiasm:19101"
+dataset[0].engine[1].partid 0
+dataset[0].engine[1].rowid 1
+dataset[0].engine[1].subdatasetid 0
+dataset[0].engine[1].refcost 1
+dataset[0].engine[1].overridepartids true
+dataset[0].engine[2].name_and_port "tcp/dev-mathiasm:19107"
+dataset[0].engine[2].partid 1
+dataset[0].engine[2].rowid 0
+dataset[0].engine[2].subdatasetid 0
+dataset[0].engine[2].refcost 1
+dataset[0].engine[2].overridepartids true
+dataset[0].engine[3].name_and_port "tcp/zarya:19158"
+dataset[0].engine[3].partid 1
+dataset[0].engine[3].rowid 1
+dataset[0].engine[3].subdatasetid 0
+dataset[0].engine[3].refcost 1
+dataset[0].engine[3].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.0/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.1/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.2/.gitignore b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.2/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/complex/search/qrservers/qrserver.2/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/optionals/hosts/zarya/sentinel/.gitignore b/config-model/src/test/cfg/search/compare/optionals/hosts/zarya/sentinel/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/hosts/zarya/sentinel/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..c5b1dfef610
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19125
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..d0888e9be96
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19115
+slobrok.name "search/cluster.music/rtx/0/clustercontroller"
+slobrok.config search/cluster.music/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..aa48d5fec79
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19117
+healthport 19119
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19118
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..da5203914cb
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,48 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 0
+dataset[0].numparts 1
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 1
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19121"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.0/.gitignore b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.1/.gitignore b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.2/.gitignore b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.2/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/optionals/search/qrservers/qrserver.2/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/hosts/zarya/sentinel/.gitignore b/config-model/src/test/cfg/search/compare/simple/hosts/zarya/sentinel/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/hosts/zarya/sentinel/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..53dcc3f9686
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19118
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx-rtlogic.MODEL.cfg b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx-rtlogic.MODEL.cfg
new file mode 100644
index 00000000000..d8d30dc5af3
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx-rtlogic.MODEL.cfg
@@ -0,0 +1,7 @@
+parts 1
+minnodesperpart 1
+maxbadparts 0
+cluster.rtc[0].spec "tcp/zarya:19113"
+cluster.rtc[0].part 0
+cluster.rtc[0].row 0
+cluster.rtc[0].feedservice "search/cluster.music/c0/r0/feed-destination"
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..474b8c68cdb
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19108
+slobrok.name "search/cluster.music/rtx/0/clustercontroller"
+slobrok.config search/cluster.music/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..ce9e77ffdbc
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19110
+healthport 19112
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19111
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..e1c2253e6a9
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.music/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,48 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 0
+dataset[0].numparts 1
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 1
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19114"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/simple/search/cluster.streaming/.gitignore b/config-model/src/test/cfg/search/compare/simple/search/cluster.streaming/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/cluster.streaming/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/search/qrservers/qrserver.0/.gitignore b/config-model/src/test/cfg/search/compare/simple/search/qrservers/qrserver.0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/search/qrservers/qrserver.0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/client/.gitignore b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/client/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/client/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/distributor/0/.gitignore b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/distributor/0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/distributor/0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/fleetcontroller/0/.gitignore b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/fleetcontroller/0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/fleetcontroller/0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/gateway/0/.gitignore b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/gateway/0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/gateway/0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/storage/0/.gitignore b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/storage/0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/simple/storage/cluster.storage/storage/0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/hosts/zarya/sentinel/.gitignore b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/hosts/zarya/sentinel/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/hosts/zarya/sentinel/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..6dabdfc6af7
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19115
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx-rtlogic.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx-rtlogic.MODEL.cfg
new file mode 100644
index 00000000000..2a20e0bca1e
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx-rtlogic.MODEL.cfg
@@ -0,0 +1,7 @@
+parts 1
+minnodesperpart 1
+maxbadparts 0
+cluster.rtc[0].spec "tcp/zarya:19110"
+cluster.rtc[0].part 0
+cluster.rtc[0].row 0
+cluster.rtc[0].feedservice "search/cluster.music1/c0/r0/feed-destination"
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..3c1b537236a
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19105
+slobrok.name "search/cluster.music1/rtx/0/clustercontroller"
+slobrok.config search/cluster.music1/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..d4135d10175
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19107
+healthport 19109
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19108
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..ef99fc4f452
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music1/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,48 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 0
+dataset[0].numparts 1
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 1
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19111"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r0/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r0/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..b6d62fc678b
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r0/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19126
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r1/translogserver.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r1/translogserver.MODEL.cfg
new file mode 100644
index 00000000000..887eaa6b634
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/c0/r1/translogserver.MODEL.cfg
@@ -0,0 +1,7 @@
+listenport 19132
+filesizemax 50000000
+servername "tls"
+basedir "tls"
+usefsync false
+maxthreads 4
+crcmethod xxh64
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r0/.gitignore b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r0/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r1/.gitignore b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r1/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/g0/c0/r1/.gitignore
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/rtx/0/pan-rtx.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/rtx/0/pan-rtx.MODEL.cfg
new file mode 100644
index 00000000000..c00fcc456d6
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/rtx/0/pan-rtx.MODEL.cfg
@@ -0,0 +1,6 @@
+port 19116
+slobrok.name "search/cluster.music2/rtx/0/clustercontroller"
+slobrok.config search/cluster.music2/rtx
+servicemonitor.autodisable false
+servicemonitor.autoenable false
+servicemonitor.timeout 120
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/fdispatchrc.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/fdispatchrc.MODEL.cfg
new file mode 100644
index 00000000000..ee8b6cdd963
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/fdispatchrc.MODEL.cfg
@@ -0,0 +1,23 @@
+fnetlockwait 20.0
+defaultslowdocsumlimitbias 1.0
+defaultslowdocsumlimitfactor 2.0
+defaultslowquerylimitbias 1.0
+defaultslowquerylimitfactor 2.0
+frtport 19118
+healthport 19120
+indexswitchminsearchgrace 0.0
+indexswitchmindocsumgrace 0.0
+indexswitchmaxsearchgrace 0.0
+indexswitchmaxdocsumgrace 64.0
+maxsocksilent 50.0
+maxthreads 1000
+transportthreads 1
+partition 0
+ptport 19119
+transport ""
+transportnodelay true
+transportdirectwrite false
+packetcompresslimit 1024
+packetcompresslevel 3
+packetcompresstype LZ4
+dispatchlevel 0
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/partitions.MODEL.cfg b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/partitions.MODEL.cfg
new file mode 100644
index 00000000000..a03c9e58557
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/cluster.music2/tlds/tld.0/partitions.MODEL.cfg
@@ -0,0 +1,54 @@
+dataset[0].id 0
+dataset[0].refcost 1
+dataset[0].partbits 8
+dataset[0].rowbits 1
+dataset[0].numparts 1
+dataset[0].firstpart 0
+dataset[0].minpartitions 0
+dataset[0].mpp 1
+dataset[0].maxnodesdownperfixedrow 0
+dataset[0].useroundrobinforfixedrow true
+dataset[0].allowsearchonwarmupnodes true
+dataset[0].beforewarmupdelay 600.0
+dataset[0].engine[0].name_and_port "tcp/zarya:19122"
+dataset[0].engine[0].partid 0
+dataset[0].engine[0].rowid 0
+dataset[0].engine[0].subdatasetid 0
+dataset[0].engine[0].refcost 1
+dataset[0].engine[0].overridepartids true
+dataset[0].engine[1].name_and_port "tcp/zarya:19128"
+dataset[0].engine[1].partid 0
+dataset[0].engine[1].rowid 1
+dataset[0].engine[1].subdatasetid 0
+dataset[0].engine[1].refcost 1
+dataset[0].engine[1].overridepartids true
+dataset[0].maxhitspernode 2147483647
+dataset[0].estparts 0
+dataset[0].estpartcutoff 0
+dataset[0].minactive 500
+dataset[0].maxactive 500
+dataset[0].cutoffactive 1000
+dataset[0].minestactive 500
+dataset[0].maxestactive 1000
+dataset[0].cutoffestactive 1000
+dataset[0].queuedrainrate 400.0
+dataset[0].queuedrainmax 40.0
+dataset[0].slowquerylimitfactor 0.0
+dataset[0].slowquerylimitbias 100.0
+dataset[0].slowdocsumlimitfactor 0.0
+dataset[0].slowdocsumlimitbias 100.0
+dataset[0].monitorinterval 1.0
+dataset[0].higher_coverage_maxsearchwait 1.0
+dataset[0].higher_coverage_minsearchwait 0.0
+dataset[0].higher_coverage_basesearchwait 0.1
+dataset[0].minimal_searchcoverage 100.0
+dataset[0].higher_coverage_maxdocsumwait 0.3
+dataset[0].higher_coverage_mindocsumwait 0.1
+dataset[0].higher_coverage_basedocsumwait 0.1
+dataset[0].minimal_docsumcoverage 100.0
+dataset[0].querydistribution AUTOMATIC
+dataset[0].min_group_coverage 100.0
+dataset[0].min_activedocs_coverage 97.0
+dataset[0].latency_decay_rate 10000.0
+dataset[0].querydistributionsamplesize 10000
+dataset[0].querydistributionconfidenceinterval 99.9
diff --git a/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/qrservers/qrserver.0/.gitignore b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/qrservers/qrserver.0/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/config-model/src/test/cfg/search/compare/twoFeedTargetClusters/search/qrservers/qrserver.0/.gitignore
diff --git a/config-model/src/test/cfg/search/data/nextgen-simple-v2/searchdefinitions/nextgendoc.sd b/config-model/src/test/cfg/search/data/nextgen-simple-v2/searchdefinitions/nextgendoc.sd
new file mode 100644
index 00000000000..461e7123c01
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/nextgen-simple-v2/searchdefinitions/nextgendoc.sd
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search nextgendoc {
+ document nextgendoc {
+ field body type string {
+ indexing: summary | index
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/nextgen-simple-v2/services.xml b/config-model/src/test/cfg/search/data/nextgen-simple-v2/services.xml
new file mode 100644
index 00000000000..cce1cf40419
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/nextgen-simple-v2/services.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+
+ <adminserver hostalias="node1" />
+
+ <logserver hostalias="node1" />
+ <slobroks>
+ <slobrok hostalias="node1" />
+ </slobroks>
+ </admin>
+
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1" />
+ </qrservers>
+ <cluster name="search" indexingmode="realtime">
+ <searchdefinitions>
+ <searchdefinition name="nextgendoc" />
+ </searchdefinitions>
+ <clustercontrollers>
+ <clustercontroller hostalias="node1" />
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1" />
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0" />
+ </searchnodes>
+ </row>
+ </cluster>
+ </search>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/onlybundles/components/testbundle.jar b/config-model/src/test/cfg/search/data/onlybundles/components/testbundle.jar
new file mode 100644
index 00000000000..69f6e335092
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/onlybundles/components/testbundle.jar
Binary files differ
diff --git a/config-model/src/test/cfg/search/data/onlybundles/services.xml b/config-model/src/test/cfg/search/data/onlybundles/services.xml
new file mode 100644
index 00000000000..427b0c6d23f
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/onlybundles/services.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ </admin>
+
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1" />
+ </qrservers>
+ <cluster name="music" indexingmode="realtime">
+ <visibilitydelay>15.7</visibilitydelay>
+ <searchdefinitions>
+ <searchdefinition name="music2" />
+ </searchdefinitions>
+ <documents selection="music" />
+ <clustercontrollers>
+ <clustercontroller hostalias="node1" />
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1" />
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0" />
+ </searchnodes>
+ </row>
+ </cluster>
+
+ </search>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTData.sd b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTData.sd
new file mode 100644
index 00000000000..274b03f247a
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTData.sd
@@ -0,0 +1,10 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Basic search definition for Travel Attraction (self) facet
+
+search TTData {
+ document TTData inherits TTPOI,TTEdge {
+
+ }
+
+}
+
diff --git a/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTEdge.sd b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTEdge.sd
new file mode 100644
index 00000000000..ce22f2f77ec
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTEdge.sd
@@ -0,0 +1,10 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+document TTEdge {
+
+# This field will contain a colon separate map for travel times per transport mode
+ field TransportMode type array<string> {
+ indexing: summary | index
+ header
+ }
+}
+
diff --git a/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTPOI.sd b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTPOI.sd
new file mode 100644
index 00000000000..d8308df4c7f
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/travel/searchdefinitions/TTPOI.sd
@@ -0,0 +1,19 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+document TTPOI {
+
+# categories associated with the POI
+ field Categories type array<string> {
+ indexing: summary | index
+ # index-to: Categories
+ header
+ }
+
+# sub catagories associated with the POI
+ field SubCategories type array<string> {
+ indexing: summary | index
+ # index-to: SubCategories
+ header
+ }
+}
+
+
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/base.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/base.sd
new file mode 100644
index 00000000000..5de7b537439
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/base.sd
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search base {
+ document base {
+ field fbase type string {
+ indexing: summary | index
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/left.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/left.sd
new file mode 100644
index 00000000000..ebb0a8e4631
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/left.sd
@@ -0,0 +1,14 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search left {
+ document left {
+ field fleft type string {
+ indexing: summary | index
+ }
+ }
+
+ rank-profile base inherits default {
+ first-phase {
+ expression: fleft
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/music.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/music.sd
new file mode 100644
index 00000000000..4b78eeae4ab
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/music.sd
@@ -0,0 +1,15 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ header
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ body
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/right.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/right.sd
new file mode 100644
index 00000000000..cf824ad102f
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/searchdefinitions/right.sd
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search right {
+ document right {
+ field fright type string {
+ indexing: summary | index
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml
new file mode 100644
index 00000000000..c5cfd7f7d79
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <content version="1.0" id="inherit">
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="left" mode="index" />
+ <document type="right" mode="index" />
+ </documents>
+ <engine>
+ <proton />
+ </engine>
+ <nodes>
+ <node hostalias="node0" distribution-key="0" />
+ </nodes>
+ </content>
+</services>
diff --git a/config-model/src/test/cfg/search/data/v2/modularsearchchains/hosts.xml b/config-model/src/test/cfg/search/data/v2/modularsearchchains/hosts.xml
new file mode 100644
index 00000000000..e2b97e374e6
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/modularsearchchains/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain2.xml b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain2.xml
new file mode 100644
index 00000000000..cbb43e26ec7
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain2.xml
@@ -0,0 +1,9 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<searchchains>
+<searcher class="com.yahoo.search.example.outsidechain2.SimpleSearcher" id="s1" bundle="mybundle"/>
+
+<searchchain id="chain2">
+ <searcher id="s1"/>
+ <searcher id="com.yahoo.search.example.chain2.SimpleSearcher2" bundle="mybundle"/>
+</searchchain>
+</searchchains>
diff --git a/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain3.xml b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain3.xml
new file mode 100644
index 00000000000..c17a84407a1
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/chain3.xml
@@ -0,0 +1,10 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<searchchains>
+<searchchain id="chain3_1">
+ <searcher id="com.yahoo.search.example.chain3_1.SimpleSearcher" bundle="mybundle"/>
+</searchchain>
+<searchchain id="chain3_2">
+ <searcher id="com.yahoo.search.example.chain3_2.SimpleSearcher" bundle="mybundle"/>
+ <searcher id="com.yahoo.search.example.chain3_2.SimpleSearcher2" bundle="mybundle"/>
+</searchchain>
+</searchchains>
diff --git a/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/default.xml b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/default.xml
new file mode 100644
index 00000000000..65c59939c49
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/modularsearchchains/search/chains/default.xml
@@ -0,0 +1,6 @@
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<searchchains>
+<searchchain id="default">
+ <searcher id="com.yahoo.search.example.default.SimpleSearcher" bundle="mybundle"/>
+</searchchain>
+</searchchains>
diff --git a/config-model/src/test/cfg/search/data/v2/modularsearchchains/services.xml b/config-model/src/test/cfg/search/data/v2/modularsearchchains/services.xml
new file mode 100644
index 00000000000..15cc4eca2ec
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/modularsearchchains/services.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <admin version="2.0">
+
+ <adminserver hostalias="node1"/>
+
+ <logserver hostalias="node1"/>
+ </admin>
+
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1"/>
+ <searchchains>
+ <searcher id="com.yahoo.search.example.inline.SimpleSearcher3" bundle="mybundle"/>
+ <searchchain id="inline">
+ <searcher id="com.yahoo.search.example.inline.SimpleSearcher" bundle="mybundle"/>
+ <searcher id="com.yahoo.search.example.inline.SimpleSearcher2" bundle="mybundle"/>
+ </searchchain>
+ </searchchains>
+ </qrservers>
+ </search>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/v2/onlybundles/components/testbundle.jar b/config-model/src/test/cfg/search/data/v2/onlybundles/components/testbundle.jar
new file mode 100644
index 00000000000..69f6e335092
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/onlybundles/components/testbundle.jar
Binary files differ
diff --git a/config-model/src/test/cfg/search/data/v2/onlybundles/services.xml b/config-model/src/test/cfg/search/data/v2/onlybundles/services.xml
new file mode 100644
index 00000000000..7d5048ba9a2
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/onlybundles/services.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ </admin>
+
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1"/>
+ </qrservers>
+ <cluster name="music">
+ <visibilitydelay>15.7</visibilitydelay>
+ <searchdefinitions>
+ <searchdefinition name="music2"/>
+ </searchdefinitions>
+ <documents selection="music"/>
+ <clustercontrollers>
+ <clustercontroller hostalias="node1"/>
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1"/>
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0"/>
+ </searchnodes>
+ </row>
+ </cluster>
+
+ </search>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/v2/proton-yamas/hosts.xml b/config-model/src/test/cfg/search/data/v2/proton-yamas/hosts.xml
new file mode 100644
index 00000000000..9215f81ad98
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/proton-yamas/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="zarya">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/search/data/v2/proton-yamas/searchdefinitions/music.sd b/config-model/src/test/cfg/search/data/v2/proton-yamas/searchdefinitions/music.sd
new file mode 100644
index 00000000000..136efeafaf6
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/proton-yamas/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/proton-yamas/services.xml b/config-model/src/test/cfg/search/data/v2/proton-yamas/services.xml
new file mode 100644
index 00000000000..226589e9835
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/proton-yamas/services.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ <yamas systemname="news_staging" interval="60"/>
+ </admin>
+
+ <container version="1.0">
+ <nodes>
+ <node hostalias="node1"/>
+ </nodes>
+ <search/>
+ </container>
+
+ <content id="music" version="1.0">
+
+ <redundancy>2</redundancy>
+
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+
+ <nodes>
+ <node hostalias="node1" distribution-key="0"/>
+ </nodes>
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/v2/stripped/services.xml b/config-model/src/test/cfg/search/data/v2/stripped/services.xml
new file mode 100644
index 00000000000..ba7ab8a052a
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/stripped/services.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ </admin>
+
+
+ <docproc version="3.0">
+ <docprocchains>
+ <docprocchain id="standalonechain">
+ <documentprocessor id="AppleDocProc"/>
+ </docprocchain>
+ </docprocchains>
+ </docproc>
+
+ <storage version="3.0">
+ <cluster redundancy="1">
+
+ <group index="0" name="0">
+ <node hostalias="node0" index="0"/>
+ </group>
+
+ <fleetcontrollers transitiontime="0">
+ <fleetcontroller hostalias="node0" index="0"/>
+ </fleetcontrollers>
+
+ </cluster>
+ </storage>
+
+</services>
diff --git a/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/hosts.xml b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/hosts.xml
new file mode 100644
index 00000000000..9215f81ad98
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/hosts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="zarya">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/searchdefinitions/music.sd b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/searchdefinitions/music.sd
new file mode 100755
index 00000000000..392e19213b1
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/searchdefinitions/music.sd
@@ -0,0 +1,13 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/services.xml b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/services.xml
new file mode 100644
index 00000000000..8c78597b5b5
--- /dev/null
+++ b/config-model/src/test/cfg/search/data/v2/twoFeedTargetClusters/services.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+ <admin version="2.0">
+ <adminserver hostalias="node1"/>
+ <logserver hostalias="node1"/>
+ </admin>
+ <search version="2.0">
+ <qrservers>
+ <qrserver hostalias="node1"/>
+ </qrservers>
+ <cluster name="music1">
+ <searchdefinitions>
+ <searchdefinition name="music"/>
+ </searchdefinitions>
+ <!-- The point with this test is to have a 'documents' tag without a 'feedname' attribute -->
+ <documents selection="music.f1"/>
+ <clustercontrollers>
+ <clustercontroller hostalias="node1"/>
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1"/>
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0"/>
+ </searchnodes>
+ </row>
+ </cluster>
+
+ <cluster name="music2">
+ <searchdefinitions>
+ <searchdefinition name="music"/>
+ </searchdefinitions>
+ <!-- The point with this test is to have a 'documents' tag without a 'feedname' attribute -->
+ <documents selection="music.f2"/>
+ <clustercontrollers>
+ <clustercontroller hostalias="node1"/>
+ </clustercontrollers>
+ <topleveldispatchers>
+ <topleveldispatcher hostalias="node1"/>
+ </topleveldispatchers>
+ <row index="0">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0"/>
+ </searchnodes>
+ </row>
+ <row index="1">
+ <searchnodes>
+ <searchnode hostalias="node1" index="0"/>
+ </searchnodes>
+ </row>
+ </cluster>
+ </search>
+</services>
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml
new file mode 100644
index 00000000000..20665c8bbd1
--- /dev/null
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="mynode1">
+ <alias>node0</alias>
+ </host>
+
+ <host name="mynode2">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/searchdefinitions/music.sd b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/searchdefinitions/music.sd
new file mode 100644
index 00000000000..4b78eeae4ab
--- /dev/null
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/searchdefinitions/music.sd
@@ -0,0 +1,15 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ header
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ body
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml
new file mode 100644
index 00000000000..e0202dc124a
--- /dev/null
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node0"/>
+ <logserver hostalias="node0"/>
+ </admin>
+
+ <content version="1.0">
+ <redundancy>2</redundancy>
+
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+
+ <tuning>
+ <cluster-controller>
+ <transition-time>60</transition-time>
+ </cluster-controller>
+ </tuning>
+
+ <group name="mycluster">
+ <node hostalias="node0" distribution-key="0" capacity="0.79"/>
+ <node hostalias="node1" distribution-key="2"/>
+ </group>
+
+ </content>
+
+</services>
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml b/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml
new file mode 100644
index 00000000000..29e61b6abc6
--- /dev/null
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="mynode1">
+ <alias>node0</alias>
+ </host>
+
+ <host name="mynode2">
+ <alias>node1</alias>
+ </host>
+
+ <host name="mynode3">
+ <alias>node2</alias>
+ </host>
+</hosts>
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/searchdefinitions/music.sd b/config-model/src/test/cfg/storage/clustercontroller_advanced/searchdefinitions/music.sd
new file mode 100644
index 00000000000..4b78eeae4ab
--- /dev/null
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/searchdefinitions/music.sd
@@ -0,0 +1,15 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f1 type string {
+ indexing: summary | index
+ # index-to: f1, all
+ header
+ }
+ field f2 type string {
+ indexing: summary | index
+ # index-to: f2, all
+ body
+ }
+ }
+}
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml b/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml
new file mode 100644
index 00000000000..9a07e1c3e87
--- /dev/null
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services>
+
+ <admin version="2.0">
+ <adminserver hostalias="node0"/>
+ <logserver hostalias="node0"/>
+ <yamas interval="60"/>
+ </admin>
+
+ <content version="1.0">
+ <redundancy>2</redundancy>
+
+ <documents>
+ <document type="music" mode="index"/>
+ </documents>
+
+ <tuning>
+ <cluster-controller>
+ <transition-time>5</transition-time>
+ <init-progress-time>2</init-progress-time>
+ <max-premature-crashes>3</max-premature-crashes>
+ <stable-state-period>240</stable-state-period>
+ <min-distributor-up-ratio>0.0</min-distributor-up-ratio>
+ <min-storage-up-ratio>0.7</min-storage-up-ratio>
+ </cluster-controller>
+ </tuning>
+
+ <group name="mycluster">
+ <node hostalias="node0" distribution-key="0"/>
+ <node hostalias="node1" distribution-key="1"/>
+ <node hostalias="node2" distribution-key="2"/>
+ </group>
+
+ </content>
+
+</services>