Skip to content

Instantly share code, notes, and snippets.

@losipiuk
Created July 4, 2012 10:02
Show Gist options
  • Save losipiuk/3046495 to your computer and use it in GitHub Desktop.
Save losipiuk/3046495 to your computer and use it in GitHub Desktop.
UnfinishedChunkedHttpRequestIsLastFlagTest.java
import junit.framework.TestCase;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.handler.codec.embedder.DecoderEmbedder;
import org.jboss.netty.handler.codec.http.HttpChunk;
import org.jboss.netty.handler.codec.http.HttpMessage;
import org.jboss.netty.handler.codec.http.HttpServerCodec;
import java.nio.charset.Charset;
public class UnfinishedChunkedHttpRequestIsLastFlagTest extends TestCase {
private static final Charset UTF8 = Charset.forName("UTF-8");
public void testUnfinishedChunkedHttpRequestIsLastFlag() throws Exception {
int maxChunkSize = 2000;
HttpServerCodec httpServerCodec = new HttpServerCodec(1000, 1000, maxChunkSize);
DecoderEmbedder decoderEmbedder = new DecoderEmbedder<HttpMessage>(httpServerCodec);
int totalContentLength = maxChunkSize * 5;
decoderEmbedder.offer(ChannelBuffers.copiedBuffer("PUT /test HTTP/1.1\r\n" +
"Content-Length: " + totalContentLength + "\r\n" +
"\r\n", UTF8));
int offeredContentLength = (int) (maxChunkSize * 2.5);
decoderEmbedder.offer(prepareDataChunk(offeredContentLength));
decoderEmbedder.finish();
HttpMessage httpMessage = (HttpMessage) decoderEmbedder.poll();
assertTrue(httpMessage.isChunked());
assertNotNull(decoderEmbedder.peek());
int totalBytesPolled = 0;
while (decoderEmbedder.peek() != null) {
HttpChunk httpChunk = (HttpChunk) decoderEmbedder.poll();
totalBytesPolled += httpChunk.getContent().readableBytes();
assertFalse(httpChunk.isLast());
}
assertEquals(offeredContentLength, totalBytesPolled);
}
private ChannelBuffer prepareDataChunk(int size) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < size; ++i) {
sb.append("a");
}
return ChannelBuffers.copiedBuffer(sb.toString(), UTF8);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment