Add unit test for leak aware CompositeByteBuf that proves that there is no NPE (#9875)
Motivation: https://github.com/netty/netty/issues/9873 reported a NPE in previous version of netty. We should add a unit test to verify there is no more NPE Modifications: Add a unit test Result: Prove that https://github.com/netty/netty/issues/9873 is fixed
This commit is contained in:
parent
0611683106
commit
5b387975b8
@ -15,7 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package io.netty.buffer;
|
package io.netty.buffer;
|
||||||
|
|
||||||
|
import io.netty.util.ByteProcessor;
|
||||||
import io.netty.util.ResourceLeakTracker;
|
import io.netty.util.ResourceLeakTracker;
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -23,7 +25,9 @@ import org.junit.Test;
|
|||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertSame;
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class SimpleLeakAwareCompositeByteBufTest extends WrappedCompositeByteBufTest {
|
public class SimpleLeakAwareCompositeByteBufTest extends WrappedCompositeByteBufTest {
|
||||||
@ -131,6 +135,26 @@ public class SimpleLeakAwareCompositeByteBufTest extends WrappedCompositeByteBuf
|
|||||||
assertWrapped(newBuffer(8).asReadOnly());
|
assertWrapped(newBuffer(8).asReadOnly());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void forEachByteUnderLeakDetectionShouldNotThrowException() {
|
||||||
|
CompositeByteBuf buf = (CompositeByteBuf) newBuffer(8);
|
||||||
|
assertThat(buf, CoreMatchers.instanceOf(SimpleLeakAwareCompositeByteBuf.class));
|
||||||
|
CompositeByteBuf comp = (CompositeByteBuf) newBuffer(8);
|
||||||
|
assertThat(comp, CoreMatchers.instanceOf(SimpleLeakAwareCompositeByteBuf.class));
|
||||||
|
|
||||||
|
ByteBuf inner = comp.alloc().directBuffer(1).writeByte(0);
|
||||||
|
comp.addComponent(true, inner);
|
||||||
|
buf.addComponent(true, comp);
|
||||||
|
|
||||||
|
assertEquals(-1, buf.forEachByte(new ByteProcessor() {
|
||||||
|
@Override
|
||||||
|
public boolean process(byte value) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
assertTrue(buf.release());
|
||||||
|
}
|
||||||
|
|
||||||
protected final void assertWrapped(ByteBuf buf) {
|
protected final void assertWrapped(ByteBuf buf) {
|
||||||
try {
|
try {
|
||||||
assertSame(clazz, buf.getClass());
|
assertSame(clazz, buf.getClass());
|
||||||
|
Loading…
Reference in New Issue
Block a user