use of org.neo4j.bolt.messaging.BoltIOException in project neo4j by neo4j.
the class ChunkedOutput method flush.
@Override
public PackOutput flush() throws IOException {
if (buffer != null && buffer.readableBytes() > 0) {
closeChunkIfOpen();
// check for and apply write throttles
try {
throttleGroup.writeThrottle().acquire(channel);
} catch (TransportThrottleException ex) {
throw new BoltIOException(Status.Request.InvalidUsage, ex.getMessage(), ex);
}
// Local copy and clear the buffer field. This ensures that the buffer is not re-released if the flush call fails
ByteBuf out = this.buffer;
this.buffer = null;
channel.writeAndFlush(out, channel.voidPromise());
buffer = allocateBuffer();
}
return this;
}
use of org.neo4j.bolt.messaging.BoltIOException in project neo4j by neo4j.
the class HelloMessageDecoderTest method shouldThrowExceptionOnIncorrectRoutingContextFormat.
@Test
public void shouldThrowExceptionOnIncorrectRoutingContextFormat() throws Exception {
Map<String, Object> meta = new HashMap<>();
// incorrect Map type params
Map<String, Integer> routingContext = new HashMap<>();
routingContext.put("policy", 4);
Neo4jPack neo4jPack = newNeo4jPack();
meta.put("user_agent", "My Driver");
meta.put("routing", routingContext);
HelloMessage originalMessage = new HelloMessage(meta, null, meta);
PackedInputArray input = new PackedInputArray(encode(neo4jPack, originalMessage));
Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
// these two steps are executed before decoding in order to select a correct decoder
unpacker.unpackStructHeader();
unpacker.unpackStructSignature();
BoltIOException ex = assertThrows(BoltIOException.class, () -> decoder.decode(unpacker));
assertEquals("Routing information in the HELLO message must be a map with string keys and string values.", ex.getMessage());
}
use of org.neo4j.bolt.messaging.BoltIOException in project neo4j by neo4j.
the class DiscardMessageTest method shouldThrowExceptionIfZero.
@ParameterizedTest
@ValueSource(longs = { -100L, 0L })
void shouldThrowExceptionIfZero(long value) throws Throwable {
// When & Then
BoltIOException exception = assertThrows(BoltIOException.class, () -> new DiscardMessage(asMapValue(singletonMap("n", value))));
assertThat(exception.getMessage()).startsWith("Expecting DISCARD size to be at least 1");
}
use of org.neo4j.bolt.messaging.BoltIOException in project neo4j by neo4j.
the class AbstractTransactionInitiatingMessage method shouldThrowExceptionIfFailedToParseTransactionMetadataCorrectly.
@Test
void shouldThrowExceptionIfFailedToParseTransactionMetadataCorrectly() throws Throwable {
// Given
Map<String, Object> msgMetadata = map("tx_metadata", "invalid value type");
MapValue meta = ValueUtils.asMapValue(msgMetadata);
// When & Then
BoltIOException exception = assertThrows(BoltIOException.class, () -> createMessage(meta));
assertThat(exception.getMessage()).startsWith("Expecting transaction metadata value to be a Map value");
}
use of org.neo4j.bolt.messaging.BoltIOException in project neo4j by neo4j.
the class AbstractTransactionInitiatingMessage method shouldThrowExceptionIfFailedToParseTransactionTimeoutCorrectly.
@Test
void shouldThrowExceptionIfFailedToParseTransactionTimeoutCorrectly() throws Throwable {
// Given
Map<String, Object> msgMetadata = map("tx_timeout", "invalid value type");
MapValue meta = ValueUtils.asMapValue(msgMetadata);
// When & Then
BoltIOException exception = assertThrows(BoltIOException.class, () -> createMessage(meta));
assertThat(exception.getMessage()).startsWith("Expecting transaction timeout value to be a Long value");
}
Aggregations