@Override @Test public void decodeToMono() { Mono<DataBuffer> input = dataBuffer(this.testMsg1); testDecodeToMonoAll(input, Msg.class, step -> step .expectNext(this.testMsg1) .verifyComplete()); }
@Test public void exceedMaxSize() { this.decoder.setMaxMessageSize(1); Mono<DataBuffer> input = dataBuffer(this.testMsg1); testDecode(input, Msg.class, step -> step .verifyError(DecodingException.class)); }
}); testDecode(input, Msg.class, step -> step .expectNext(bigMessage) .expectNext(bigMessage)
@Test public void decodeChunksToMono() { byte[] full = this.testMsg1.toByteArray(); byte[] chunk1 = Arrays.copyOfRange(full, 0, full.length / 2); byte[] chunk2 = Arrays.copyOfRange(full, chunk1.length, full.length); Flux<DataBuffer> input = Flux.just(chunk1, chunk2) .flatMap(bytes -> Mono.defer(() -> { DataBuffer dataBuffer = this.bufferFactory.allocateBuffer(bytes.length); dataBuffer.write(bytes); return Mono.just(dataBuffer); })); testDecodeToMono(input, Msg.class, step -> step .expectNext(this.testMsg1) .verifyComplete()); }
@Override @Test public void decode() { Flux<DataBuffer> input = Flux.just(this.testMsg1, this.testMsg2) .flatMap(msg -> Mono.defer(() -> { DataBuffer buffer = this.bufferFactory.allocateBuffer(); try { msg.writeDelimitedTo(buffer.asOutputStream()); return Mono.just(buffer); } catch (IOException e) { release(buffer); return Mono.error(e); } })); testDecodeAll(input, Msg.class, step -> step .expectNext(this.testMsg1) .expectNext(this.testMsg2) .verifyComplete()); }
@Test public void decodeSplitChunks() { Flux<DataBuffer> input = Flux.just(this.testMsg1, this.testMsg2) .flatMap(msg -> Mono.defer(() -> { DataBuffer buffer = this.bufferFactory.allocateBuffer(); try { msg.writeDelimitedTo(buffer.asOutputStream()); return Mono.just(buffer); } catch (IOException e) { release(buffer); return Mono.error(e); } })) .flatMap(buffer -> { int len = buffer.readableByteCount() / 2; Flux<DataBuffer> result = Flux.just( DataBufferUtils.retain(buffer.slice(0, len)), DataBufferUtils .retain(buffer.slice(len, buffer.readableByteCount() - len)) ); release(buffer); return result; }); testDecode(input, Msg.class, step -> step .expectNext(this.testMsg1) .expectNext(this.testMsg2) .verifyComplete()); }