use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.
the class RemoteGraknTxTest method whenExecutingAQueryWithASingleAnswer_GetAnAnswerBack.
@Test
public void whenExecutingAQueryWithASingleAnswer_GetAnAnswerBack() {
Query<?> query = define(label("person").sub("entity"));
String queryString = query.toString();
GrpcConcept.Concept v123 = GrpcConcept.Concept.newBuilder().setId(V123).build();
GrpcGrakn.Answer grpcAnswer = GrpcGrakn.Answer.newBuilder().putAnswer("x", v123).build();
QueryResult queryResult = QueryResult.newBuilder().setAnswer(grpcAnswer).build();
TxResponse response = TxResponse.newBuilder().setQueryResult(queryResult).build();
server.setResponseSequence(GrpcUtil.execQueryRequest(query), response);
Answer answer;
try (GraknTx tx = RemoteGraknTx.create(session, GrpcUtil.openRequest(KEYSPACE, GraknTxType.WRITE))) {
// The open request
verify(server.requests()).onNext(any());
answer = tx.graql().<DefineQuery>parse(queryString).execute();
}
assertEquals(answer.vars(), ImmutableSet.of(var("x")));
assertEquals(ConceptId.of("V123"), answer.get(var("x")).getId());
}
use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.
the class RemoteGraknTxTest method whenStreamingAQueryWithInfiniteAnswers_Terminate.
@Test(timeout = 5_000)
public void whenStreamingAQueryWithInfiniteAnswers_Terminate() {
Query<?> query = match(var("x").sub("thing")).get();
String queryString = query.toString();
GrpcConcept.Concept v123 = GrpcConcept.Concept.newBuilder().setId(V123).build();
GrpcGrakn.Answer grpcAnswer = GrpcGrakn.Answer.newBuilder().putAnswer("x", v123).build();
QueryResult queryResult = QueryResult.newBuilder().setAnswer(grpcAnswer).build();
TxResponse response = TxResponse.newBuilder().setQueryResult(queryResult).build();
server.setResponse(GrpcUtil.execQueryRequest(query), GrpcUtil.iteratorResponse(ITERATOR));
server.setResponse(GrpcUtil.nextRequest(ITERATOR), response);
List<Answer> answers;
int numAnswers = 10;
try (GraknTx tx = RemoteGraknTx.create(session, GrpcUtil.openRequest(KEYSPACE, GraknTxType.WRITE))) {
// The open request
verify(server.requests()).onNext(any());
answers = tx.graql().<GetQuery>parse(queryString).stream().limit(numAnswers).collect(toList());
}
assertEquals(10, answers.size());
for (Answer answer : answers) {
assertEquals(answer.vars(), ImmutableSet.of(var("x")));
assertEquals(ConceptId.of("V123"), answer.get(var("x")).getId());
}
}
use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.
the class GrpcServerTest method whenExecutingAQueryRemotely_AResultIsReturned.
@Test
public void whenExecutingAQueryRemotely_AResultIsReturned() throws InterruptedException {
Concept conceptX = mock(Concept.class, RETURNS_DEEP_STUBS);
when(conceptX.getId()).thenReturn(ConceptId.of("V123"));
when(conceptX.isRelationship()).thenReturn(true);
when(conceptX.asRelationship().type().getLabel()).thenReturn(Label.of("L123"));
Concept conceptY = mock(Concept.class, RETURNS_DEEP_STUBS);
when(conceptY.getId()).thenReturn(ConceptId.of("V456"));
when(conceptY.isAttribute()).thenReturn(true);
when(conceptY.asAttribute().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));
when(query.stream()).thenAnswer(params -> answers.stream());
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));
TxResponse response1 = tx.receive().ok();
GrpcConcept.Concept rpcX = GrpcConcept.Concept.newBuilder().setId(V123).setBaseType(BaseType.Relationship).build();
GrpcGrakn.Answer.Builder answerX = GrpcGrakn.Answer.newBuilder().putAnswer("x", rpcX);
QueryResult.Builder resultX = QueryResult.newBuilder().setAnswer(answerX);
assertEquals(TxResponse.newBuilder().setQueryResult(resultX).build(), response1);
tx.send(nextRequest(iterator));
TxResponse response2 = tx.receive().ok();
GrpcConcept.Concept rpcY = GrpcConcept.Concept.newBuilder().setId(V456).setBaseType(BaseType.Attribute).build();
GrpcGrakn.Answer.Builder answerY = GrpcGrakn.Answer.newBuilder().putAnswer("y", rpcY);
QueryResult.Builder resultY = QueryResult.newBuilder().setAnswer(answerY);
assertEquals(TxResponse.newBuilder().setQueryResult(resultY).build(), response2);
tx.send(nextRequest(iterator));
TxResponse response3 = tx.receive().ok();
TxResponse expected = doneResponse();
assertEquals(expected, response3);
tx.send(stopRequest(iterator));
}
}
use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.
the class GrpcServerIT method whenGettingAConcept_TheInformationOnTheConceptIsCorrect.
@Test
public void whenGettingAConcept_TheInformationOnTheConceptIsCorrect() {
try (GraknTx remoteTx = remoteSession.open(GraknTxType.READ);
GraknTx localTx = localSession.open(GraknTxType.READ)) {
GetQuery query = remoteTx.graql().match(var("x")).get();
for (Answer answer : query) {
Concept remoteConcept = answer.get("x");
Concept localConcept = localTx.getConcept(remoteConcept.getId());
assertEquals(localConcept.isAttribute(), remoteConcept.isAttribute());
assertEquals(localConcept.isAttributeType(), remoteConcept.isAttributeType());
assertEquals(localConcept.isEntity(), remoteConcept.isEntity());
assertEquals(localConcept.isEntityType(), remoteConcept.isEntityType());
assertEquals(localConcept.isRelationship(), remoteConcept.isRelationship());
assertEquals(localConcept.isRelationshipType(), remoteConcept.isRelationshipType());
assertEquals(localConcept.isRole(), remoteConcept.isRole());
assertEquals(localConcept.isRule(), remoteConcept.isRule());
assertEquals(localConcept.isSchemaConcept(), remoteConcept.isSchemaConcept());
assertEquals(localConcept.isThing(), remoteConcept.isThing());
assertEquals(localConcept.isType(), remoteConcept.isType());
assertEquals(localConcept.getId(), remoteConcept.getId());
assertEquals(localConcept.isDeleted(), remoteConcept.isDeleted());
assertEquals(localConcept.keyspace(), remoteConcept.keyspace());
}
}
}
use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.
the class GrpcServerIT method whenExecutingTwoParallelQueries_GetBothResults.
@Test
public void whenExecutingTwoParallelQueries_GetBothResults() throws Throwable {
try (GraknTx tx = remoteSession.open(GraknTxType.READ)) {
GetQuery query = tx.graql().match(var("x").sub("thing")).get();
Iterator<Answer> iterator1 = query.iterator();
Iterator<Answer> iterator2 = query.iterator();
while (iterator1.hasNext() || iterator2.hasNext()) {
assertEquals(iterator1.next(), iterator2.next());
assertEquals(iterator1.hasNext(), iterator2.hasNext());
}
}
}
Aggregations