Bump versions 9.0.4-SNAPSHOT
[controller.git] / atomix-storage / src / test / java / io / atomix / utils / serializer / KryoInputPoolTest.java
1 /*
2  * Copyright 2017-2022 Open Networking Foundation and others.  All rights reserved.
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 static org.junit.jupiter.api.Assertions.assertArrayEquals;
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertNotSame;
21 import static org.junit.jupiter.api.Assertions.assertNull;
22 import static org.junit.jupiter.api.Assertions.assertSame;
23
24 import com.esotericsoftware.kryo.io.Input;
25 import org.junit.jupiter.api.Test;
26
27 class KryoInputPoolTest {
28     private final KryoInputPool kryoInputPool = new KryoInputPool();
29
30     @Test
31     void discardOutput() {
32         final var result = new Input[2];
33         kryoInputPool.run(input -> {
34             result[0] = input;
35             return null;
36         }, KryoInputPool.MAX_POOLED_BUFFER_SIZE + 1);
37         kryoInputPool.run(input -> {
38             result[1] = input;
39             return null;
40         }, 0);
41         assertNotSame(result[0], result[1]);
42     }
43
44     @Test
45     void recycleOutput() {
46         final var result = new Input[2];
47         kryoInputPool.run(input -> {
48             assertEquals(0, input.position());
49             byte[] payload = new byte[]{1, 2, 3, 4};
50             input.setBuffer(payload);
51             assertArrayEquals(payload, input.readBytes(4));
52             result[0] = input;
53             return null;
54         }, 0);
55         assertNull(result[0].getInputStream());
56         assertEquals(0, result[0].position());
57         kryoInputPool.run(input -> {
58             result[1] = input;
59             return null;
60         }, 0);
61         assertSame(result[0], result[1]);
62     }
63 }