Skip to content

Commit

Permalink
Add RelayMessage event log in bmc
Browse files Browse the repository at this point in the history
  • Loading branch information
jspark-icon committed Sep 4, 2023
1 parent 81c8609 commit 9638edb
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -1184,4 +1185,8 @@ private void requireNormalMode() {
throw BMCException.unknown("not normal mode");
}
}

@EventLog(indexed = 1)
public void RelayMessage(String _prev, BigInteger _count) {
}
}
12 changes: 12 additions & 0 deletions bmc/src/main/java/foundation/icon/btp/bmc/ICONSpecific.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.
* <p>
* 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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,10 @@ static Consumer<TransactionResult> btpEvent(
consumer, null);
}

static Consumer<TransactionResult> relayMessageEvent(
Consumer<ICONSpecificScoreClient.RelayMessage> consumer) {
return eventLogChecker(
ICONSpecificScoreClient.RelayMessage::eventLogs,
consumer, null);
}
}
11 changes: 11 additions & 0 deletions bmc/src/test/java/foundation/icon/btp/bmc/MessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,15 @@ static Consumer<TransactionResult> btpEventChecker(
)));
}

static Consumer<TransactionResult> 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(
Expand Down Expand Up @@ -282,6 +291,8 @@ void handleRelayMessageShouldSuccess(

System.out.println("handleRelayMessageShouldIncreaseRxSeq");
Consumer<TransactionResult> checker = rxSeqChecker(prev);
System.out.println("handleRelayMessageShouldEmitRelayMessage");
checker = checker.andThen(relayMessageEventChecker(prev, 1));
if (expectBTPError != null) {
if (snCompare > 0) {
System.out.println("handleRelayMessageShouldReplyBTPError");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,8 @@ void handleRelayMessageShouldSuccess(
System.out.println("handleRelayMessageShouldIncreaseRxSeqAndAccumulateReward");
Consumer<TransactionResult> 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));
Expand Down

0 comments on commit 9638edb

Please sign in to comment.