use of com.yahoo.container.Container in project vespa by vespa-engine.
the class QueryProfileIntegrationTestCase method testTyped.
public void testTyped() {
String configId = "dir:src/test/java/com/yahoo/search/query/profile/config/test/typed";
System.setProperty("config.id", configId);
Container container = new Container();
HandlersConfigurerTestWrapper configurer = new HandlersConfigurerTestWrapper(container, configId);
SearchHandler searchHandler = (SearchHandler) configurer.getRequestHandlerRegistry().getComponent(SearchHandler.class.getName());
// Should get "default" query profile containing the "test" search chain containing the "test" searcher
HttpRequest request = HttpRequest.createTestRequest("search", Method.GET);
// Cast to access content directly
HttpSearchResponse response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:test"));
// Should get the "test' query profile containing the "default" search chain containing the "default" searcher
request = HttpRequest.createTestRequest("search?queryProfile=test", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:default"));
// Should get "default" query profile, but override the search chain to default
request = HttpRequest.createTestRequest("search?searchChain=default", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:default"));
// Tests a profile setting hits and offset
request = HttpRequest.createTestRequest("search?queryProfile=hitsoffset", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertEquals(22, response.getQuery().getHits());
assertEquals(80, response.getQuery().getOffset());
// Tests a non-resolved profile request
request = HttpRequest.createTestRequest("search?queryProfile=none", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull("Got an error", response.getResult().hits().getError());
assertEquals("Could not resolve query profile 'none'", response.getResult().hits().getError().getDetailedMessage());
// Test overriding a sub-profile in the request
request = HttpRequest.createTestRequest("search?queryProfile=root&sub=newsub", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertEquals("newsubvalue1", response.getQuery().properties().get("sub.value1"));
assertEquals("newsubvalue2", response.getQuery().properties().get("sub.value2"));
configurer.shutdown();
}
use of com.yahoo.container.Container in project vespa by vespa-engine.
the class VespaFeedHandlerTestCase method setup.
public void setup(com.yahoo.messagebus.Error e, LoadTypeConfig loadTypeCfg, boolean autoReply, DummySessionFactory.ReplyFactory autoReplyFactory) throws Exception {
DocumentTypeManager docMan = new DocumentTypeManager();
DocumentTypeManagerConfigurer.configure(docMan, "file:" + xmlFilesPath + "documentmanager.cfg");
if (autoReply) {
if (autoReplyFactory != null) {
factory = DummySessionFactory.createWithAutoReplyFactory(autoReplyFactory);
} else {
factory = DummySessionFactory.createWithErrorAutoReply(e);
}
} else {
factory = DummySessionFactory.createDefault();
}
context = new FeedContext(new MessagePropertyProcessor(new FeederConfig(new FeederConfig.Builder()), loadTypeCfg), factory, docMan, new ClusterList(), new NullFeedMetric());
Executor threadPool = Executors.newCachedThreadPool();
feedHandler = new VespaFeedHandler(context, threadPool);
removeHandler = new VespaFeedHandlerRemove(context, threadPool);
statusHandler = new VespaFeedHandlerStatus(context, false, false, threadPool);
removeLocationHandler = new VespaFeedHandlerRemoveLocation(context, threadPool);
CallStack dpCallstack = new CallStack("bar");
dpCallstack.addLast(new TestDocProc());
dpCallstack.addLast(new TestLaterDocProc());
DocprocService myservice = new DocprocService("bar");
myservice.setCallStack(dpCallstack);
myservice.setInService(true);
ComponentRegistry<DocprocService> registry = new ComponentRegistry<DocprocService>();
registry.register(new ComponentId(myservice.getName()), myservice);
DocumentProcessingHandler handler = new DocumentProcessingHandler(registry, new ComponentRegistry<>(), new ComponentRegistry<>(), new DocumentProcessingHandlerParameters());
Container container = Container.get();
ComponentRegistry<RequestHandler> requestHandlerComponentRegistry = new ComponentRegistry<>();
requestHandlerComponentRegistry.register(new ComponentId(DocumentProcessingHandler.class.getName()), handler);
container.setRequestHandlerRegistry(requestHandlerComponentRegistry);
}
use of com.yahoo.container.Container in project vespa by vespa-engine.
the class MessagePropertyProcessor method getDocprocServiceRegistry.
public synchronized ComponentRegistry<DocprocService> getDocprocServiceRegistry(HttpRequest request) {
String docprocChain = getDocprocChainParameter(request);
if (docprocChain == null) {
return null;
}
Container container = Container.get();
if (container == null) {
throw new IllegalStateException("Could not get Container instance.");
}
ComponentRegistry<RequestHandler> requestHandlerRegistry = container.getRequestHandlerRegistry();
if (requestHandlerRegistry == null) {
throw new IllegalStateException("Could not get requesthandlerregistry.");
}
DocumentProcessingHandler handler = (DocumentProcessingHandler) requestHandlerRegistry.getComponent(DocumentProcessingHandler.class.getName());
if (handler == null) {
return null;
}
ComponentRegistry<DocprocService> services = handler.getDocprocServiceRegistry();
if (services == null) {
throw new IllegalStateException("Could not get DocprocServiceRegistry.");
}
return services;
}
use of com.yahoo.container.Container in project vespa by vespa-engine.
the class SearchHandlerTestCase method startUp.
@Before
public void startUp() throws IOException {
File cfgDir = tempfolder.newFolder("SearchHandlerTestCase");
tempDir = cfgDir.getAbsolutePath();
configId = "dir:" + tempDir;
// make configs active
IOUtils.copyDirectory(new File(testDir), cfgDir, 1);
generateComponentsConfigForActive();
configurer = new HandlersConfigurerTestWrapper(new Container(), configId);
searchHandler = (SearchHandler) configurer.getRequestHandlerRegistry().getComponent(SearchHandler.class.getName());
driver = new RequestHandlerTestDriver(searchHandler);
}
use of com.yahoo.container.Container in project vespa by vespa-engine.
the class QueryProfileIntegrationTestCase method testUntyped.
public void testUntyped() {
String configId = "dir:src/test/java/com/yahoo/search/query/profile/config/test/untyped";
System.setProperty("config.id", configId);
Container container = new Container();
HandlersConfigurerTestWrapper configurer = new HandlersConfigurerTestWrapper(container, configId);
SearchHandler searchHandler = (SearchHandler) configurer.getRequestHandlerRegistry().getComponent(SearchHandler.class.getName());
// Should get "default" query profile containing the "test" search chain containing the "test" searcher
HttpRequest request = HttpRequest.createTestRequest("search", Method.GET);
// Cast to access content directly
HttpSearchResponse response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:test"));
// Should get the "test' query profile containing the "default" search chain containing the "default" searcher
request = HttpRequest.createTestRequest("search?queryProfile=test", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:default"));
// Should get "default" query profile, but override the search chain to default
request = HttpRequest.createTestRequest("search?searchChain=default", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull(response.getResult().hits().get("from:default"));
// Tests a profile setting hits and offset
request = HttpRequest.createTestRequest("search?queryProfile=hitsoffset", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertEquals(20, response.getQuery().getHits());
assertEquals(80, response.getQuery().getOffset());
// Tests a non-resolved profile request
request = HttpRequest.createTestRequest("search?queryProfile=none", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertNotNull("Got an error", response.getResult().hits().getError());
assertEquals("Could not resolve query profile 'none'", response.getResult().hits().getError().getDetailedMessage());
// Tests that properties in objects owned by query is handled correctly
request = HttpRequest.createTestRequest("search?query=word&queryProfile=test", Method.GET);
// Cast to access content directly
response = (HttpSearchResponse) searchHandler.handle(request);
assertEquals("index", response.getQuery().getModel().getDefaultIndex());
assertEquals("index:word", response.getQuery().getModel().getQueryTree().toString());
configurer.shutdown();
}
Aggregations