Skip to content

Commit 04396ca

Browse files
authored
RATIS-2191. Add ResourceLeakDetector to Netty tests (#1180)
1 parent 06affdf commit 04396ca

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreStreamingBaseTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public abstract class FileStoreStreamingBaseTest <CLUSTER extends MiniRaftCluste
5656
FileStoreStateMachine.class, StateMachine.class);
5757
ConfUtils.setFile(p::setFile, FileStoreCommon.STATEMACHINE_DIR_KEY,
5858
new File(getClassTestDir(), "filestore"));
59+
DataStreamTestUtils.enableResourceLeakDetector();
5960
}
6061

6162
static final int NUM_PEERS = 3;

ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public abstract class DataStreamClusterTests<CLUSTER extends MiniRaftCluster> ex
5252
implements MiniRaftCluster.Factory.Get<CLUSTER> {
5353
{
5454
setStateMachine(MultiDataStreamStateMachine.class);
55+
DataStreamTestUtils.enableResourceLeakDetector();
5556
}
5657

5758
public static final int NUM_SERVERS = 3;

ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
4646
import org.apache.ratis.statemachine.TransactionContext;
4747
import org.apache.ratis.statemachine.impl.BaseStateMachine;
4848
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
49+
import org.apache.ratis.thirdparty.io.netty.buffer.ByteBufUtil;
50+
import org.apache.ratis.thirdparty.io.netty.util.ResourceLeakDetector;
51+
import org.apache.ratis.thirdparty.io.netty.util.ResourceLeakDetector.Level;
4952
import org.apache.ratis.util.CollectionUtils;
5053
import org.apache.ratis.util.FileUtils;
5154
import org.apache.ratis.util.JavaUtils;
@@ -418,4 +421,13 @@ static void assertLogEntry(RaftServer.Division division, SingleDataStream stream
418421
final LogEntryProto entryFromLog = searchLogEntry(ClientInvocationId.valueOf(request), division.getRaftLog());
419422
Assertions.assertEquals(entryFromStream, entryFromLog);
420423
}
424+
425+
ResourceLeakDetector.LeakListener LEAK_LISTENER = (resourceType, records) -> {
426+
throw new IllegalStateException("Leak detected for resource type: " + resourceType + records);
427+
};
428+
429+
static void enableResourceLeakDetector() {
430+
ResourceLeakDetector.setLevel(Level.PARANOID);
431+
ByteBufUtil.setLeakListener(DataStreamTestUtils.LEAK_LISTENER);
432+
}
421433
}

0 commit comments

Comments
 (0)