@@ -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