Search in sources :

Example 1 with BoltRequestMessageReader

use of org.neo4j.bolt.messaging.BoltRequestMessageReader in project neo4j by neo4j.

the class BoltRequestMessageReaderV41Test 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());
}
Also used : BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) BoltProtocolV41ComponentFactory.newNeo4jPack(org.neo4j.bolt.v41.BoltProtocolV41ComponentFactory.newNeo4jPack) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack)

Example 2 with BoltRequestMessageReader

use of org.neo4j.bolt.messaging.BoltRequestMessageReader in project neo4j by neo4j.

the class BoltRequestMessageReaderV43Test 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());
}
Also used : BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV43ComponentFactory.newNeo4jPack(org.neo4j.bolt.v43.BoltProtocolV43ComponentFactory.newNeo4jPack)

Example 3 with BoltRequestMessageReader

use of org.neo4j.bolt.messaging.BoltRequestMessageReader in project neo4j by neo4j.

the class BoltRequestMessageV3Test method unpack.

private <T extends RequestMessage> T unpack(RecordingByteChannel channel) throws Exception {
    List<RequestMessage> messages = new ArrayList<>();
    BoltStateMachine stateMachine = mock(BoltStateMachine.class);
    doAnswer((Answer<Void>) invocationOnMock -> {
        RequestMessage msg = invocationOnMock.getArgument(0);
        messages.add(msg);
        return null;
    }).when(stateMachine).process(any(), any());
    BoltRequestMessageReader reader = new BoltRequestMessageReaderV3(new SynchronousBoltConnection(stateMachine), mock(BoltResponseMessageWriter.class), mock(ChannelProtector.class), NullLogService.getInstance());
    byte[] bytes = channel.getBytes();
    String serialized = HexPrinter.hex(bytes);
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(new PackedInputArray(bytes));
    try {
        reader.read(unpacker);
    } catch (Throwable e) {
        throw new AssertionError("Failed to unpack message, wire data was:\n" + serialized + "[" + bytes.length + "b]", e);
    }
    return (T) messages.get(0);
}
Also used : PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) ResetMessage(org.neo4j.bolt.v3.messaging.request.ResetMessage) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) AnyValue(org.neo4j.values.AnyValue) MapUtil.map(org.neo4j.internal.helpers.collection.MapUtil.map) System.lineSeparator(java.lang.System.lineSeparator) NullLogService(org.neo4j.logging.internal.NullLogService) HexPrinter(org.neo4j.common.HexPrinter) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) NodeValue(org.neo4j.values.virtual.NodeValue) GOODBYE_MESSAGE(org.neo4j.bolt.v3.messaging.request.GoodbyeMessage.GOODBYE_MESSAGE) BoltRequestMessageWriter(org.neo4j.bolt.messaging.BoltRequestMessageWriter) ArrayList(java.util.ArrayList) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) Answer(org.mockito.stubbing.Answer) DiscardAllMessage(org.neo4j.bolt.v3.messaging.request.DiscardAllMessage) VirtualValues.map(org.neo4j.values.virtual.VirtualValues.map) RecordingByteChannel(org.neo4j.bolt.messaging.RecordingByteChannel) Mockito.doAnswer(org.mockito.Mockito.doAnswer) MapValue(org.neo4j.values.virtual.MapValue) PullAllMessage(org.neo4j.bolt.v3.messaging.request.PullAllMessage) ChannelProtector(org.neo4j.bolt.transport.pipeline.ChannelProtector) VirtualValues(org.neo4j.values.virtual.VirtualValues) MessageConditions.serialize(org.neo4j.bolt.testing.MessageConditions.serialize) BoltResponseMessageWriter(org.neo4j.bolt.messaging.BoltResponseMessageWriter) SynchronousBoltConnection(org.neo4j.bolt.runtime.SynchronousBoltConnection) ValueUtils(org.neo4j.kernel.impl.util.ValueUtils) RelationshipValue(org.neo4j.values.virtual.RelationshipValue) BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) VirtualValues.relationshipValue(org.neo4j.values.virtual.VirtualValues.relationshipValue) Values.stringArray(org.neo4j.values.storable.Values.stringArray) RequestMessage(org.neo4j.bolt.messaging.RequestMessage) BufferedChannelOutput(org.neo4j.bolt.packstream.BufferedChannelOutput) HelloMessage(org.neo4j.bolt.v3.messaging.request.HelloMessage) IOException(java.io.IOException) BeginMessage(org.neo4j.bolt.v3.messaging.request.BeginMessage) Values.stringValue(org.neo4j.values.storable.Values.stringValue) RunMessage(org.neo4j.bolt.v3.messaging.request.RunMessage) Test(org.junit.jupiter.api.Test) VirtualValues.nodeValue(org.neo4j.values.virtual.VirtualValues.nodeValue) List(java.util.List) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack) COMMIT_MESSAGE(org.neo4j.bolt.v3.messaging.request.CommitMessage.COMMIT_MESSAGE) Values.intValue(org.neo4j.values.storable.Values.intValue) ROLLBACK_MESSAGE(org.neo4j.bolt.v3.messaging.request.RollbackMessage.ROLLBACK_MESSAGE) RecordMessage(org.neo4j.bolt.v3.messaging.response.RecordMessage) Mockito.mock(org.mockito.Mockito.mock) BoltResponseMessageWriter(org.neo4j.bolt.messaging.BoltResponseMessageWriter) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) SynchronousBoltConnection(org.neo4j.bolt.runtime.SynchronousBoltConnection) ArrayList(java.util.ArrayList) ChannelProtector(org.neo4j.bolt.transport.pipeline.ChannelProtector) BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) RequestMessage(org.neo4j.bolt.messaging.RequestMessage) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack)

Example 4 with BoltRequestMessageReader

use of org.neo4j.bolt.messaging.BoltRequestMessageReader in project neo4j by neo4j.

the class MessageDecoderTest method shouldLogContentOfTheMessageOnError.

@ParameterizedTest
@MethodSource("argumentsProvider")
public void shouldLogContentOfTheMessageOnError(Neo4jPack packerUnderTest) throws Exception {
    this.packerUnderTest = packerUnderTest;
    BoltRequestMessageReader requestMessageReader = mock(BoltRequestMessageReader.class);
    RuntimeException error = new RuntimeException("Hello!");
    doThrow(error).when(requestMessageReader).read(any());
    LogService logService = mock(LogService.class);
    Log log = mock(Log.class);
    when(logService.getInternalLog(MessageDecoder.class)).thenReturn(log);
    channel = new EmbeddedChannel(new MessageDecoder(packerUnderTest::newUnpacker, requestMessageReader, logService));
    byte[] messageBytes = packMessageWithSignature(RunMessage.SIGNATURE);
    var e = assertThrows(RuntimeException.class, () -> channel.writeInbound(Unpooled.wrappedBuffer(messageBytes)));
    assertEquals(error, e);
    assertMessageHexDumpLogged(log, messageBytes);
}
Also used : MessageDecoder(org.neo4j.bolt.transport.pipeline.MessageDecoder) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) Log(org.neo4j.logging.Log) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) NullLogService(org.neo4j.logging.internal.NullLogService) LogService(org.neo4j.logging.internal.LogService) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 5 with BoltRequestMessageReader

use of org.neo4j.bolt.messaging.BoltRequestMessageReader in project neo4j by neo4j.

the class BoltRequestMessageReaderV4Test 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());
}
Also used : BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) BoltProtocolV4ComponentFactory.newNeo4jPack(org.neo4j.bolt.v4.BoltProtocolV4ComponentFactory.newNeo4jPack) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack)

Aggregations

BoltRequestMessageReader (org.neo4j.bolt.messaging.BoltRequestMessageReader)10 Neo4jPack (org.neo4j.bolt.packstream.Neo4jPack)8 PackedInputArray (org.neo4j.bolt.packstream.PackedInputArray)8 BoltStateMachine (org.neo4j.bolt.runtime.statemachine.BoltStateMachine)8 NullLogService (org.neo4j.logging.internal.NullLogService)3 EmbeddedChannel (io.netty.channel.embedded.EmbeddedChannel)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 MethodSource (org.junit.jupiter.params.provider.MethodSource)2 BoltResponseMessageWriter (org.neo4j.bolt.messaging.BoltResponseMessageWriter)2 SynchronousBoltConnection (org.neo4j.bolt.runtime.SynchronousBoltConnection)2 ChannelProtector (org.neo4j.bolt.transport.pipeline.ChannelProtector)2 MessageDecoder (org.neo4j.bolt.transport.pipeline.MessageDecoder)2 BoltProtocolV3ComponentFactory.newNeo4jPack (org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack)2 BoltProtocolV4ComponentFactory.newNeo4jPack (org.neo4j.bolt.v4.BoltProtocolV4ComponentFactory.newNeo4jPack)2 BoltProtocolV41ComponentFactory.newNeo4jPack (org.neo4j.bolt.v41.BoltProtocolV41ComponentFactory.newNeo4jPack)2 IOException (java.io.IOException)1 System.lineSeparator (java.lang.System.lineSeparator)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1