Skip to content

Commit c6387cc

Browse files
committed
provides failing test
Signed-off-by: Oleh Dokuka <[email protected]>
1 parent 29cd7bc commit c6387cc

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

rsocket-core/src/test/java/io/rsocket/core/RSocketRequesterTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.netty.buffer.ByteBuf;
2727
import io.netty.buffer.ByteBufAllocator;
2828
import io.rsocket.Payload;
29+
import io.netty.util.CharsetUtil;
2930
import io.rsocket.exceptions.ApplicationErrorException;
3031
import io.rsocket.exceptions.RejectedSetupException;
3132
import io.rsocket.frame.*;
@@ -36,6 +37,7 @@
3637
import io.rsocket.util.MultiSubscriberRSocket;
3738
import java.time.Duration;
3839
import java.util.ArrayList;
40+
import java.util.Iterator;
3941
import java.util.List;
4042
import java.util.stream.Collectors;
4143
import org.assertj.core.api.Assertions;
@@ -215,6 +217,43 @@ public void testChannelRequestServerSideCancellation() {
215217
Assertions.assertThat(request.isDisposed()).isTrue();
216218
}
217219

220+
@Test
221+
public void testCorrectFrameOrder() {
222+
MonoProcessor<Object> delayer = MonoProcessor.create();
223+
BaseSubscriber<Payload> subscriber =
224+
new BaseSubscriber<Payload>() {
225+
@Override
226+
protected void hookOnSubscribe(Subscription subscription) {}
227+
};
228+
rule.socket
229+
.requestChannel(
230+
Flux.concat(Flux.just(0).delayUntil(i -> delayer), Flux.range(1, 999))
231+
.map(i -> DefaultPayload.create(i + "")))
232+
.subscribe(subscriber);
233+
234+
subscriber.request(1);
235+
subscriber.request(Long.MAX_VALUE);
236+
delayer.onComplete();
237+
238+
Iterator<ByteBuf> iterator = rule.connection.getSent().iterator();
239+
240+
ByteBuf initialFrame = iterator.next();
241+
242+
Assertions.assertThat(FrameHeaderFlyweight.frameType(initialFrame)).isEqualTo(REQUEST_CHANNEL);
243+
Assertions.assertThat(RequestChannelFrameFlyweight.initialRequestN(initialFrame)).isEqualTo(1);
244+
Assertions.assertThat(
245+
RequestChannelFrameFlyweight.data(initialFrame).toString(CharsetUtil.UTF_8))
246+
.isEqualTo("0");
247+
248+
ByteBuf requestNFrame = iterator.next();
249+
250+
Assertions.assertThat(FrameHeaderFlyweight.frameType(requestNFrame)).isEqualTo(REQUEST_N);
251+
Assertions.assertThat(RequestNFrameFlyweight.requestN(requestNFrame))
252+
.isEqualTo(Integer.MAX_VALUE);
253+
254+
Assertions.assertThat(iterator.hasNext()).isFalse();
255+
}
256+
218257
public int sendRequestResponse(Publisher<Payload> response) {
219258
Subscriber<Payload> sub = TestSubscriber.create();
220259
response.subscribe(sub);

0 commit comments

Comments
 (0)