Search in sources :

Example 46 with BoltStateMachine

use of org.neo4j.bolt.v1.runtime.BoltStateMachine in project neo4j by neo4j.

the class TransactionIT method shouldInterpretEmptyStatementAsReuseLastStatementInAutocommitTransaction.

@Test
public void shouldInterpretEmptyStatementAsReuseLastStatementInAutocommitTransaction() throws Throwable {
    // Given
    final BoltStateMachine machine = env.newMachine(CONNECTION_DESCRIPTOR);
    machine.init(USER_AGENT, emptyMap(), null);
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    // When
    machine.run("RETURN 1", emptyMap(), nullResponseHandler());
    machine.pullAll(recorder);
    machine.run("", emptyMap(), nullResponseHandler());
    machine.pullAll(recorder);
    // Then
    assertThat(recorder.nextResponse(), succeededWithRecord(1L));
    assertThat(recorder.nextResponse(), succeededWithRecord(1L));
}
Also used : BoltStateMachine(org.neo4j.bolt.v1.runtime.BoltStateMachine) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) Test(org.junit.Test)

Example 47 with BoltStateMachine

use of org.neo4j.bolt.v1.runtime.BoltStateMachine in project neo4j by neo4j.

the class TransactionIT method shouldHandleBeginRollback.

@Test
public void shouldHandleBeginRollback() throws Throwable {
    // Given
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    BoltStateMachine machine = env.newMachine(CONNECTION_DESCRIPTOR);
    machine.init(USER_AGENT, emptyMap(), null);
    // When
    machine.run("BEGIN", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    machine.run("CREATE (n:InTx)", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    machine.run("ROLLBACK", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    // Then
    assertThat(recorder.nextResponse(), succeeded());
    assertThat(recorder.nextResponse(), succeeded());
    assertThat(recorder.nextResponse(), succeeded());
}
Also used : BoltStateMachine(org.neo4j.bolt.v1.runtime.BoltStateMachine) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) Test(org.junit.Test)

Example 48 with BoltStateMachine

use of org.neo4j.bolt.v1.runtime.BoltStateMachine in project neo4j by neo4j.

the class TransactionIT method shouldHandleBeginCommit.

@Test
public void shouldHandleBeginCommit() throws Throwable {
    // Given
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    BoltStateMachine machine = env.newMachine(CONNECTION_DESCRIPTOR);
    machine.init(USER_AGENT, emptyMap(), null);
    // When
    machine.run("BEGIN", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    machine.run("CREATE (n:InTx)", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    machine.run("COMMIT", emptyMap(), recorder);
    machine.discardAll(nullResponseHandler());
    // Then
    assertThat(recorder.nextResponse(), succeeded());
    assertThat(recorder.nextResponse(), succeeded());
    assertThat(recorder.nextResponse(), succeeded());
}
Also used : BoltStateMachine(org.neo4j.bolt.v1.runtime.BoltStateMachine) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) Test(org.junit.Test)

Example 49 with BoltStateMachine

use of org.neo4j.bolt.v1.runtime.BoltStateMachine in project neo4j by neo4j.

the class TransactionIT method shouldFailNicelyWhenOutOfOrderRollback.

@Test
public void shouldFailNicelyWhenOutOfOrderRollback() throws Throwable {
    // Given
    BoltResponseRecorder runRecorder = new BoltResponseRecorder();
    BoltResponseRecorder pullAllRecorder = new BoltResponseRecorder();
    BoltStateMachine machine = env.newMachine(CONNECTION_DESCRIPTOR);
    machine.init(USER_AGENT, emptyMap(), null);
    // When
    machine.run("ROLLBACK", emptyMap(), runRecorder);
    machine.pullAll(pullAllRecorder);
    // Then
    assertThat(runRecorder.nextResponse(), failedWithStatus(Status.Statement.SemanticError));
    assertThat(pullAllRecorder.nextResponse(), wasIgnored());
}
Also used : BoltStateMachine(org.neo4j.bolt.v1.runtime.BoltStateMachine) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) Test(org.junit.Test)

Example 50 with BoltStateMachine

use of org.neo4j.bolt.v1.runtime.BoltStateMachine in project neo4j by neo4j.

the class TransactionIT method shouldInterpretEmptyStatementAsReuseLastStatementInExplicitTransaction.

@Test
public void shouldInterpretEmptyStatementAsReuseLastStatementInExplicitTransaction() throws Throwable {
    // Given
    final BoltStateMachine machine = env.newMachine(CONNECTION_DESCRIPTOR);
    machine.init(USER_AGENT, emptyMap(), null);
    BoltResponseRecorder recorder = new BoltResponseRecorder();
    // When
    machine.run("BEGIN", emptyMap(), nullResponseHandler());
    machine.discardAll(nullResponseHandler());
    machine.run("RETURN 1", emptyMap(), nullResponseHandler());
    machine.pullAll(recorder);
    machine.run("", emptyMap(), nullResponseHandler());
    machine.pullAll(recorder);
    machine.run("COMMIT", emptyMap(), nullResponseHandler());
    machine.discardAll(nullResponseHandler());
    // Then
    assertThat(recorder.nextResponse(), succeededWithRecord(1L));
    assertThat(recorder.nextResponse(), succeededWithRecord(1L));
}
Also used : BoltStateMachine(org.neo4j.bolt.v1.runtime.BoltStateMachine) BoltResponseRecorder(org.neo4j.bolt.testing.BoltResponseRecorder) Test(org.junit.Test)

Aggregations

BoltStateMachine (org.neo4j.bolt.v1.runtime.BoltStateMachine)49 Test (org.junit.Test)43 BoltResponseRecorder (org.neo4j.bolt.testing.BoltResponseRecorder)31 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)6 HashMap (java.util.HashMap)4 SocketTransportHandler (org.neo4j.bolt.transport.SocketTransportHandler)4 BoltConnectionFatality (org.neo4j.bolt.v1.runtime.BoltConnectionFatality)4 SynchronousBoltWorker (org.neo4j.bolt.v1.runtime.SynchronousBoltWorker)4 ByteBuf (io.netty.buffer.ByteBuf)3 Channel (io.netty.channel.Channel)3 InetSocketAddress (java.net.InetSocketAddress)3 BaseMatcher (org.hamcrest.BaseMatcher)3 Description (org.hamcrest.Description)3 BoltConnectionDescriptor (org.neo4j.bolt.v1.runtime.BoltConnectionDescriptor)3 Record (org.neo4j.bolt.v1.runtime.spi.Record)3 ProtocolChooser (org.neo4j.bolt.transport.ProtocolChooser)2 BoltResponseHandler (org.neo4j.bolt.v1.runtime.BoltResponseHandler)2 StatementProcessor (org.neo4j.bolt.v1.runtime.StatementProcessor)2 BoltResult (org.neo4j.bolt.v1.runtime.spi.BoltResult)2 BoltProtocolV1 (org.neo4j.bolt.v1.transport.BoltProtocolV1)2