use of org.neo4j.bolt.runtime.statemachine.BoltStateMachine in project neo4j by neo4j.
the class BoltStateMachineV4Test method shouldSucceedOnConsecutiveResetsOnFailedState.
@Test
void shouldSucceedOnConsecutiveResetsOnFailedState() throws Exception {
// Given
BoltResponseRecorder recorder = new BoltResponseRecorder();
// Given a FAILED machine
BoltStateMachine machine = init(newMachine());
machine.markFailed(Neo4jError.from(Status.Request.NoThreadsAvailable, "No Threads Available"));
machine.process(BoltV4Messages.pullAll(), recorder);
// When I RESET...
machine.interrupt();
machine.interrupt();
machine.markFailed(Neo4jError.from(Status.Request.NoThreadsAvailable, "No Threads Available"));
machine.process(BoltV4Messages.reset(), recorder);
machine.markFailed(Neo4jError.from(Status.Request.NoThreadsAvailable, "No Threads Available"));
machine.process(BoltV4Messages.reset(), recorder);
assertThat(recorder.nextResponse()).satisfies(failedWithStatus(Status.Request.NoThreadsAvailable));
// ...successfully
assertThat(recorder.nextResponse()).satisfies(wasIgnored());
assertThat(recorder.nextResponse()).satisfies(succeeded());
}
use of org.neo4j.bolt.runtime.statemachine.BoltStateMachine in project neo4j by neo4j.
the class BoltRequestMessageReaderTest method shouldHandleErrorThatCausesFailureMessage.
@Test
void shouldHandleErrorThatCausesFailureMessage() throws Exception {
Unpacker unpacker = mock(Unpacker.class);
BoltIOException error = new BoltIOException(Status.General.UnknownError, "Hello");
when(unpacker.unpackStructHeader()).thenThrow(error);
BoltStateMachine stateMachine = mock(BoltStateMachine.class);
BoltConnection connection = new SynchronousBoltConnection(stateMachine);
BoltResponseHandler externalErrorResponseHandler = responseHandlerMock();
BoltRequestMessageReader reader = new TestBoltRequestMessageReader(connection, externalErrorResponseHandler, emptyList(), mock(ChannelProtector.class));
reader.read(unpacker);
verify(stateMachine).handleExternalFailure(Neo4jError.from(error), externalErrorResponseHandler);
}
use of org.neo4j.bolt.runtime.statemachine.BoltStateMachine in project neo4j by neo4j.
the class BoltRequestMessageReaderTest method shouldDecodeKnownMessage.
@Test
void shouldDecodeKnownMessage() throws Exception {
Unpacker unpacker = mock(Unpacker.class);
when(unpacker.unpackStructSignature()).thenReturn('a');
RequestMessage message = mock(RequestMessage.class);
BoltResponseHandler responseHandler = responseHandlerMock();
RequestMessageDecoder decoder = new TestRequestMessageDecoder('a', responseHandler, message);
BoltStateMachine stateMachine = mock(BoltStateMachine.class);
BoltConnection connection = new SynchronousBoltConnection(stateMachine);
BoltRequestMessageReader reader = new TestBoltRequestMessageReader(connection, responseHandlerMock(), singletonList(decoder), mock(ChannelProtector.class));
reader.read(unpacker);
verify(stateMachine).process(message, responseHandler);
}
use of org.neo4j.bolt.runtime.statemachine.BoltStateMachine in project neo4j by neo4j.
the class BoltRequestMessageReaderV4Test method verifyBoltV3MessageIsReadAsBoltV4Message.
private static void verifyBoltV3MessageIsReadAsBoltV4Message(TransactionInitiatingMessage messageV3, TransactionInitiatingMessage messageV4) throws Exception {
Neo4jPack neo4jPack = newNeo4jPack();
BoltStateMachine stateMachine = mock(BoltStateMachine.class);
BoltRequestMessageReader reader = requestMessageReader(stateMachine);
PackedInputArray input = new PackedInputArray(encode(neo4jPack, messageV3));
Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
reader.read(unpacker);
verify(stateMachine).process(eq(messageV4), any());
assertThat(messageV3.meta()).isEqualTo(messageV4.meta());
}
use of org.neo4j.bolt.runtime.statemachine.BoltStateMachine in project neo4j by neo4j.
the class BoltRequestMessageReaderV41Test method testMessageDecoding.
private static void testMessageDecoding(RequestMessage message) throws Exception {
Neo4jPack neo4jPack = newNeo4jPack();
BoltStateMachine stateMachine = mock(BoltStateMachine.class);
BoltRequestMessageReader reader = requestMessageReader(stateMachine);
PackedInputArray input = new PackedInputArray(encode(neo4jPack, message));
Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
reader.read(unpacker);
verify(stateMachine).process(eq(message), any());
}
Aggregations