forked from netty/netty
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add common tests for ByteBufAllocator / AbstractByteBufAllocator impl…
…ementations. Motivation: We not had tests for ByteBufAllocator implementations in general. Modifications: Added ByteBufAllocatorTest, AbstractByteBufAllocatorTest and UnpooledByteBufAllocatorTest Result: More tests for allocator implementations.
- Loading branch information
1 parent
0f9b739
commit 756b78b
Showing
7 changed files
with
336 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
buffer/src/test/java/io/netty/buffer/AbstractByteBufAllocatorTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
* Copyright 2017 The Netty Project | ||
* | ||
* The Netty Project licenses this file to you under the Apache License, | ||
* version 2.0 (the "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at: | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
package io.netty.buffer; | ||
|
||
import org.junit.Test; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
import static org.junit.Assert.fail; | ||
|
||
public abstract class AbstractByteBufAllocatorTest extends ByteBufAllocatorTest { | ||
|
||
@Override | ||
protected abstract AbstractByteBufAllocator newAllocator(boolean preferDirect); | ||
|
||
@Override | ||
protected final int defaultMaxCapacity() { | ||
return AbstractByteBufAllocator.DEFAULT_MAX_CAPACITY; | ||
} | ||
|
||
@Override | ||
protected final int defaultMaxComponents() { | ||
return AbstractByteBufAllocator.DEFAULT_MAX_COMPONENTS; | ||
} | ||
|
||
@Test | ||
public void testCalculateNewCapacity() { | ||
testCalculateNewCapacity(true); | ||
testCalculateNewCapacity(false); | ||
} | ||
|
||
private void testCalculateNewCapacity(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
assertEquals(8, allocator.calculateNewCapacity(1, 8)); | ||
assertEquals(7, allocator.calculateNewCapacity(1, 7)); | ||
assertEquals(64, allocator.calculateNewCapacity(1, 129)); | ||
assertEquals(AbstractByteBufAllocator.CALCULATE_THRESHOLD, | ||
allocator.calculateNewCapacity(AbstractByteBufAllocator.CALCULATE_THRESHOLD, | ||
AbstractByteBufAllocator.CALCULATE_THRESHOLD + 1)); | ||
assertEquals(AbstractByteBufAllocator.CALCULATE_THRESHOLD * 2, | ||
allocator.calculateNewCapacity(AbstractByteBufAllocator.CALCULATE_THRESHOLD + 1, | ||
AbstractByteBufAllocator.CALCULATE_THRESHOLD * 4)); | ||
try { | ||
allocator.calculateNewCapacity(8, 7); | ||
fail(); | ||
} catch (IllegalArgumentException e) { | ||
// expected | ||
} | ||
|
||
try { | ||
allocator.calculateNewCapacity(-1, 8); | ||
fail(); | ||
} catch (IllegalArgumentException e) { | ||
// expected | ||
} | ||
} | ||
} |
225 changes: 225 additions & 0 deletions
225
buffer/src/test/java/io/netty/buffer/ByteBufAllocatorTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
/* | ||
* Copyright 2017 The Netty Project | ||
* | ||
* The Netty Project licenses this file to you under the Apache License, | ||
* version 2.0 (the "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at: | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
package io.netty.buffer; | ||
|
||
import org.junit.Test; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
|
||
public abstract class ByteBufAllocatorTest { | ||
|
||
protected abstract int defaultMaxCapacity(); | ||
|
||
protected abstract int defaultMaxComponents(); | ||
|
||
protected abstract ByteBufAllocator newAllocator(boolean preferDirect); | ||
|
||
@Test | ||
public void testBuffer() { | ||
testBuffer(true); | ||
testBuffer(false); | ||
} | ||
|
||
private void testBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.buffer(1); | ||
try { | ||
assertBuffer(buffer, preferDirect, 1, defaultMaxCapacity()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testBufferWithCapacity() { | ||
testBufferWithCapacity(true, 8); | ||
testBufferWithCapacity(false, 8); | ||
} | ||
|
||
private void testBufferWithCapacity(boolean preferDirect, int maxCapacity) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.buffer(1, maxCapacity); | ||
try { | ||
assertBuffer(buffer, preferDirect, 1, maxCapacity); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testHeapBuffer() { | ||
testHeapBuffer(true); | ||
testHeapBuffer(false); | ||
} | ||
|
||
private void testHeapBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.heapBuffer(1); | ||
try { | ||
assertBuffer(buffer, false, 1, defaultMaxCapacity()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testHeapBufferMaxCapacity() { | ||
testHeapBuffer(true, 8); | ||
testHeapBuffer(false, 8); | ||
} | ||
|
||
private void testHeapBuffer(boolean preferDirect, int maxCapacity) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.heapBuffer(1, maxCapacity); | ||
try { | ||
assertBuffer(buffer, false, 1, maxCapacity); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testDirectBuffer() { | ||
testDirectBuffer(true); | ||
testDirectBuffer(false); | ||
} | ||
|
||
private void testDirectBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.directBuffer(1); | ||
try { | ||
assertBuffer(buffer, true, 1, defaultMaxCapacity()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testDirectBufferMaxCapacity() { | ||
testDirectBuffer(true, 8); | ||
testDirectBuffer(false, 8); | ||
} | ||
|
||
private void testDirectBuffer(boolean preferDirect, int maxCapacity) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
ByteBuf buffer = allocator.directBuffer(1, maxCapacity); | ||
try { | ||
assertBuffer(buffer, true, 1, maxCapacity); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testCompositeBuffer() { | ||
testCompositeBuffer(true); | ||
testCompositeBuffer(false); | ||
} | ||
|
||
private void testCompositeBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
CompositeByteBuf buffer = allocator.compositeBuffer(); | ||
try { | ||
assertCompositeByteBuf(buffer, defaultMaxComponents()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testCompositeBufferWithCapacity() { | ||
testCompositeHeapBufferWithCapacity(true, 8); | ||
testCompositeHeapBufferWithCapacity(false, 8); | ||
} | ||
|
||
@Test | ||
public void testCompositeHeapBuffer() { | ||
testCompositeHeapBuffer(true); | ||
testCompositeHeapBuffer(false); | ||
} | ||
|
||
private void testCompositeHeapBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
CompositeByteBuf buffer = allocator.compositeHeapBuffer(); | ||
try { | ||
assertCompositeByteBuf(buffer, defaultMaxComponents()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testCompositeHeapBufferWithCapacity() { | ||
testCompositeHeapBufferWithCapacity(true, 8); | ||
testCompositeHeapBufferWithCapacity(false, 8); | ||
} | ||
|
||
private void testCompositeHeapBufferWithCapacity(boolean preferDirect, int maxNumComponents) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
CompositeByteBuf buffer = allocator.compositeHeapBuffer(maxNumComponents); | ||
try { | ||
assertCompositeByteBuf(buffer, maxNumComponents); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testCompositeDirectBuffer() { | ||
testCompositeDirectBuffer(true); | ||
testCompositeDirectBuffer(false); | ||
} | ||
|
||
private void testCompositeDirectBuffer(boolean preferDirect) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
CompositeByteBuf buffer = allocator.compositeDirectBuffer(); | ||
try { | ||
assertCompositeByteBuf(buffer, defaultMaxComponents()); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
@Test | ||
public void testCompositeDirectBufferWithCapacity() { | ||
testCompositeDirectBufferWithCapacity(true, 8); | ||
testCompositeDirectBufferWithCapacity(false, 8); | ||
} | ||
|
||
private void testCompositeDirectBufferWithCapacity(boolean preferDirect, int maxNumComponents) { | ||
ByteBufAllocator allocator = newAllocator(preferDirect); | ||
CompositeByteBuf buffer = allocator.compositeDirectBuffer(maxNumComponents); | ||
try { | ||
assertCompositeByteBuf(buffer, maxNumComponents); | ||
} finally { | ||
buffer.release(); | ||
} | ||
} | ||
|
||
private static void assertBuffer( | ||
ByteBuf buffer, boolean expectedDirect, int expectedCapacity, int expectedMaxCapacity) { | ||
assertEquals(expectedDirect, buffer.isDirect()); | ||
assertEquals(expectedCapacity, buffer.capacity()); | ||
assertEquals(expectedMaxCapacity, buffer.maxCapacity()); | ||
} | ||
|
||
private void assertCompositeByteBuf( | ||
CompositeByteBuf buffer, int expectedMaxNumComponents) { | ||
assertEquals(0, buffer.numComponents()); | ||
assertEquals(expectedMaxNumComponents, buffer.maxNumComponents()); | ||
assertBuffer(buffer, false, 0, defaultMaxCapacity()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.