Search in sources :

Example 6 with Response

use of com.yahoo.processing.Response in project vespa by vespa-engine.

the class JsonRenderer method getResult.

private Result getResult() {
    Response r = getResponse();
    Preconditions.checkArgument(r instanceof Result, "JsonRenderer can only render instances of com.yahoo.search.Result, got instance of %s.", r.getClass());
    return (Result) r;
}
Also used : Response(com.yahoo.processing.Response) Result(com.yahoo.search.Result)

Example 7 with Response

use of com.yahoo.processing.Response in project vespa by vespa-engine.

the class FutureDataTestCase method testAsyncDataProcessingOfFederatedResult.

/**
 * Register a chain which federates over three sources, two of which are future.
 * When the first of the futures are done one additional chain is to be run.
 * When both are done another chain is to be run.
 */
@SuppressWarnings("unchecked")
@Test
public void testAsyncDataProcessingOfFederatedResult() throws InterruptedException, ExecutionException, TimeoutException {
    // Set up
    // Source 1 (async with completion chain)
    FutureDataSource futureSource1 = new FutureDataSource();
    Chain<Processor> asyncChainSource1 = new Chain<Processor>(new DataCounter("source1"));
    Chain<Processor> chainSource1 = new Chain<>(new AsyncDataProcessingInitiator(asyncChainSource1), futureSource1);
    // Source 2 (async source)
    FutureDataSource futureSource2 = new FutureDataSource();
    Chain<Processor> chainSource2 = new Chain<Processor>(futureSource2);
    // Source 3 (sync source)
    Chain<Processor> chainSource3 = new Chain<Processor>(new DataSource());
    // Main chain federating to the above - not waiting for source 1 and 2 but invoking asyncMain when both are complete
    Chain<Processor> asyncMain = new Chain<Processor>(new DataCounter("main"));
    Chain<Processor> main = new Chain<>(new AsyncDataProcessingInitiator(asyncMain), new Federator(chainSource1, chainSource2, chainSource3));
    // Execute
    Request request = new Request();
    Response response = Execution.createRoot(main, 0, Execution.Environment.createEmpty()).process(request);
    // Verify the result prior to completion of delayed data
    assertEquals("We have the sync data plus placeholders for the async lists", 3, response.data().asList().size());
    DataList source1Data = ((DataList) response.data().get(0));
    DataList source2Data = ((DataList) response.data().get(1));
    DataList source3Data = ((DataList) response.data().get(2));
    assertEquals("No data yet", 0, source1Data.asList().size());
    assertEquals("No data yet", 0, source2Data.asList().size());
    assertEquals(3, source3Data.asList().size());
    // complete async data in source1
    futureSource1.incomingData.get(0).addLast(new StringData(request, "source1Data"));
    assertEquals("Not visible yet", 0, source1Data.asList().size());
    source1Data.complete().get(1000, TimeUnit.MILLISECONDS);
    assertEquals(2, source1Data.asList().size());
    assertEquals("source1Data", source1Data.get(0).toString());
    assertEquals("Completion listener chain on this has run", "[source1] Data count: 1", source1Data.get(1).toString());
    // source2 & main completion
    assertEquals("Main completion listener has not run", 3, response.data().asList().size());
    futureSource2.incomingData.get(0).addLast(new StringData(request, "source2Data"));
    assertEquals("Main completion listener has not run", 3, response.data().asList().size());
    Response.recursiveComplete(response.data()).get();
    assertEquals("Main completion listener has run", 4, response.data().asList().size());
    assertEquals("The main data counter saw all sync data, but not source2 data as it executes after this", "[main] Data count: " + (2 + 0 + 3), response.data().get(3).toString());
}
Also used : Response(com.yahoo.processing.Response) Chain(com.yahoo.component.chain.Chain) DataList(com.yahoo.processing.response.DataList) Processor(com.yahoo.processing.Processor) Request(com.yahoo.processing.Request) Test(org.junit.Test)

Example 8 with Response

use of com.yahoo.processing.Response in project vespa by vespa-engine.

the class DocumentationTestCase method test.

@SuppressWarnings("unchecked")
@Test
public final void test() {
    Processor p = new ExampleProcessor();
    Chain<Processor> basic = new Chain<>(p);
    Processor initiator = new AsyncDataProcessingInitiator(basic);
    Chain<Processor> postProcessing = new Chain<>(initiator);
    Execution e = Execution.createRoot(postProcessing, 0, Execution.Environment.createEmpty());
    Response r = e.process(new Request());
    // just adds a listener to the result returned from basic
    assertEquals(0, r.data().asList().size());
    Processor producer = new AsyncDataProducer();
    Chain<Processor> asyncChain = new Chain<>(producer);
    Processor federator = new Federator(basic, asyncChain);
    e = Execution.createRoot(federator, 0, Execution.Environment.createEmpty());
    r = e.process(new Request());
    assertEquals(2, r.data().asList().size());
}
Also used : Response(com.yahoo.processing.Response) AsyncDataProducer(com.yahoo.processing.test.documentation.AsyncDataProducer) Chain(com.yahoo.component.chain.Chain) AsyncDataProcessingInitiator(com.yahoo.processing.test.documentation.AsyncDataProcessingInitiator) Federator(com.yahoo.processing.test.documentation.Federator) ExampleProcessor(com.yahoo.processing.test.documentation.ExampleProcessor) Processor(com.yahoo.processing.Processor) Execution(com.yahoo.processing.execution.Execution) ExampleProcessor(com.yahoo.processing.test.documentation.ExampleProcessor) Request(com.yahoo.processing.Request) Test(org.junit.Test)

Example 9 with Response

use of com.yahoo.processing.Response in project vespa by vespa-engine.

the class ProcessingTestCase method testChainedProcessing1.

/**
 * Execute three simple processors doing some phony processing
 */
@Test
public void testChainedProcessing1() {
    // Create a chain
    Chain<Processor> chain = new Chain<>(new CombineData(), new Get6DataItems(), new DataSource());
    // Execute it
    Request request = new Request();
    request.properties().set("appendage", 1);
    Response response = Execution.createRoot(chain, 0, Execution.Environment.createEmpty()).process(request);
    // Verify the result
    assertEquals(6 - 1, response.data().asList().size());
    assertEquals("first.2, third.2", response.data().get(0).toString());
    assertEquals("second.2", response.data().get(1).toString());
    assertEquals("first.3", response.data().get(2).toString());
    assertEquals("second.3", response.data().get(3).toString());
    assertEquals("third.3", response.data().get(4).toString());
}
Also used : Response(com.yahoo.processing.Response) Chain(com.yahoo.component.chain.Chain) Processor(com.yahoo.processing.Processor) Request(com.yahoo.processing.Request) Test(org.junit.Test)

Example 10 with Response

use of com.yahoo.processing.Response in project vespa by vespa-engine.

the class ProcessingTestCase method testChainedProcessing2.

/**
 * Execute the same processors in a different order
 */
@Test
public void testChainedProcessing2() {
    // Create a chain
    Chain<Processor> chain = new Chain<>(new Get6DataItems(), new CombineData(), new DataSource());
    // Execute it
    Request request = new Request();
    request.properties().set("appendage", 1);
    Response response = Execution.createRoot(chain, 0, Execution.Environment.createEmpty()).process(request);
    // Check the result
    assertEquals(6, response.data().asList().size());
    assertEquals("first.2, third.2", response.data().get(0).toString());
    assertEquals("second.2", response.data().get(1).toString());
    assertEquals("first.4, third.4", response.data().get(2).toString());
    assertEquals("second.4", response.data().get(3).toString());
    assertEquals("first.6, third.6", response.data().get(4).toString());
    assertEquals("second.6", response.data().get(5).toString());
}
Also used : Response(com.yahoo.processing.Response) Chain(com.yahoo.component.chain.Chain) Processor(com.yahoo.processing.Processor) Request(com.yahoo.processing.Request) Test(org.junit.Test)

Aggregations

Response (com.yahoo.processing.Response)20 Request (com.yahoo.processing.Request)12 Processor (com.yahoo.processing.Processor)11 Test (org.junit.Test)11 Chain (com.yahoo.component.chain.Chain)10 Execution (com.yahoo.processing.execution.Execution)4 DataList (com.yahoo.processing.response.DataList)3 FutureResponse (com.yahoo.processing.response.FutureResponse)2 ProcessorLibrary (com.yahoo.processing.test.ProcessorLibrary)2 ArrayList (java.util.ArrayList)2 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)1 ContentChannelOutputStream (com.yahoo.container.jdisc.ContentChannelOutputStream)1 HttpRequest (com.yahoo.container.jdisc.HttpRequest)1 HttpResponse (com.yahoo.container.jdisc.HttpResponse)1 HttpRequest (com.yahoo.jdisc.http.HttpRequest)1 AsyncExecution (com.yahoo.processing.execution.AsyncExecution)1 ArrayDataList (com.yahoo.processing.response.ArrayDataList)1 IncomingData (com.yahoo.processing.response.IncomingData)1 AsyncDataProcessingInitiator (com.yahoo.processing.test.documentation.AsyncDataProcessingInitiator)1 AsyncDataProducer (com.yahoo.processing.test.documentation.AsyncDataProducer)1