Skip to content

Commit 02f81c6

Browse files
authored
fix(test): release resource of testcases gracefully (#6437)
* delete BaseNet, BaseNetTest * release resource of gRPC * optimize testcase to reduce the time cost * delete db after testcase in tmp dir; short the time cost of some case; optimize some shutdown action * use shutdownnow instead of shutdown in close Channel
1 parent 560200f commit 02f81c6

35 files changed

+271
-342
lines changed

chainbase/src/main/java/org/tron/core/db2/core/SnapshotManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,9 @@ public List<String> getCheckpointList() {
427427
}
428428

429429
private void deleteCheckpoint() {
430+
if(checkTmpStore == null) {
431+
return;
432+
}
430433
try {
431434
Map<byte[], byte[]> hmap = new HashMap<>();
432435
for (Map.Entry<byte[], byte[]> e : checkTmpStore.getDbSource()) {

common/src/main/java/org/tron/common/logsfilter/FilterQuery.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ public static long parseFromBlockNumber(String blockNum) {
3131
if (StringUtils.isEmpty(blockNum) || FilterQuery.EARLIEST.equalsIgnoreCase(blockNum)) {
3232
number = FilterQuery.EARLIEST_BLOCK_NUM;
3333
} else {
34-
try {
35-
number = Long.parseLong(blockNum);
36-
} catch (Exception e) {
37-
logger.error("invalid filter: fromBlockNumber: {}", blockNum);
38-
throw e;
39-
}
34+
number = Long.parseLong(blockNum);
4035
}
4136
return number;
4237
}
@@ -46,12 +41,7 @@ public static long parseToBlockNumber(String blockNum) {
4641
if (StringUtils.isEmpty(blockNum) || FilterQuery.LATEST.equalsIgnoreCase(blockNum)) {
4742
number = FilterQuery.LATEST_BLOCK_NUM;
4843
} else {
49-
try {
50-
number = Long.parseLong(blockNum);
51-
} catch (Exception e) {
52-
logger.error("invalid filter: toBlockNumber: {}", blockNum);
53-
throw e;
54-
}
44+
number = Long.parseLong(blockNum);
5545
}
5646
return number;
5747
}

framework/src/main/java/org/tron/common/application/TronApplicationContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ public TronApplicationContext(DefaultListableBeanFactory beanFactory) {
1313
super(beanFactory);
1414
}
1515

16+
//only used for testcase
1617
public TronApplicationContext(Class<?>... annotatedClasses) {
1718
super(annotatedClasses);
19+
this.registerShutdownHook();
1820
}
1921

2022
public TronApplicationContext(String... basePackages) {

framework/src/main/java/org/tron/common/logsfilter/EventPluginLoader.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.Objects;
1010
import java.util.Set;
1111
import java.util.stream.Collectors;
12-
1312
import lombok.Getter;
1413
import lombok.extern.slf4j.Slf4j;
1514
import org.bouncycastle.util.encoders.Hex;
@@ -26,7 +25,6 @@
2625
import org.tron.common.logsfilter.trigger.SolidityTrigger;
2726
import org.tron.common.logsfilter.trigger.TransactionLogTrigger;
2827
import org.tron.common.logsfilter.trigger.Trigger;
29-
import org.tron.common.utils.JsonUtil;
3028

3129
@Slf4j
3230
public class EventPluginLoader {
@@ -140,7 +138,7 @@ public static boolean matchFilter(ContractTrigger trigger) {
140138

141139
private static boolean filterContractAddress(ContractTrigger trigger, List<String> addressList) {
142140
addressList = addressList.stream().filter(item ->
143-
org.apache.commons.lang3.StringUtils.isNotEmpty(item))
141+
org.apache.commons.lang3.StringUtils.isNotEmpty(item))
144142
.collect(Collectors.toList());
145143
if (Objects.isNull(addressList) || addressList.isEmpty()) {
146144
return true;
@@ -173,7 +171,7 @@ private static boolean filterContractTopicList(ContractTrigger trigger, List<Str
173171
hset = new HashSet<>(((ContractEventTrigger) trigger).getTopicMap().values());
174172
} else if (trigger != null) {
175173
hset = trigger.getLogInfo().getClonedTopics()
176-
.stream().map(Hex::toHexString).collect(Collectors.toSet());
174+
.stream().map(Hex::toHexString).collect(Collectors.toSet());
177175
}
178176

179177
for (String top : topList) {
@@ -547,6 +545,9 @@ public boolean isBusy() {
547545
return false;
548546
}
549547
int queueSize = 0;
548+
if (eventListeners == null || eventListeners.isEmpty()) {
549+
return false;
550+
}
550551
for (IPluginEventListener listener : eventListeners) {
551552
try {
552553
queueSize += listener.getPendingSize();

framework/src/main/java/org/tron/core/config/args/Args.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ private static FilterQuery getEventFilter(final com.typesafe.config.Config confi
16211621
try {
16221622
fromBlockLong = FilterQuery.parseFromBlockNumber(fromBlock);
16231623
} catch (Exception e) {
1624-
logger.error("{}", e);
1624+
logger.error("invalid filter: fromBlockNumber: {}", fromBlock, e);
16251625
return null;
16261626
}
16271627
filter.setFromBlock(fromBlockLong);
@@ -1630,7 +1630,7 @@ private static FilterQuery getEventFilter(final com.typesafe.config.Config confi
16301630
try {
16311631
toBlockLong = FilterQuery.parseToBlockNumber(toBlock);
16321632
} catch (Exception e) {
1633-
logger.error("{}", e);
1633+
logger.error("invalid filter: toBlockNumber: {}", toBlock, e);
16341634
return null;
16351635
}
16361636
filter.setToBlock(toBlockLong);

framework/src/test/java/org/tron/common/EntityTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
import static org.junit.Assert.assertTrue;
66

77
import com.google.common.collect.Lists;
8+
import java.util.ArrayList;
89
import java.util.HashMap;
10+
import java.util.List;
911
import org.apache.commons.collections4.CollectionUtils;
1012
import org.junit.Before;
1113
import org.junit.Test;
1214
import org.tron.common.entity.NodeInfo;
1315
import org.tron.common.entity.NodeInfo.MachineInfo;
1416
import org.tron.common.entity.NodeInfo.MachineInfo.DeadLockThreadInfo;
17+
import org.tron.common.entity.PeerInfo;
1518

1619
public class EntityTest {
1720

@@ -54,6 +57,9 @@ public void testDeadLockThreadInfo() {
5457

5558
@Test
5659
public void testNodeInfo() {
60+
List<PeerInfo> peerInfoList = new ArrayList<>();
61+
peerInfoList.add(getDefaultPeerInfo());
62+
5763
NodeInfo nodeInfo = new NodeInfo();
5864
nodeInfo.setTotalFlow(1L);
5965
nodeInfo.setCheatWitnessInfoMap(new HashMap<>());
@@ -62,6 +68,39 @@ public void testNodeInfo() {
6268
nodeInfo.setMachineInfo(machineInfo);
6369
nodeInfo.setBlock("block");
6470
nodeInfo.setSolidityBlock("solidityBlock");
71+
nodeInfo.setPeerList(peerInfoList);
6572
nodeInfo.transferToProtoEntity();
6673
}
74+
75+
private PeerInfo getDefaultPeerInfo() {
76+
PeerInfo peerInfo = new PeerInfo();
77+
peerInfo.setAvgLatency(peerInfo.getAvgLatency());
78+
peerInfo.setBlockInPorcSize(peerInfo.getBlockInPorcSize());
79+
peerInfo.setConnectTime(peerInfo.getConnectTime());
80+
peerInfo.setDisconnectTimes(peerInfo.getDisconnectTimes());
81+
peerInfo.setHeadBlockTimeWeBothHave(peerInfo.getHeadBlockTimeWeBothHave());
82+
peerInfo.setHeadBlockWeBothHave(peerInfo.getHeadBlockWeBothHave());
83+
peerInfo.setHost("host");
84+
peerInfo.setInFlow(peerInfo.getInFlow());
85+
peerInfo.setLastBlockUpdateTime(peerInfo.getLastBlockUpdateTime());
86+
peerInfo.setLastSyncBlock("last");
87+
peerInfo.setLocalDisconnectReason("localDisconnectReason");
88+
peerInfo.setNodeCount(peerInfo.getNodeCount());
89+
peerInfo.setNodeId("nodeId");
90+
peerInfo.setHeadBlockWeBothHave("headBlockWeBothHave");
91+
peerInfo.setRemainNum(peerInfo.getRemainNum());
92+
peerInfo.setRemoteDisconnectReason("remoteDisconnectReason");
93+
peerInfo.setScore(peerInfo.getScore());
94+
peerInfo.setPort(peerInfo.getPort());
95+
peerInfo.setSyncFlag(peerInfo.isSyncFlag());
96+
peerInfo.setNeedSyncFromPeer(peerInfo.isNeedSyncFromPeer());
97+
peerInfo.setNeedSyncFromUs(peerInfo.isNeedSyncFromUs());
98+
peerInfo.setSyncToFetchSize(peerInfo.getSyncToFetchSize());
99+
peerInfo.setSyncToFetchSizePeekNum(peerInfo.getSyncToFetchSizePeekNum());
100+
peerInfo.setSyncBlockRequestedSize(peerInfo.getSyncBlockRequestedSize());
101+
peerInfo.setUnFetchSynNum(peerInfo.getUnFetchSynNum());
102+
peerInfo.setActive(peerInfo.isActive());
103+
104+
return peerInfo;
105+
}
67106
}

framework/src/test/java/org/tron/common/backup/BackupServerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.junit.rules.Timeout;
1111
import org.tron.common.backup.socket.BackupServer;
1212
import org.tron.common.parameter.CommonParameter;
13+
import org.tron.common.utils.PublicMethod;
1314
import org.tron.core.Constant;
1415
import org.tron.core.config.args.Args;
1516

@@ -26,7 +27,7 @@ public class BackupServerTest {
2627
@Before
2728
public void setUp() throws Exception {
2829
Args.setParam(new String[]{"-d", temporaryFolder.newFolder().toString()}, Constant.TEST_CONF);
29-
CommonParameter.getInstance().setBackupPort(80);
30+
CommonParameter.getInstance().setBackupPort(PublicMethod.chooseRandomPort());
3031
List<String> members = new ArrayList<>();
3132
members.add("127.0.0.2");
3233
CommonParameter.getInstance().setBackupMembers(members);

framework/src/test/java/org/tron/common/logsfilter/NativeMessageQueueTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,19 @@ public void publishTrigger() {
5555

5656
public void startSubscribeThread() {
5757
Thread thread = new Thread(() -> {
58-
ZContext context = new ZContext();
59-
ZMQ.Socket subscriber = context.createSocket(SocketType.SUB);
58+
try (ZContext context = new ZContext()) {
59+
ZMQ.Socket subscriber = context.createSocket(SocketType.SUB);
6060

61-
Assert.assertEquals(true, subscriber.connect(String.format("tcp://localhost:%d", bindPort)));
62-
Assert.assertEquals(true, subscriber.subscribe(topic));
61+
Assert.assertTrue(subscriber.connect(String.format("tcp://localhost:%d", bindPort)));
62+
Assert.assertTrue(subscriber.subscribe(topic));
6363

64-
while (!Thread.currentThread().isInterrupted()) {
65-
byte[] message = subscriber.recv();
66-
String triggerMsg = new String(message);
67-
68-
Assert.assertEquals(true, triggerMsg.contains(dataToSend) || triggerMsg.contains(topic));
64+
while (!Thread.currentThread().isInterrupted()) {
65+
byte[] message = subscriber.recv();
66+
String triggerMsg = new String(message);
6967

68+
Assert.assertTrue(triggerMsg.contains(dataToSend) || triggerMsg.contains(topic));
69+
}
70+
// ZMQ.Socket will be automatically closed when ZContext is closed
7071
}
7172
});
7273
thread.start();

framework/src/test/java/org/tron/common/utils/FileUtilTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public void testReadData_NormalFile() throws IOException {
6767
try (FileWriter writer = new FileWriter(tempFile.toFile())) {
6868
writer.write("Hello, World!");
6969
}
70+
tempFile.toFile().deleteOnExit();
7071

7172
char[] buffer = new char[1024];
7273
int len = readData(tempFile.toString(), buffer);

framework/src/test/java/org/tron/common/utils/client/Configuration.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.typesafe.config.ConfigFactory;
55
import java.io.File;
66
import java.io.FileInputStream;
7-
import java.io.FileNotFoundException;
87
import java.io.InputStreamReader;
98
import org.apache.commons.lang3.StringUtils;
109
import org.slf4j.Logger;
@@ -28,12 +27,12 @@ public static Config getByPath(final String configurationPath) {
2827
if (config == null) {
2928
File configFile = new File(System.getProperty("user.dir") + '/' + configurationPath);
3029
if (configFile.exists()) {
31-
try {
32-
config = ConfigFactory
33-
.parseReader(new InputStreamReader(new FileInputStream(configurationPath)));
30+
try (FileInputStream fis = new FileInputStream(configurationPath);
31+
InputStreamReader isr = new InputStreamReader(fis)) {
32+
config = ConfigFactory.parseReader(isr);
3433
logger.info("use user defined config file in current dir");
35-
} catch (FileNotFoundException e) {
36-
logger.error("load user defined config file exception: " + e.getMessage());
34+
} catch (Exception e) {
35+
logger.error("load user defined config file exception: {}", e.getMessage());
3736
}
3837
} else {
3938
config = ConfigFactory.load(configurationPath);

0 commit comments

Comments
 (0)