Eliminate atomix.utils.memory
[controller.git] / third-party / atomix / utils / src / test / java / io / atomix / utils / serializer / KryoInputPoolTest.java
1 /*
2  * Copyright 2017-present Open Networking Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package io.atomix.utils.serializer;
17
18 import com.esotericsoftware.kryo.io.Input;
19 import org.junit.Before;
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertArrayEquals;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26
27 public class KryoInputPoolTest {
28
29   private KryoInputPool kryoInputPool;
30
31   @Before
32   public void setUp() throws Exception {
33     kryoInputPool = new KryoInputPool();
34   }
35
36   @Test
37   public void discardOutput() {
38     final Input[] result = new Input[2];
39     kryoInputPool.run(input -> {
40       result[0] = input;
41       return null;
42     }, KryoInputPool.MAX_POOLED_BUFFER_SIZE + 1);
43     kryoInputPool.run(input -> {
44       result[1] = input;
45       return null;
46     }, 0);
47     assertTrue(result[0] != result[1]);
48   }
49
50   @Test
51   public void recycleOutput() {
52     final Input[] result = new Input[2];
53     kryoInputPool.run(input -> {
54       assertEquals(0, input.position());
55       byte[] payload = new byte[]{1, 2, 3, 4};
56       input.setBuffer(payload);
57       assertArrayEquals(payload, input.readBytes(4));
58       result[0] = input;
59       return null;
60     }, 0);
61     assertNull(result[0].getInputStream());
62     assertEquals(0, result[0].position());
63     kryoInputPool.run(input -> {
64       result[1] = input;
65       return null;
66     }, 0);
67     assertTrue(result[0] == result[1]);
68   }
69 }