@Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { log.debug("write: msg={}", msg); if (msg instanceof SegmentedData) { SegmentedData segmentedData = (SegmentedData) msg; HttpContent content = buildContent(segmentedData); getProxyRequestQueue(ctx) .onRequestWriteOrEnqueue(ctx, segmentedData.streamId(), content, promise); } else if (msg instanceof Request) { Request request = (Request) msg; HttpRequest message = buildRequest(request); getProxyRequestQueue(ctx).onRequestWriteOrEnqueue(ctx, request.streamId(), message, promise); } else { ctx.write(msg, promise); } } }
subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1a", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1a"), any()); assertTrue(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1b", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1b"), any()); assertTrue(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 5, "request 2a", mock(ChannelPromise.class)); verify(mockCtx, never()).write(eq("request 2a"), any()); assertFalse(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1c", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1c"), any()); assertFalse(subject.isEmpty());
subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1a", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1a"), any()); assertTrue(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1b", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1b"), any()); assertTrue(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 5, "request 2a", mock(ChannelPromise.class)); verify(mockCtx, never()).write(eq("request 2a"), any()); assertFalse(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 3, "request 1c", mock(ChannelPromise.class)); verify(mockCtx).write(eq("request 1c"), any()); assertFalse(subject.isEmpty()); subject.onRequestWriteOrEnqueue(mockCtx, 5, "request 2b", mock(ChannelPromise.class)); verify(mockCtx, never()).write(eq("request 2b"), any()); assertFalse(subject.isEmpty());