Skip to content

Commit f99d216

Browse files
committed
adjust ResilienceServiceTest
1 parent 8d496f8 commit f99d216

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

framework/src/main/java/org/tron/core/net/service/effective/ResilienceService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class ResilienceService {
2929
//when node is isolated, retention percent peers will not be disconnected
3030
public static final double retentionPercent = 0.8;
3131
private static final int initialDelay = 300;
32+
public static final int broadcastPeerSize = 3;
3233
private static final String esName = "resilience-service";
3334
private final ScheduledExecutorService executor = ExecutorServiceManager
3435
.newSingleThreadScheduledExecutor(esName);
@@ -76,7 +77,7 @@ private void disconnectRandom() {
7677
.filter(peer -> !peer.getChannel().isTrustPeer())
7778
.filter(peer -> !peer.isNeedSyncFromUs() && !peer.isNeedSyncFromPeer())
7879
.collect(Collectors.toList());
79-
if (peers.size() >= 3) {
80+
if (peers.size() >= broadcastPeerSize) {
8081
Optional<PeerConnection> one = getEarliestPeer(peers);
8182
one.ifPresent(peer -> disconnectFromPeer(peer, ReasonCode.RANDOM_ELIMINATION,
8283
DisconnectCause.RANDOM_ELIMINATION));

framework/src/test/java/org/tron/core/net/services/ResilienceServiceTest.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void testDisconnectRandom() {
5151
clearPeers();
5252
Assert.assertEquals(0, PeerManager.getPeers().size());
5353

54-
for (int i = 0; i < maxConnection; i++) {
54+
for (int i = 0; i < maxConnection + 1; i++) {
5555
InetSocketAddress inetSocketAddress = new InetSocketAddress("201.0.0." + i, 10001);
5656
Channel c1 = spy(Channel.class);
5757
ReflectUtils.setFieldValue(c1, "inetSocketAddress", inetSocketAddress);
@@ -61,21 +61,37 @@ public void testDisconnectRandom() {
6161

6262
PeerManager.add(context, c1);
6363
}
64-
for (PeerConnection peer : PeerManager.getPeers()) {
64+
for (PeerConnection peer : PeerManager.getPeers()
65+
.subList(0, ResilienceService.broadcastPeerSize)) {
6566
peer.setNeedSyncFromPeer(false);
6667
peer.setNeedSyncFromUs(false);
68+
peer.setLastInteractiveTime(System.currentTimeMillis() - 1000);
69+
}
70+
for (PeerConnection peer : PeerManager.getPeers()
71+
.subList(ResilienceService.broadcastPeerSize, maxConnection + 1)) {
72+
peer.setNeedSyncFromPeer(false);
73+
peer.setNeedSyncFromUs(true);
6774
}
75+
int size1 = (int) PeerManager.getPeers().stream()
76+
.filter(peer -> !peer.isNeedSyncFromUs() && !peer.isNeedSyncFromPeer())
77+
.count();
78+
Assert.assertEquals(ResilienceService.broadcastPeerSize, size1);
79+
Assert.assertEquals(maxConnection + 1, PeerManager.getPeers().size());
80+
81+
//disconnect from broadcasting peer
6882
ReflectUtils.invokeMethod(service, "disconnectRandom");
83+
size1 = (int) PeerManager.getPeers().stream()
84+
.filter(peer -> !peer.isNeedSyncFromUs() && !peer.isNeedSyncFromPeer())
85+
.count();
86+
Assert.assertEquals(ResilienceService.broadcastPeerSize - 1, size1);
6987
Assert.assertEquals(maxConnection, PeerManager.getPeers().size());
7088

71-
PeerConnection p1 = PeerManager.getPeers().get(1);
72-
p1.setLastInteractiveTime(
73-
System.currentTimeMillis() - Args.getInstance().inactiveThreshold * 1000L - 1000);
74-
PeerConnection p2 = PeerManager.getPeers().get(10);
75-
p2.setLastInteractiveTime(
76-
System.currentTimeMillis() - Args.getInstance().inactiveThreshold * 1000L - 2000);
77-
89+
//disconnect from syncing peer
7890
ReflectUtils.invokeMethod(service, "disconnectRandom");
91+
size1 = (int) PeerManager.getPeers().stream()
92+
.filter(peer -> !peer.isNeedSyncFromUs() && !peer.isNeedSyncFromPeer())
93+
.count();
94+
Assert.assertEquals(ResilienceService.broadcastPeerSize - 1, size1);
7995
Assert.assertEquals(maxConnection - 1, PeerManager.getPeers().size());
8096
}
8197

0 commit comments

Comments
 (0)