use of org.neo4j.bolt.v3.messaging.request.RunMessage in project neo4j by neo4j.
the class TransactionReadyStateIT method shouldMoveToFailedOnRun_fail.
@Test
void shouldMoveToFailedOnRun_fail() throws Throwable {
BoltStateMachineV3 machine = getBoltStateMachineInTxReadyState();
// When
BoltResponseHandler handler = mock(BoltResponseHandler.class);
doThrow(new RuntimeException("Error!")).when(handler).onPullRecords(any(), anyLong());
doThrow(new RuntimeException("Error!")).when(handler).onDiscardRecords(any(), anyLong());
machine.process(new RunMessage("A cypher query"), handler);
// Then
assertThat(machine.state()).isInstanceOf(FailedState.class);
}
use of org.neo4j.bolt.v3.messaging.request.RunMessage in project neo4j by neo4j.
the class ReadyStateIT method shouldMoveToStreamingOnRun_succ.
@Test
void shouldMoveToStreamingOnRun_succ() throws Throwable {
// Given
BoltStateMachineV3 machine = newStateMachine();
machine.process(newHelloMessage(), nullResponseHandler());
// When
BoltResponseRecorder recorder = new BoltResponseRecorder();
machine.process(new RunMessage("CREATE (n {k:'k'}) RETURN n.k", EMPTY_PARAMS), recorder);
// Then
RecordedBoltResponse response = recorder.nextResponse();
assertThat(response).satisfies(succeeded());
assertTrue(response.hasMetadata("fields"));
assertTrue(response.hasMetadata("t_first"));
assertThat(machine.state()).isInstanceOf(StreamingState.class);
}
use of org.neo4j.bolt.v3.messaging.request.RunMessage in project neo4j by neo4j.
the class ReadyStateIT method shouldMoveToFailedStateOnRun_fail.
@Test
void shouldMoveToFailedStateOnRun_fail() throws Throwable {
// Given
BoltStateMachineV3 machine = newStateMachine();
machine.process(newHelloMessage(), nullResponseHandler());
// When
BoltResponseRecorder recorder = new BoltResponseRecorder();
RunMessage runMessage = mock(RunMessage.class);
when(runMessage.statement()).thenThrow(new RuntimeException("Fail"));
machine.process(runMessage, recorder);
// Then
assertThat(recorder.nextResponse()).satisfies(failedWithStatus(Status.General.UnknownError));
assertThat(machine.state()).isInstanceOf(FailedState.class);
}
use of org.neo4j.bolt.v3.messaging.request.RunMessage in project neo4j by neo4j.
the class BoltV3TransportIT method shouldSetTxMetadata.
@ParameterizedTest(name = "{0}")
@MethodSource("argumentsProvider")
public void shouldSetTxMetadata(Class<? extends TransportConnection> connectionClass) throws Exception {
init(connectionClass);
// Given
negotiateBoltV3();
Map<String, Object> txMetadata = map("who-is-your-boss", "Molly-mostly-white");
Map<String, Object> msgMetadata = map("tx_metadata", txMetadata);
MapValue meta = asMapValue(msgMetadata);
connection.send(util.chunk(new BeginMessage(meta, List.of(), null, AccessMode.WRITE, txMetadata), new RunMessage("RETURN 1"), PullAllMessage.INSTANCE));
// When
assertThat(connection).satisfies(util.eventuallyReceives(msgSuccess(), msgSuccess(), msgRecord(eqRecord(longEquals(1L))), msgSuccess()));
// Then
GraphDatabaseAPI gdb = (GraphDatabaseAPI) server.graphDatabaseService();
Set<KernelTransactionHandle> txHandles = gdb.getDependencyResolver().resolveDependency(KernelTransactions.class).activeTransactions();
assertThat(txHandles.size()).isEqualTo(1);
for (KernelTransactionHandle txHandle : txHandles) {
assertThat(txHandle.getMetaData()).isEqualTo(txMetadata);
}
connection.send(util.chunk(ROLLBACK_MESSAGE));
}
use of org.neo4j.bolt.v3.messaging.request.RunMessage in project neo4j by neo4j.
the class FailedStateIT method getBoltStateMachineInFailedState.
private BoltStateMachineV3 getBoltStateMachineInFailedState() throws BoltConnectionFatality, InterruptedException {
BoltStateMachineV3 machine = newStateMachine();
machine.process(newHelloMessage(), nullResponseHandler());
RunMessage runMessage = mock(RunMessage.class);
when(runMessage.statement()).thenThrow(new RuntimeException("error here"));
BoltResponseRecorder recorder = new BoltResponseRecorder();
machine.process(runMessage, recorder);
assertThat(recorder.nextResponse()).satisfies(failedWithStatus(Status.General.UnknownError));
assertThat(machine.state()).isInstanceOf(FailedState.class);
return machine;
}
Aggregations