11package org .tron .core .event ;
22
3+ import static org .mockito .Mockito .mock ;
4+
35import com .google .protobuf .ByteString ;
46import java .io .IOException ;
57import java .time .LocalDateTime ;
1517import org .junit .ClassRule ;
1618import org .junit .Test ;
1719import org .junit .rules .TemporaryFolder ;
20+ import org .mockito .Mockito ;
1821import org .tron .common .application .TronApplicationContext ;
1922import org .tron .common .logsfilter .EventPluginConfig ;
2023import org .tron .common .logsfilter .EventPluginLoader ;
2326import org .tron .common .runtime .TvmTestUtils ;
2427import org .tron .common .utils .ByteArray ;
2528import org .tron .common .utils .PublicMethod ;
29+ import org .tron .common .utils .ReflectUtils ;
2630import org .tron .common .utils .Sha256Hash ;
2731import org .tron .core .ChainBaseManager ;
2832import org .tron .core .Constant ;
2933import org .tron .core .capsule .AccountCapsule ;
3034import org .tron .core .capsule .BlockCapsule ;
35+ import org .tron .core .capsule .TransactionRetCapsule ;
3136import org .tron .core .capsule .WitnessCapsule ;
3237import org .tron .core .config .DefaultConfig ;
3338import org .tron .core .config .args .Args ;
3843import org .tron .core .services .event .BlockEventGet ;
3944import org .tron .core .services .event .bo .BlockEvent ;
4045import org .tron .core .store .DynamicPropertiesStore ;
46+ import org .tron .core .store .TransactionRetStore ;
4147import org .tron .protos .Protocol ;
4248
4349@ Slf4j
@@ -187,7 +193,7 @@ public void test() throws Exception {
187193 }
188194
189195 @ Test
190- public void getTransactionTriggers () {
196+ public void getTransactionTriggers () throws Exception {
191197 BlockEventGet blockEventGet = new BlockEventGet ();
192198 BlockCapsule bc = new BlockCapsule (1 , Sha256Hash .ZERO_HASH ,
193199 100 , Sha256Hash .ZERO_HASH .getByteString ());
@@ -209,5 +215,66 @@ public void getTransactionTriggers() {
209215 list = blockEventGet .getTransactionTriggers (bc , 1 );
210216 Assert .assertEquals (1 , list .size ());
211217 Assert .assertEquals (100 , list .get (0 ).getTransactionLogTrigger ().getTimeStamp ());
218+
219+ Protocol .TransactionInfo .Builder infoBuild = Protocol .TransactionInfo .newBuilder ();
220+
221+ Protocol .ResourceReceipt .Builder resourceBuild = Protocol .ResourceReceipt .newBuilder ();
222+ resourceBuild .setEnergyFee (1 );
223+ resourceBuild .setEnergyUsageTotal (2 );
224+ resourceBuild .setEnergyUsage (3 );
225+ resourceBuild .setOriginEnergyUsage (4 );
226+ resourceBuild .setNetFee (5 );
227+ resourceBuild .setNetUsage (6 );
228+
229+ String address = "A0B4750E2CD76E19DCA331BF5D089B71C3C2798548" ;
230+ infoBuild
231+ .setContractAddress (ByteString .copyFrom (ByteArray .fromHexString (address )))
232+ .addContractResult (ByteString .copyFrom (ByteArray .fromHexString ("112233" )))
233+ .setReceipt (resourceBuild .build ());
234+
235+ Manager manager = mock (Manager .class );
236+ ReflectUtils .setFieldValue (blockEventGet , "manager" , manager );
237+
238+ ChainBaseManager chainBaseManager = mock (ChainBaseManager .class );
239+ Mockito .when (manager .getChainBaseManager ()).thenReturn (chainBaseManager );
240+
241+ TransactionRetStore transactionRetStore = mock (TransactionRetStore .class );
242+ Mockito .when (chainBaseManager .getTransactionRetStore ()).thenReturn (transactionRetStore );
243+
244+ Protocol .TransactionRet transactionRet = Protocol .TransactionRet .newBuilder ()
245+ .addTransactioninfo (infoBuild .build ()).build ();
246+
247+ TransactionRetCapsule result = new TransactionRetCapsule (transactionRet .toByteArray ());
248+
249+ Mockito .when (transactionRetStore .getTransactionInfoByBlockNum (ByteArray .fromLong (0 )))
250+ .thenReturn (result );
251+
252+ Protocol .Block block = Protocol .Block .newBuilder ()
253+ .addTransactions (transaction ).build ();
254+
255+ BlockCapsule blockCapsule = new BlockCapsule (block );
256+ blockCapsule .getTransactions ().forEach (t -> t .setBlockNum (blockCapsule .getNum ()));
257+
258+ list = blockEventGet .getTransactionTriggers (blockCapsule , 1 );
259+
260+ Assert .assertEquals (1 , list .size ());
261+ Assert .assertEquals (1 ,
262+ list .get (0 ).getTransactionLogTrigger ().getLatestSolidifiedBlockNumber ());
263+ Assert .assertEquals (0 ,
264+ list .get (0 ).getTransactionLogTrigger ().getBlockNumber ());
265+ Assert .assertEquals (2 ,
266+ list .get (0 ).getTransactionLogTrigger ().getEnergyUsageTotal ());
267+
268+ Mockito .when (transactionRetStore .getTransactionInfoByBlockNum (ByteArray .fromLong (0 )))
269+ .thenReturn (null );
270+ list = blockEventGet .getTransactionTriggers (blockCapsule , 1 );
271+ Assert .assertEquals (1 , list .size ());
272+ Assert .assertEquals (1 ,
273+ list .get (0 ).getTransactionLogTrigger ().getLatestSolidifiedBlockNumber ());
274+ Assert .assertEquals (0 ,
275+ list .get (0 ).getTransactionLogTrigger ().getBlockNumber ());
276+ Assert .assertEquals (0 ,
277+ list .get (0 ).getTransactionLogTrigger ().getEnergyUsageTotal ());
212278 }
279+
213280}
0 commit comments