Search in sources :

Example 26 with QueryResultPacket

use of com.yahoo.fs4.QueryResultPacket in project vespa by vespa-engine.

the class PacketWrapperTestCase method testPacketTrimming1.

@Test
public void testPacketTrimming1() {
    CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key")));
    PacketWrapper w = createResult(key, 0, 10, 100);
    QueryResultPacket q = createQueryResultPacket(5, 10, 100);
    w.addResultPacket(q);
    q = createQueryResultPacket(10, 10, 100);
    w.addResultPacket(q);
    assertEquals(2, w.getResultPackets().size());
    List<?> l = w.getResultPackets();
    assertEquals(0, ((QueryResultPacket) l.get(0)).getOffset());
    assertEquals(10, ((QueryResultPacket) l.get(1)).getOffset());
}
Also used : QueryResultPacket(com.yahoo.fs4.QueryResultPacket) Query(com.yahoo.search.Query) PacketWrapper(com.yahoo.prelude.fastsearch.PacketWrapper) CacheKey(com.yahoo.prelude.fastsearch.CacheKey) Test(org.junit.Test)

Example 27 with QueryResultPacket

use of com.yahoo.fs4.QueryResultPacket in project vespa by vespa-engine.

the class PacketWrapperTestCase method testPartialOverlap.

@Test
public void testPartialOverlap() {
    CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key")));
    PacketWrapper w = createResult(key, 0, 10, 100);
    QueryResultPacket q = createQueryResultPacket(10, 10, 100);
    w.addResultPacket(q);
    // all docs at once
    List<?> l = w.getDocuments(0, 20);
    assertNotNull(l);
    assertEquals(20, l.size());
    int n = 0;
    for (Iterator<?> i = l.iterator(); i.hasNext(); ++n) {
        DocumentInfo d = (DocumentInfo) i.next();
        assertEquals(DocsumDefinitionTestCase.createGlobalId(n), d.getGlobalId());
    }
    // too far out into the result set
    l = w.getDocuments(15, 10);
    assertNull(l);
    // only from first subdivision
    l = w.getDocuments(3, 2);
    assertNotNull(l);
    assertEquals(2, l.size());
    n = 3;
    for (Iterator<?> i = l.iterator(); i.hasNext(); ++n) {
        DocumentInfo d = (DocumentInfo) i.next();
        assertEquals(DocsumDefinitionTestCase.createGlobalId(n), d.getGlobalId());
    }
    // only from second subdivision
    l = w.getDocuments(15, 5);
    assertNotNull(l);
    assertEquals(5, l.size());
    n = 15;
    for (Iterator<?> i = l.iterator(); i.hasNext(); ++n) {
        DocumentInfo d = (DocumentInfo) i.next();
        assertEquals(DocsumDefinitionTestCase.createGlobalId(n), d.getGlobalId());
    }
    // overshoot by 1
    l = w.getDocuments(15, 6);
    assertNull(l);
    // mixed subset
    l = w.getDocuments(3, 12);
    assertNotNull(l);
    assertEquals(12, l.size());
    n = 3;
    for (Iterator<?> i = l.iterator(); i.hasNext(); ++n) {
        DocumentInfo d = (DocumentInfo) i.next();
        assertEquals(DocsumDefinitionTestCase.createGlobalId(n), d.getGlobalId());
    }
}
Also used : QueryResultPacket(com.yahoo.fs4.QueryResultPacket) Query(com.yahoo.search.Query) PacketWrapper(com.yahoo.prelude.fastsearch.PacketWrapper) CacheKey(com.yahoo.prelude.fastsearch.CacheKey) DocumentInfo(com.yahoo.fs4.DocumentInfo) Test(org.junit.Test)

Example 28 with QueryResultPacket

use of com.yahoo.fs4.QueryResultPacket in project vespa by vespa-engine.

the class MockFSChannel method receivePackets.

public BasicPacket[] receivePackets(long timeout, int packetCount) {
    List<BasicPacket> packets = new java.util.ArrayList<>();
    if (lastReceived instanceof QueryPacket) {
        lastQueryPacket = (QueryPacket) lastReceived;
        QueryResultPacket result = QueryResultPacket.create();
        result.setDocstamp(docstamp);
        result.setChannel(0);
        result.setTotalDocumentCount(2);
        result.setOffset(lastQueryPacket.getOffset());
        if (lastQueryPacket.getOffset() == 0 && lastQueryPacket.getLastOffset() >= 1) {
            result.addDocument(new DocumentInfo(DocsumDefinitionTestCase.createGlobalId(123), 2003, 234, 1000));
        }
        if (lastQueryPacket.getOffset() <= 1 && lastQueryPacket.getLastOffset() >= 2) {
            result.addDocument(new DocumentInfo(DocsumDefinitionTestCase.createGlobalId(456), 1855, 234, 1001));
        }
        packets.add(result);
    } else if (lastReceived instanceof GetDocSumsPacket) {
        addDocsums(packets, lastQueryPacket);
    } else if (lastReceived instanceof PingPacket) {
        packets.add(new PongPacket(activeDocuments));
    }
    while (packetCount >= 0 && packets.size() > packetCount) {
        packets.remove(packets.size() - 1);
    }
    return packets.toArray(new BasicPacket[packets.size()]);
}
Also used : QueryResultPacket(com.yahoo.fs4.QueryResultPacket) BasicPacket(com.yahoo.fs4.BasicPacket) GetDocSumsPacket(com.yahoo.fs4.GetDocSumsPacket) PingPacket(com.yahoo.fs4.PingPacket) PongPacket(com.yahoo.fs4.PongPacket) QueryPacket(com.yahoo.fs4.QueryPacket) DocumentInfo(com.yahoo.fs4.DocumentInfo)

Aggregations

QueryResultPacket (com.yahoo.fs4.QueryResultPacket)28 Test (org.junit.Test)20 CacheKey (com.yahoo.prelude.fastsearch.CacheKey)16 PacketWrapper (com.yahoo.prelude.fastsearch.PacketWrapper)16 Query (com.yahoo.search.Query)16 BasicPacket (com.yahoo.fs4.BasicPacket)7 DocumentInfo (com.yahoo.fs4.DocumentInfo)7 ByteBuffer (java.nio.ByteBuffer)4 GetDocSumsPacket (com.yahoo.fs4.GetDocSumsPacket)2 PacketDecoder (com.yahoo.fs4.PacketDecoder)2 DecodedPacket (com.yahoo.fs4.PacketDecoder.DecodedPacket)2 PingPacket (com.yahoo.fs4.PingPacket)2 PongPacket (com.yahoo.fs4.PongPacket)2 QueryPacket (com.yahoo.fs4.QueryPacket)2 Result (com.yahoo.search.Result)2 ChannelTimeoutException (com.yahoo.fs4.ChannelTimeoutException)1 Packet (com.yahoo.fs4.Packet)1 InvalidChannelException (com.yahoo.fs4.mplex.InvalidChannelException)1