Skip to content

Commit f5961f4

Browse files
committed
add testcase testProcessBlock for BlockMsgHandler
1 parent 6466458 commit f5961f4

1 file changed

Lines changed: 47 additions & 4 deletions

File tree

framework/src/test/java/org/tron/core/net/messagehandler/BlockMsgHandlerTest.java

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
package org.tron.core.net.messagehandler;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.mockito.ArgumentMatchers.any;
5+
import static org.mockito.ArgumentMatchers.anyBoolean;
46

57
import com.google.common.collect.ImmutableList;
68
import com.google.protobuf.ByteString;
7-
89
import java.lang.reflect.Field;
10+
import java.lang.reflect.Method;
911
import java.net.InetSocketAddress;
12+
import java.util.ArrayList;
1013
import java.util.List;
1114
import javax.annotation.Resource;
12-
1315
import lombok.extern.slf4j.Slf4j;
16+
import org.junit.Assert;
1417
import org.junit.Before;
1518
import org.junit.BeforeClass;
1619
import org.junit.Test;
20+
import org.mockito.Mockito;
1721
import org.tron.common.BaseTest;
22+
import org.tron.common.utils.ByteArray;
1823
import org.tron.common.utils.Sha256Hash;
1924
import org.tron.core.Constant;
2025
import org.tron.core.capsule.BlockCapsule;
26+
import org.tron.core.capsule.BlockCapsule.BlockId;
2127
import org.tron.core.config.Parameter;
2228
import org.tron.core.config.args.Args;
2329
import org.tron.core.exception.P2pException;
30+
import org.tron.core.net.TronNetDelegate;
2431
import org.tron.core.net.message.adv.BlockMessage;
2532
import org.tron.core.net.peer.Item;
2633
import org.tron.core.net.peer.PeerConnection;
@@ -41,9 +48,8 @@ public class BlockMsgHandlerTest extends BaseTest {
4148
*/
4249
@BeforeClass
4350
public static void init() {
44-
Args.setParam(new String[]{"--output-directory", dbPath(), "--debug"},
51+
Args.setParam(new String[] {"--output-directory", dbPath(), "--debug"},
4552
Constant.TEST_CONF);
46-
4753
}
4854

4955
@Before
@@ -123,4 +129,41 @@ public void testProcessMessage() {
123129
logger.error("error", e);
124130
}
125131
}
132+
133+
@Test
134+
public void testProcessBlock() {
135+
TronNetDelegate tronNetDelegate = Mockito.mock(TronNetDelegate.class);
136+
137+
try {
138+
Field field = handler.getClass().getDeclaredField("tronNetDelegate");
139+
field.setAccessible(true);
140+
field.set(handler, tronNetDelegate);
141+
142+
BlockCapsule blockCapsule0 = new BlockCapsule(1,
143+
Sha256Hash.wrap(ByteString
144+
.copyFrom(ByteArray
145+
.fromHexString(
146+
"9938a342238077182498b464ac0292229938a342238077182498b464ac029222"))),
147+
1234,
148+
ByteString.copyFrom("1234567".getBytes()));
149+
150+
peer.getAdvInvReceive()
151+
.put(new Item(blockCapsule0.getBlockId(), InventoryType.BLOCK), System.currentTimeMillis());
152+
153+
Mockito.doReturn(true).when(tronNetDelegate).validBlock(any(BlockCapsule.class));
154+
Mockito.doReturn(true).when(tronNetDelegate).containBlock(any(BlockId.class));
155+
Mockito.doReturn(blockCapsule0.getBlockId()).when(tronNetDelegate).getHeadBlockId();
156+
Mockito.doNothing().when(tronNetDelegate).processBlock(any(BlockCapsule.class), anyBoolean());
157+
List<PeerConnection> peers = new ArrayList<>();
158+
peers.add(peer);
159+
Mockito.doReturn(peers).when(tronNetDelegate).getActivePeer();
160+
161+
Method method = handler.getClass()
162+
.getDeclaredMethod("processBlock", PeerConnection.class, BlockCapsule.class);
163+
method.setAccessible(true);
164+
method.invoke(handler, peer, blockCapsule0);
165+
} catch (Exception e) {
166+
Assert.fail();
167+
}
168+
}
126169
}

0 commit comments

Comments
 (0)