Skip to content

Commit 3e1298c

Browse files
feature(test): use random port in unit test
1 parent 6ce27a3 commit 3e1298c

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

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

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package org.tron.common.utils;
22

33
import com.google.protobuf.ByteString;
4+
5+
import java.io.IOException;
46
import java.math.BigInteger;
7+
import java.net.InetAddress;
8+
import java.net.Socket;
59
import java.util.Random;
610

711
import org.tron.api.GrpcAPI;
@@ -105,11 +109,30 @@ public static GrpcAPI.Return broadcastTransaction(
105109
return response;
106110
}
107111

112+
public static int chooseRandomPort() {
113+
return chooseRandomPort(10240, 65000);
114+
}
115+
108116
public static int chooseRandomPort(int min, int max) {
109-
return new Random().nextInt(max - min + 1) + min;
117+
int port = new Random().nextInt(max - min + 1) + min;
118+
try {
119+
while (!checkPortAvailable(port)) {
120+
port = new Random().nextInt(max - min + 1) + min;
121+
}
122+
} catch (IOException e) {
123+
return new Random().nextInt(max - min + 1) + min;
124+
}
125+
return port;
110126
}
111127

112-
public static int chooseRandomPort() {
113-
return new Random().nextInt(65530 - 1024) + 1024;
128+
private static boolean checkPortAvailable(int port) throws IOException {
129+
InetAddress theAddress = InetAddress.getByName("127.0.0.1");
130+
try (Socket socket = new Socket(theAddress, port)) {
131+
// only check
132+
socket.getPort();
133+
} catch (IOException e) {
134+
return true;
135+
}
136+
return false;
114137
}
115138
}

framework/src/test/java/org/tron/core/services/filter/LiteFnQueryHttpFilterTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.tron.common.application.ApplicationFactory;
2424
import org.tron.common.application.TronApplicationContext;
2525
import org.tron.common.utils.FileUtil;
26+
import org.tron.common.utils.PublicMethod;
2627
import org.tron.core.ChainBaseManager;
2728
import org.tron.core.Constant;
2829
import org.tron.core.config.DefaultConfig;
@@ -50,8 +51,11 @@ public class LiteFnQueryHttpFilterTest {
5051
*/
5152
@Before
5253
public void init() {
53-
Args.setParam(new String[]{"-d", dbPath}, Constant.TEST_CONF);
54+
Args.setParam(new String[]{"-d", dbPath, "--p2p-disable", "true"}, Constant.TEST_CONF);
5455
Args.getInstance().setFullNodeAllowShieldedTransactionArgs(false);
56+
Args.getInstance().setFullNodeHttpPort(PublicMethod.chooseRandomPort());
57+
Args.getInstance().setSolidityHttpPort(PublicMethod.chooseRandomPort());
58+
Args.getInstance().setPBFTHttpPort(PublicMethod.chooseRandomPort());
5559
context = new TronApplicationContext(DefaultConfig.class);
5660
appTest = ApplicationFactory.create(context);
5761
FullNodeHttpApiService httpApiService = context

0 commit comments

Comments
 (0)