1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.testsuite.transport;
17
18 import io.netty.bootstrap.AbstractBootstrap;
19 import io.netty.buffer.AdaptiveByteBufAllocator;
20 import io.netty.buffer.ByteBuf;
21 import io.netty.buffer.ByteBufAllocator;
22 import io.netty.buffer.PooledByteBufAllocator;
23 import io.netty.buffer.Unpooled;
24
25 import java.util.ArrayList;
26 import java.util.List;
27 import java.util.concurrent.ThreadLocalRandom;
28
29 public final class TestsuitePermutation {
30 private static final AdaptiveByteBufAllocator DEFAULT_ADAPTIVE_ALLOCATOR = new AdaptiveByteBufAllocator();
31
32 public static List<ByteBufAllocator> allocator() {
33 List<ByteBufAllocator> allocators = new ArrayList<ByteBufAllocator>();
34 allocators.add(PooledByteBufAllocator.DEFAULT);
35 allocators.add(DEFAULT_ADAPTIVE_ALLOCATOR);
36 return allocators;
37 }
38
39 private TestsuitePermutation() { }
40
41 public interface BootstrapFactory<CB extends AbstractBootstrap<?, ?>> {
42 CB newInstance();
43 }
44
45 public interface BootstrapComboFactory<SB extends AbstractBootstrap<?, ?>, CB extends AbstractBootstrap<?, ?>> {
46 SB newServerInstance();
47 CB newClientInstance();
48 }
49
50 public static ByteBuf randomBufferType(ByteBufAllocator allocator, byte[] data, int offset, int length) {
51 if (ThreadLocalRandom.current().nextBoolean()) {
52 return allocator.directBuffer().writeBytes(data, offset, length);
53 }
54 return Unpooled.wrappedBuffer(data, offset, length);
55 }
56 }