Search in sources :

Example 6 with IteratorId

use of ai.grakn.rpc.generated.GrpcIterator.IteratorId in project grakn by graknlabs.

the class GrpcServerTest method whenSendingNextAfterStop_Throw.

@Test
public void whenSendingNextAfterStop_Throw() throws Throwable {
    try (TxGrpcCommunicator tx = TxGrpcCommunicator.create(stub)) {
        tx.send(openRequest(MYKS, GraknTxType.WRITE));
        tx.receive();
        tx.send(execQueryRequest(QUERY, null));
        IteratorId iterator = tx.receive().ok().getIteratorId();
        tx.send(stopRequest(iterator));
        tx.receive();
        tx.send(nextRequest(iterator));
        exception.expect(hasStatus(Status.FAILED_PRECONDITION));
        throw tx.receive().error();
    }
}
Also used : IteratorId(ai.grakn.rpc.generated.GrpcIterator.IteratorId) TxGrpcCommunicator(ai.grakn.grpc.TxGrpcCommunicator) Test(org.junit.Test)

Example 7 with IteratorId

use of ai.grakn.rpc.generated.GrpcIterator.IteratorId in project grakn by graknlabs.

the class ConceptResponseType method createStreamable.

public static <T> ConceptResponseType<Stream<? extends T>> createStreamable(BiFunction<GrpcConceptConverter, TxResponse, T> getter, Function<T, TxResponse> setter) {
    return create((converter, client, response) -> {
        IteratorId iteratorId = response.getIteratorId();
        Iterable<T> iterable = () -> new GraknGrpcIterator<T>(client, iteratorId) {

            @Override
            protected T getNextFromResponse(TxResponse response) {
                return getter.apply(converter, response);
            }
        };
        return StreamSupport.stream(iterable.spliterator(), false);
    }, (builder, iterators, val) -> {
        Stream<TxResponse> responses = val.map(setter);
        IteratorId iteratorId = iterators.add(responses.iterator());
        builder.setIteratorId(iteratorId);
    });
}
Also used : IteratorId(ai.grakn.rpc.generated.GrpcIterator.IteratorId) TxResponse(ai.grakn.rpc.generated.GrpcGrakn.TxResponse)

Example 8 with IteratorId

use of ai.grakn.rpc.generated.GrpcIterator.IteratorId in project grakn by graknlabs.

the class GrpcClient method getAttributesByValue.

public Stream<? extends Concept> getAttributesByValue(Object value) {
    communicator.send(GrpcUtil.getAttributesByValueRequest(value));
    IteratorId iteratorId = responseOrThrow().getIteratorId();
    Iterable<Concept> iterable = () -> new GraknGrpcIterator<Concept>(this, iteratorId) {

        @Override
        protected Concept getNextFromResponse(TxResponse response) {
            return conceptConverter.convert(response.getConcept());
        }
    };
    return StreamSupport.stream(iterable.spliterator(), false);
}
Also used : Concept(ai.grakn.concept.Concept) IteratorId(ai.grakn.rpc.generated.GrpcIterator.IteratorId) TxResponse(ai.grakn.rpc.generated.GrpcGrakn.TxResponse)

Example 9 with IteratorId

use of ai.grakn.rpc.generated.GrpcIterator.IteratorId in project grakn by graknlabs.

the class GrpcClient method execQuery.

public Iterator<Object> execQuery(Query<?> query) {
    communicator.send(GrpcUtil.execQueryRequest(query.toString(), query.inferring()));
    IteratorId iteratorId = responseOrThrow().getIteratorId();
    return new GraknGrpcIterator<Object>(this, iteratorId) {

        @Override
        protected Object getNextFromResponse(TxResponse response) {
            return convert(response.getQueryResult());
        }
    };
}
Also used : IteratorId(ai.grakn.rpc.generated.GrpcIterator.IteratorId) TxResponse(ai.grakn.rpc.generated.GrpcGrakn.TxResponse)

Example 10 with IteratorId

use of ai.grakn.rpc.generated.GrpcIterator.IteratorId in project grakn by graknlabs.

the class GrpcServerTest method whenExecutingAQueryRemotelyAndAskingForOneResult_OnlyOneResultIsReturned.

// This tests uses an endless stream, so a failure may cause it to never terminate
@Test(timeout = 1000)
public void whenExecutingAQueryRemotelyAndAskingForOneResult_OnlyOneResultIsReturned() throws InterruptedException {
    Concept conceptX = mock(Concept.class, RETURNS_DEEP_STUBS);
    when(conceptX.getId()).thenReturn(ConceptId.of("V123"));
    when(conceptX.isEntity()).thenReturn(true);
    when(conceptX.asEntity().type().getLabel()).thenReturn(Label.of("L123"));
    Concept conceptY = mock(Concept.class, RETURNS_DEEP_STUBS);
    when(conceptY.getId()).thenReturn(ConceptId.of("V456"));
    when(conceptY.isEntity()).thenReturn(true);
    when(conceptY.asEntity().type().getLabel()).thenReturn(Label.of("L456"));
    ImmutableList<Answer> answers = ImmutableList.of(new QueryAnswer(ImmutableMap.of(Graql.var("x"), conceptX)), new QueryAnswer(ImmutableMap.of(Graql.var("y"), conceptY)));
    // TODO: reduce wtf
    when(query.results(any())).thenAnswer(params -> query.stream().map(params.<GrpcConverter>getArgument(0)::convert));
    // Produce an endless stream of results - this means if the behaviour is not lazy this will never terminate
    when(query.stream()).thenAnswer(params -> Stream.generate(answers::stream).flatMap(Function.identity()));
    try (TxGrpcCommunicator tx = TxGrpcCommunicator.create(stub)) {
        tx.send(openRequest(MYKS, GraknTxType.WRITE));
        tx.receive();
        tx.send(execQueryRequest(QUERY, null));
        IteratorId iterator = tx.receive().ok().getIteratorId();
        tx.send(nextRequest(iterator));
        tx.receive().ok();
        tx.send(nextRequest(iterator));
        tx.receive().ok();
        tx.send(stopRequest(iterator));
        TxResponse response = tx.receive().ok();
        assertEquals(doneResponse(), response);
    }
}
Also used : GrpcConcept(ai.grakn.rpc.generated.GrpcConcept) Concept(ai.grakn.concept.Concept) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Answer(ai.grakn.graql.admin.Answer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) IteratorId(ai.grakn.rpc.generated.GrpcIterator.IteratorId) TxGrpcCommunicator(ai.grakn.grpc.TxGrpcCommunicator) TxResponse(ai.grakn.rpc.generated.GrpcGrakn.TxResponse) Test(org.junit.Test)

Aggregations

IteratorId (ai.grakn.rpc.generated.GrpcIterator.IteratorId)15 TxResponse (ai.grakn.rpc.generated.GrpcGrakn.TxResponse)8 TxGrpcCommunicator (ai.grakn.grpc.TxGrpcCommunicator)7 Test (org.junit.Test)7 Concept (ai.grakn.concept.Concept)3 Answer (ai.grakn.graql.admin.Answer)2 QueryAnswer (ai.grakn.graql.internal.query.QueryAnswer)2 GrpcConcept (ai.grakn.rpc.generated.GrpcConcept)2 QueryResult (ai.grakn.rpc.generated.GrpcGrakn.QueryResult)2 Mockito.doAnswer (org.mockito.Mockito.doAnswer)2 Attribute (ai.grakn.concept.Attribute)1 QueryBuilder (ai.grakn.graql.QueryBuilder)1