Skip to content

Commit 3521d4e

Browse files
committed
test(grpc): mitigate GRPC test hangs with timeout rule
Add 30-seconds timeout rule as a workaround to prevent GRPC unit tests hanging at ThreadlessExecutor.waitAndDrain
1 parent 7f237fd commit 3521d4e

File tree

5 files changed

+25
-0
lines changed

5 files changed

+25
-0
lines changed

framework/src/test/java/org/tron/core/services/RpcApiServicesTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111
import io.grpc.ManagedChannelBuilder;
1212
import java.io.IOException;
1313
import java.util.Objects;
14+
import java.util.concurrent.TimeUnit;
1415
import org.junit.AfterClass;
1516
import org.junit.Assert;
1617
import org.junit.BeforeClass;
1718
import org.junit.ClassRule;
1819
import org.junit.FixMethodOrder;
20+
import org.junit.Rule;
1921
import org.junit.Test;
2022
import org.junit.rules.TemporaryFolder;
23+
import org.junit.rules.Timeout;
2124
import org.junit.runners.MethodSorters;
2225
import org.tron.api.DatabaseGrpc;
2326
import org.tron.api.DatabaseGrpc.DatabaseBlockingStub;
@@ -125,6 +128,8 @@ public class RpcApiServicesTest {
125128
private static WalletSolidityBlockingStub blockingStubPBFT = null;
126129
@ClassRule
127130
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
131+
@Rule
132+
public Timeout timeout = new Timeout(30, TimeUnit.SECONDS);
128133
private static ByteString ownerAddress;
129134
private static ByteString sk;
130135
private static ByteString ask;

framework/src/test/java/org/tron/core/services/WalletApiTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import org.junit.Assert;
99
import org.junit.BeforeClass;
1010
import org.junit.ClassRule;
11+
import org.junit.Rule;
1112
import org.junit.Test;
1213
import org.junit.rules.TemporaryFolder;
14+
import org.junit.rules.Timeout;
1315
import org.tron.api.GrpcAPI.EmptyMessage;
1416
import org.tron.api.WalletGrpc;
1517
import org.tron.common.application.Application;
@@ -28,6 +30,9 @@ public class WalletApiTest {
2830
@ClassRule
2931
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
3032

33+
@Rule
34+
public Timeout timeout = new Timeout(30, TimeUnit.SECONDS);
35+
3136
private static TronApplicationContext context;
3237
private static Application appT;
3338

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.junit.Test;
1515
import org.junit.rules.ExpectedException;
1616
import org.junit.rules.TemporaryFolder;
17+
import org.junit.rules.Timeout;
1718
import org.tron.api.GrpcAPI;
1819
import org.tron.api.WalletGrpc;
1920
import org.tron.api.WalletSolidityGrpc;
@@ -47,6 +48,9 @@ public class LiteFnQueryGrpcInterceptorTest {
4748
@ClassRule
4849
public static final TemporaryFolder temporaryFolder = new TemporaryFolder();
4950

51+
@Rule
52+
public Timeout timeout = new Timeout(30, TimeUnit.SECONDS);
53+
5054
/**
5155
* init logic.
5256
*/

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import org.junit.AfterClass;
2020
import org.junit.BeforeClass;
2121
import org.junit.ClassRule;
22+
import org.junit.Rule;
2223
import org.junit.Test;
2324
import org.junit.rules.TemporaryFolder;
25+
import org.junit.rules.Timeout;
2426
import org.tron.api.GrpcAPI.BlockExtention;
2527
import org.tron.api.GrpcAPI.BlockReq;
2628
import org.tron.api.GrpcAPI.BytesMessage;
@@ -53,6 +55,9 @@ public class RpcApiAccessInterceptorTest {
5355
@ClassRule
5456
public static final TemporaryFolder temporaryFolder = new TemporaryFolder();
5557

58+
@Rule
59+
public Timeout timeout = new Timeout(30, TimeUnit.SECONDS);
60+
5661
/**
5762
* init logic.
5863
*/

framework/src/test/java/org/tron/program/SolidityNodeTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertThrows;
55

6+
import java.util.concurrent.TimeUnit;
67
import javax.annotation.Resource;
78
import lombok.extern.slf4j.Slf4j;
89
import org.junit.Assert;
10+
import org.junit.Rule;
911
import org.junit.Test;
12+
import org.junit.rules.Timeout;
1013
import org.tron.common.BaseTest;
1114
import org.tron.common.client.DatabaseGrpcClient;
1215
import org.tron.common.utils.PublicMethod;
@@ -28,6 +31,9 @@ public class SolidityNodeTest extends BaseTest {
2831
static int rpcPort = PublicMethod.chooseRandomPort();
2932
static int solidityHttpPort = PublicMethod.chooseRandomPort();
3033

34+
@Rule
35+
public Timeout timeout = new Timeout(30, TimeUnit.SECONDS);
36+
3137
static {
3238
Args.setParam(new String[] {"-d", dbPath(), "--solidity"}, Constant.TEST_CONF);
3339
Args.getInstance().setRpcPort(rpcPort);

0 commit comments

Comments
 (0)