use of com.yahoo.jdisc.application.ContainerBuilder in project vespa by vespa-engine.
the class ActiveContainerTestCase method requireThatClientBindingAccessorWorks.
@Test
public void requireThatClientBindingAccessorWorks() {
TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
ContainerBuilder builder = driver.newContainerBuilder();
RequestHandler foo = new NonWorkingRequestHandler();
RequestHandler bar = new NonWorkingRequestHandler();
builder.clientBindings().bind("http://host/foo", foo);
builder.clientBindings("bar").bind("http://host/bar", bar);
ActiveContainer container = new ActiveContainer(builder);
Map<String, BindingSet<RequestHandler>> bindings = container.clientBindings();
assertNotNull(bindings);
assertEquals(2, bindings.size());
BindingSet<RequestHandler> set = bindings.get(BindingSet.DEFAULT);
assertNotNull(set);
Iterator<Map.Entry<UriPattern, RequestHandler>> it = set.iterator();
assertNotNull(it);
assertTrue(it.hasNext());
Map.Entry<UriPattern, RequestHandler> entry = it.next();
assertNotNull(entry);
assertEquals(new UriPattern("http://host/foo"), entry.getKey());
assertSame(foo, entry.getValue());
assertFalse(it.hasNext());
assertNotNull(set = bindings.get("bar"));
assertNotNull(it = set.iterator());
assertTrue(it.hasNext());
assertNotNull(entry = it.next());
assertEquals(new UriPattern("http://host/bar"), entry.getKey());
assertSame(bar, entry.getValue());
assertFalse(it.hasNext());
assertNotNull(bindings = container.serverBindings());
assertEquals(1, bindings.size());
assertNotNull(set = bindings.get(BindingSet.DEFAULT));
assertNotNull(it = set.iterator());
assertFalse(it.hasNext());
driver.close();
}
use of com.yahoo.jdisc.application.ContainerBuilder in project vespa by vespa-engine.
the class ActiveContainerTestCase method requireThatDefaultBindingsAreAlwaysCreated.
@Test
public void requireThatDefaultBindingsAreAlwaysCreated() {
TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
ContainerBuilder builder = driver.newContainerBuilder();
ActiveContainer container = new ActiveContainer(builder);
Map<String, BindingSet<RequestHandler>> bindings = container.serverBindings();
assertNotNull(bindings);
assertEquals(1, bindings.size());
BindingSet<RequestHandler> set = bindings.get(BindingSet.DEFAULT);
assertFalse(set.iterator().hasNext());
driver.close();
}
use of com.yahoo.jdisc.application.ContainerBuilder in project vespa by vespa-engine.
the class ApplicationEnvironmentModuleTestCase method requireThatContainerBuilderCanBeInjected.
@Test
public void requireThatContainerBuilderCanBeInjected() {
ApplicationLoader loader = new ApplicationLoader(new NonWorkingOsgiFramework(), Collections.<Module>emptyList());
assertNotNull(new ApplicationEnvironmentModule(loader).containerBuilder());
assertNotNull(Guice.createInjector(new ApplicationEnvironmentModule(loader)).getInstance(ContainerBuilder.class));
}
use of com.yahoo.jdisc.application.ContainerBuilder in project vespa by vespa-engine.
the class ThreadedRequestHandlerTestCase method requireThatThreadedRequestHandlerRetainsTheRequestUntilHandlerIsRun.
@Test
public void requireThatThreadedRequestHandlerRetainsTheRequestUntilHandlerIsRun() throws Exception {
final TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
ContainerBuilder builder = driver.newContainerBuilder();
final AtomicInteger baseRetainCount = new AtomicInteger();
builder.serverBindings().bind("http://localhost/base", new AbstractRequestHandler() {
@Override
public ContentChannel handleRequest(Request request, ResponseHandler handler) {
baseRetainCount.set(request.retainCount());
handler.handleResponse(new Response(Response.Status.OK)).close(null);
return null;
}
});
final CountDownLatch entryLatch = new CountDownLatch(1);
final CountDownLatch exitLatch = new CountDownLatch(1);
final AtomicInteger testRetainCount = new AtomicInteger();
builder.serverBindings().bind("http://localhost/test", new ThreadedRequestHandler(newExecutor()) {
@Override
public void handleRequest(Request request, ReadableContentChannel requestContent, ResponseHandler responseHandler) {
try {
entryLatch.await(600, TimeUnit.SECONDS);
} catch (InterruptedException e) {
return;
}
testRetainCount.set(request.retainCount());
responseHandler.handleResponse(new Response(Response.Status.OK)).close(null);
// drain content to call completion handlers
requestContent.read();
exitLatch.countDown();
}
});
driver.activateContainer(builder);
dispatchRequest(driver, "http://localhost/base");
dispatchRequest(driver, "http://localhost/test");
entryLatch.countDown();
exitLatch.await(600, TimeUnit.SECONDS);
assertEquals(baseRetainCount.get(), testRetainCount.get());
assertTrue(driver.close());
}
use of com.yahoo.jdisc.application.ContainerBuilder in project vespa by vespa-engine.
the class ThreadedRequestHandlerTestCase method newTestDriver.
private static TestDriver newTestDriver(String uri, RequestHandler requestHandler) {
TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
ContainerBuilder builder = driver.newContainerBuilder();
builder.serverBindings().bind(uri, requestHandler);
driver.activateContainer(builder);
return driver;
}
Aggregations