From 9638edb802c98c56e25b189585faad3bf97a154e Mon Sep 17 00:00:00 2001 From: Jeongseo Park Date: Mon, 4 Sep 2023 15:00:06 +0900 Subject: [PATCH 1/2] Add RelayMessage event log in bmc --- .../foundation/icon/btp/bmc/BTPMessageCenter.java | 5 +++++ .../java/foundation/icon/btp/bmc/ICONSpecific.java | 12 ++++++++++++ .../foundation/icon/btp/bmc/BMCIntegrationTest.java | 6 ++++++ .../java/foundation/icon/btp/bmc/MessageTest.java | 11 +++++++++++ .../foundation/icon/btp/bmc/MessageWithFeeTest.java | 2 ++ 5 files changed, 36 insertions(+) diff --git a/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java b/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java index 466471dd..e13dbc3b 100644 --- a/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java +++ b/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java @@ -540,6 +540,7 @@ private void handleRelayMessage(String _prev, byte[] msgBytes) { link.setRxSeq(rxSeq.add(BigInteger.valueOf(msgCount))); } putLink(link); + RelayMessage(_prev, BigInteger.valueOf(msgCount)); // dispatch BTPMessages for (byte[] serializedMsg : serializedMsgs) { @@ -1184,4 +1185,8 @@ private void requireNormalMode() { throw BMCException.unknown("not normal mode"); } } + + @EventLog(indexed = 1) + public void RelayMessage(String _prev, BigInteger _count) { + } } diff --git a/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java b/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java index a7aea365..dbb5b793 100644 --- a/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java +++ b/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java @@ -148,4 +148,16 @@ public interface ICONSpecific { */ @External(readonly = true) BigInteger getMode(); + + /** + * (EventLog) Logs the event that handle the relay message + * The tracker monitors this event. + *

+ * indexed: 1 + * + * @param _prev String ( BTP Address of the previous BMC ) + * @param _count Integer ( number of the processed BTP message ) + */ + @EventLog(indexed = 1) + void RelayMessage(String _prev, BigInteger _count); } diff --git a/bmc/src/test/java/foundation/icon/btp/bmc/BMCIntegrationTest.java b/bmc/src/test/java/foundation/icon/btp/bmc/BMCIntegrationTest.java index 7325d954..de06333b 100644 --- a/bmc/src/test/java/foundation/icon/btp/bmc/BMCIntegrationTest.java +++ b/bmc/src/test/java/foundation/icon/btp/bmc/BMCIntegrationTest.java @@ -139,4 +139,10 @@ static Consumer btpEvent( consumer, null); } + static Consumer relayMessageEvent( + Consumer consumer) { + return eventLogChecker( + ICONSpecificScoreClient.RelayMessage::eventLogs, + consumer, null); + } } diff --git a/bmc/src/test/java/foundation/icon/btp/bmc/MessageTest.java b/bmc/src/test/java/foundation/icon/btp/bmc/MessageTest.java index c625bbf3..685a66b5 100644 --- a/bmc/src/test/java/foundation/icon/btp/bmc/MessageTest.java +++ b/bmc/src/test/java/foundation/icon/btp/bmc/MessageTest.java @@ -158,6 +158,15 @@ static Consumer btpEventChecker( ))); } + static Consumer relayMessageEventChecker( + final BTPAddress prev, final int count) { + return BMCIntegrationTest.relayMessageEvent( + (el) -> { + assertEquals(prev.toString(), el.get_prev()); + assertEquals(BigInteger.valueOf(count), el.get_count()); + }); + } + @ParameterizedTest @MethodSource("sendMessageShouldSuccessArguments") void sendMessageShouldSuccess( @@ -282,6 +291,8 @@ void handleRelayMessageShouldSuccess( System.out.println("handleRelayMessageShouldIncreaseRxSeq"); Consumer checker = rxSeqChecker(prev); + System.out.println("handleRelayMessageShouldEmitRelayMessage"); + checker = checker.andThen(relayMessageEventChecker(prev, 1)); if (expectBTPError != null) { if (snCompare > 0) { System.out.println("handleRelayMessageShouldReplyBTPError"); diff --git a/bmc/src/test/java/foundation/icon/btp/bmc/MessageWithFeeTest.java b/bmc/src/test/java/foundation/icon/btp/bmc/MessageWithFeeTest.java index dd87afa4..cc28ad57 100644 --- a/bmc/src/test/java/foundation/icon/btp/bmc/MessageWithFeeTest.java +++ b/bmc/src/test/java/foundation/icon/btp/bmc/MessageWithFeeTest.java @@ -277,6 +277,8 @@ void handleRelayMessageShouldSuccess( System.out.println("handleRelayMessageShouldIncreaseRxSeqAndAccumulateReward"); Consumer checker = MessageTest.rxSeqChecker(prev) .andThen(rewardChecker(msg)); + System.out.println("handleRelayMessageShouldEmitRelayMessage"); + checker = checker.andThen(MessageTest.relayMessageEventChecker(prev, 1)); if (expectBTPError != null) { System.out.println("handleRelayMessageShouldReplyBTPError"); checker = checker.andThen(responseMessageChecker(prev, msg, expectBTPError)); From 0a477db410b5ad59375ceba931a898ca81b09d5a Mon Sep 17 00:00:00 2001 From: Jeongseo Park Date: Tue, 5 Sep 2023 17:17:17 +0900 Subject: [PATCH 2/2] Update RelayMessage event log indexed, 1 => 0 --- .../main/java/foundation/icon/btp/bmc/BTPMessageCenter.java | 2 +- bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java b/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java index e13dbc3b..645a2022 100644 --- a/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java +++ b/bmc/src/main/java/foundation/icon/btp/bmc/BTPMessageCenter.java @@ -1186,7 +1186,7 @@ private void requireNormalMode() { } } - @EventLog(indexed = 1) + @EventLog public void RelayMessage(String _prev, BigInteger _count) { } } diff --git a/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java b/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java index dbb5b793..8f7d5d00 100644 --- a/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java +++ b/bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java @@ -153,11 +153,11 @@ public interface ICONSpecific { * (EventLog) Logs the event that handle the relay message * The tracker monitors this event. *

- * indexed: 1 + * indexed: 0 * * @param _prev String ( BTP Address of the previous BMC ) * @param _count Integer ( number of the processed BTP message ) */ - @EventLog(indexed = 1) + @EventLog void RelayMessage(String _prev, BigInteger _count); }