Search in sources :

Example 11 with BoltStateMachineV4

use of org.neo4j.bolt.v4.BoltStateMachineV4 in project neo4j by neo4j.

the class AutoCommitStateIT method shouldMoveFromAutoCommitToReadyOnDiscardAll_succ.

@Test
void shouldMoveFromAutoCommitToReadyOnDiscardAll_succ() throws Throwable {
    // Given
    BoltStateMachineV4 machine = getBoltStateMachineInAutoCommitState();
    // When
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    machine.process(newDiscardMessage(2L), recorder);
    // Then
    RecordedBoltResponse response = recorder.nextResponse();
    assertThat(response).satisfies(succeeded());
    assertTrue(response.hasMetadata("bookmark"));
    assertTrue(response.hasMetadata("db"));
    assertThat(machine.state()).isInstanceOf(ReadyState.class);
}
Also used : BoltStateMachineV4(org.neo4j.bolt.v4.BoltStateMachineV4) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) RecordedBoltResponse(org.neo4j.bolt.testing.RecordedBoltResponse) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 12 with BoltStateMachineV4

use of org.neo4j.bolt.v4.BoltStateMachineV4 in project neo4j by neo4j.

the class AutoCommitStateIT method shouldMoveFromAutoCommitToReadyOnPull_succ_hasMore.

@Test
void shouldMoveFromAutoCommitToReadyOnPull_succ_hasMore() throws Throwable {
    // Given
    BoltStateMachineV4 machine = getBoltStateMachineInAutoCommitState("Unwind [1, 2, 3] as n return n");
    // When
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    machine.process(newPullMessage(2L), recorder);
    // Then
    RecordedBoltResponse response = recorder.nextResponse();
    assertThat(response).satisfies(containsRecord(1L));
    assertThat(response).satisfies(succeededWithMetadata("has_more", BooleanValue.TRUE));
    assertFalse(response.hasMetadata("db"));
    assertFalse(response.hasMetadata("bookmark"));
    machine.process(newPullMessage(2L), recorder);
    response = recorder.nextResponse();
    assertThat(response).satisfies(containsRecord(3L));
    assertTrue(response.hasMetadata("type"));
    assertTrue(response.hasMetadata("t_last"));
    assertTrue(response.hasMetadata("bookmark"));
    assertTrue(response.hasMetadata("db"));
    assertThat(machine.state()).isInstanceOf(ReadyState.class);
}
Also used : BoltStateMachineV4(org.neo4j.bolt.v4.BoltStateMachineV4) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) RecordedBoltResponse(org.neo4j.bolt.testing.RecordedBoltResponse) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 13 with BoltStateMachineV4

use of org.neo4j.bolt.v4.BoltStateMachineV4 in project neo4j by neo4j.

the class AutoCommitStateIT method shouldThrowExceptionOnIllegalMessagesInAutoCommitState.

private void shouldThrowExceptionOnIllegalMessagesInAutoCommitState(RequestMessage message) throws Throwable {
    // Given
    BoltStateMachineV4 machine = newStateMachine();
    machine.process(newHelloMessage(), nullResponseHandler());
    machine.process(new RunMessage("CREATE (n {k:'k'}) RETURN n.k", EMPTY_PARAMS), nullResponseHandler());
    assertThat(machine.state()).isInstanceOf(AutoCommitState.class);
    // when
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    verifyKillsConnection(() -> machine.process(message, recorder));
    // then
    assertThat(recorder.nextResponse()).satisfies(failedWithStatus(Status.Request.Invalid));
    assertNull(machine.state());
}
Also used : BoltStateMachineV4(org.neo4j.bolt.v4.BoltStateMachineV4) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) RunMessage(org.neo4j.bolt.v4.messaging.RunMessage)

Example 14 with BoltStateMachineV4

use of org.neo4j.bolt.v4.BoltStateMachineV4 in project neo4j by neo4j.

the class BoltStateMachineV4Test method shouldSetPendingErrorOnMarkFailedIfNoHandler.

@Test
void shouldSetPendingErrorOnMarkFailedIfNoHandler() {
    BoltStateMachineSPIImpl spi = mock(BoltStateMachineSPIImpl.class);
    BoltChannel boltChannel = mock(BoltChannel.class);
    var memoryTracker = mock(MemoryTracker.class);
    BoltStateMachine machine = new BoltStateMachineV4(spi, boltChannel, Clock.systemUTC(), mock(DefaultDatabaseResolver.class), MapValue.EMPTY, memoryTracker);
    Neo4jError error = Neo4jError.from(Status.Request.NoThreadsAvailable, "no threads");
    machine.markFailed(error);
    assertEquals(error, pendingError(machine));
    assertThat(machine).satisfies(inState(FailedState.class));
}
Also used : Neo4jError(org.neo4j.bolt.runtime.Neo4jError) BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltChannel(org.neo4j.bolt.BoltChannel) BoltStateMachineV4(org.neo4j.bolt.v4.BoltStateMachineV4) DefaultDatabaseResolver(org.neo4j.kernel.database.DefaultDatabaseResolver) FailedState(org.neo4j.bolt.v4.runtime.FailedState) Test(org.junit.jupiter.api.Test)

Example 15 with BoltStateMachineV4

use of org.neo4j.bolt.v4.BoltStateMachineV4 in project neo4j by neo4j.

the class InTransactionStateIT method shouldStayInTxOnAnotherRun_succ.

@Test
void shouldStayInTxOnAnotherRun_succ() throws Throwable {
    // Given
    BoltStateMachineV4 machine = getBoltStateMachineInTxState();
    // When
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    machine.process(new RunMessage("MATCH (n) RETURN n LIMIT 1"), recorder);
    // Then
    RecordedBoltResponse response = recorder.nextResponse();
    assertThat(response).satisfies(succeeded());
    assertFalse(response.hasMetadata("bookmark"));
    assertThat(machine.state()).isInstanceOf(InTransactionState.class);
}
Also used : BoltStateMachineV4(org.neo4j.bolt.v4.BoltStateMachineV4) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) RecordedBoltResponse(org.neo4j.bolt.testing.RecordedBoltResponse) RunMessage(org.neo4j.bolt.v4.messaging.RunMessage) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

BoltStateMachineV4 (org.neo4j.bolt.v4.BoltStateMachineV4)31 BoltResponseRecorder (org.neo4j.bolt.testing.BoltResponseRecorder)25 Test (org.junit.jupiter.api.Test)21 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)21 RecordedBoltResponse (org.neo4j.bolt.testing.RecordedBoltResponse)12 RunMessage (org.neo4j.bolt.v4.messaging.RunMessage)9 BeginMessage (org.neo4j.bolt.v4.messaging.BeginMessage)4 BoltChannel (org.neo4j.bolt.BoltChannel)3 BoltStateMachine (org.neo4j.bolt.runtime.statemachine.BoltStateMachine)3 DefaultDatabaseResolver (org.neo4j.kernel.database.DefaultDatabaseResolver)3 MethodSource (org.junit.jupiter.params.provider.MethodSource)2 BoltResponseHandler (org.neo4j.bolt.runtime.BoltResponseHandler)1 Neo4jError (org.neo4j.bolt.runtime.Neo4jError)1 BoltStateMachineSPI (org.neo4j.bolt.runtime.statemachine.BoltStateMachineSPI)1 StatementProcessorReleaseManager (org.neo4j.bolt.runtime.statemachine.StatementProcessorReleaseManager)1 TransactionStateMachineSPIProvider (org.neo4j.bolt.runtime.statemachine.TransactionStateMachineSPIProvider)1 FailedState (org.neo4j.bolt.v4.runtime.FailedState)1