Fix buffer leaks in BinaryMemcacheDecoderTest
This commit is contained in:
parent
f03f1eaaba
commit
5e86ccace9
@ -21,6 +21,8 @@ import io.netty.channel.embedded.EmbeddedChannel;
|
||||
import io.netty.handler.codec.memcache.LastMemcacheContent;
|
||||
import io.netty.handler.codec.memcache.MemcacheContent;
|
||||
import io.netty.util.CharsetUtil;
|
||||
import io.netty.util.ReferenceCounted;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
@ -71,6 +73,11 @@ public class BinaryMemcacheDecoderTest {
|
||||
channel = new EmbeddedChannel(new BinaryMemcacheRequestDecoder());
|
||||
}
|
||||
|
||||
@After
|
||||
public void teardown() throws Exception {
|
||||
channel.finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* This tests a simple GET request with a key as the value.
|
||||
*/
|
||||
@ -151,6 +158,8 @@ public class BinaryMemcacheDecoderTest {
|
||||
assertThat(request.getKey(), notNullValue());
|
||||
assertThat(request.getExtras(), nullValue());
|
||||
|
||||
request.release();
|
||||
|
||||
MemcacheContent content1 = (MemcacheContent) channel.readInbound();
|
||||
MemcacheContent content2 = (MemcacheContent) channel.readInbound();
|
||||
|
||||
@ -159,6 +168,9 @@ public class BinaryMemcacheDecoderTest {
|
||||
|
||||
assertThat(content1.content().readableBytes(), is(3));
|
||||
assertThat(content2.content().readableBytes(), is(5));
|
||||
|
||||
content1.release();
|
||||
content2.release();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -172,12 +184,20 @@ public class BinaryMemcacheDecoderTest {
|
||||
BinaryMemcacheRequest request = (BinaryMemcacheRequest) channel.readInbound();
|
||||
assertThat(request, instanceOf(BinaryMemcacheRequest.class));
|
||||
assertThat(request, notNullValue());
|
||||
assertThat(channel.readInbound(), instanceOf(LastMemcacheContent.class));
|
||||
request.release();
|
||||
|
||||
Object lastContent = channel.readInbound();
|
||||
assertThat(lastContent, instanceOf(LastMemcacheContent.class));
|
||||
((ReferenceCounted) lastContent).release();
|
||||
|
||||
request = (BinaryMemcacheRequest) channel.readInbound();
|
||||
assertThat(request, instanceOf(BinaryMemcacheRequest.class));
|
||||
assertThat(request, notNullValue());
|
||||
assertThat(channel.readInbound(), instanceOf(LastMemcacheContent.class));
|
||||
request.release();
|
||||
|
||||
lastContent = channel.readInbound();
|
||||
assertThat(lastContent, instanceOf(LastMemcacheContent.class));
|
||||
((ReferenceCounted) lastContent).release();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -192,36 +212,42 @@ public class BinaryMemcacheDecoderTest {
|
||||
BinaryMemcacheResponse response = (BinaryMemcacheResponse) channel.readInbound();
|
||||
assertThat(response.getHeader().getStatus(), is(BinaryMemcacheResponseStatus.KEY_ENOENT));
|
||||
assertThat(response.getHeader().getTotalBodyLength(), is(msgBody.length()));
|
||||
response.release();
|
||||
|
||||
// First message first content chunk
|
||||
MemcacheContent content = (MemcacheContent) channel.readInbound();
|
||||
assertThat(content, instanceOf(LastMemcacheContent.class));
|
||||
assertThat(content.content().toString(CharsetUtil.UTF_8), is(msgBody));
|
||||
content.release();
|
||||
|
||||
// Second message
|
||||
response = (BinaryMemcacheResponse) channel.readInbound();
|
||||
assertThat(response.getHeader().getStatus(), is(BinaryMemcacheResponseStatus.KEY_ENOENT));
|
||||
assertThat(response.getHeader().getTotalBodyLength(), is(msgBody.length()));
|
||||
response.release();
|
||||
|
||||
// Second message first content chunk
|
||||
content = (MemcacheContent) channel.readInbound();
|
||||
assertThat(content, instanceOf(MemcacheContent.class));
|
||||
assertThat(content.content().toString(CharsetUtil.UTF_8), is(msgBody.substring(0, 7)));
|
||||
content.release();
|
||||
|
||||
// Second message second content chunk
|
||||
content = (MemcacheContent) channel.readInbound();
|
||||
assertThat(content, instanceOf(LastMemcacheContent.class));
|
||||
assertThat(content.content().toString(CharsetUtil.UTF_8), is(msgBody.substring(7, 9)));
|
||||
content.release();
|
||||
|
||||
// Third message
|
||||
response = (BinaryMemcacheResponse) channel.readInbound();
|
||||
assertThat(response.getHeader().getStatus(), is(BinaryMemcacheResponseStatus.KEY_ENOENT));
|
||||
assertThat(response.getHeader().getTotalBodyLength(), is(msgBody.length()));
|
||||
response.release();
|
||||
|
||||
// Third message first content chunk
|
||||
content = (MemcacheContent) channel.readInbound();
|
||||
assertThat(content, instanceOf(LastMemcacheContent.class));
|
||||
assertThat(content.content().toString(CharsetUtil.UTF_8), is(msgBody));
|
||||
content.release();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user