Skip to content

Commit

Permalink
Run background relayer in test (#231)
Browse files Browse the repository at this point in the history
* Implement CanAssertEventualAmount

* Update test to use auto relayer

* Fix clone wrong relay

* Scaffold BuildStarknetIbcTransferMessage

* Scaffold IbcTokenTransferMessageBuilder types

* Leave implementation of IBC transfer message to later

* Use separate wallet for transferring token in test

* ICS transfer test with background auto relayer is working

* Use back main branch

* typo

---------

Co-authored-by: Farhad Shabani <Farhad.Shabani@gmail.com>
  • Loading branch information
soareschen and Farhad-Shabani authored Jan 28, 2025
1 parent 34457fa commit ff5f389
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 118 deletions.
62 changes: 31 additions & 31 deletions relayer/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions relayer/crates/starknet-chain-components/src/components/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,12 @@ pub use hermes_relayer_components::transaction::traits::submit_tx::TxSubmitterCo
pub use hermes_relayer_components::transaction::traits::types::transaction::TransactionTypeComponent;
pub use hermes_relayer_components::transaction::traits::types::tx_hash::TransactionHashTypeComponent;
pub use hermes_relayer_components::transaction::traits::types::tx_response::TxResponseTypeComponent;
use hermes_test_components::chain::impls::assert::default_assert_duration::ProvideDefaultPollAssertDuration;
use hermes_test_components::chain::impls::assert::poll_assert_eventual_amount::PollAssertEventualAmount;
use hermes_test_components::chain::impls::ibc_transfer::SendIbcTransferMessage;
pub use hermes_test_components::chain::traits::assert::eventual_amount::EventualAmountAsserterComponent;
pub use hermes_test_components::chain::traits::assert::poll_assert::PollAssertDurationGetterComponent;
use hermes_test_components::chain::traits::messages::ibc_transfer::IbcTokenTransferMessageBuilderComponent;
use hermes_test_components::chain::traits::queries::balance::BalanceQuerierComponent;
use hermes_test_components::chain::traits::transfer::ibc_transfer::TokenIbcTransferrerComponent;
use hermes_test_components::chain::traits::transfer::string_memo::ProvideStringMemoType;
Expand All @@ -63,6 +68,7 @@ use crate::impls::events::UseStarknetEvents;
use crate::impls::messages::channel::BuildStarknetChannelHandshakeMessages;
use crate::impls::messages::connection::BuildStarknetConnectionHandshakeMessages;
use crate::impls::messages::create_client::BuildCreateCometClientMessage;
use crate::impls::messages::ibc_transfer::BuildStarknetIbcTransferMessage;
use crate::impls::messages::packet::BuildStarknetPacketMessages;
use crate::impls::messages::update_client::BuildUpdateCometClientMessage;
use crate::impls::packet_fields::ReadPacketSrcStarknetFields;
Expand Down Expand Up @@ -391,5 +397,11 @@ cgp_preset! {
QueryPacketIsReceivedOnStarknet,
CounterpartyChainIdQuerierComponent:
QueryCosmosChainIdFromStarknetChannelId,
EventualAmountAsserterComponent:
PollAssertEventualAmount,
PollAssertDurationGetterComponent:
ProvideDefaultPollAssertDuration,
IbcTokenTransferMessageBuilderComponent:
BuildStarknetIbcTransferMessage,
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
use cgp::prelude::HasAsyncErrorType;
use hermes_chain_components::traits::types::height::HasHeightType;
use hermes_chain_components::traits::types::ibc::{HasChannelIdType, HasPortIdType};
use hermes_chain_components::traits::types::message::HasMessageType;
use hermes_chain_components::traits::types::timestamp::HasTimeoutType;
use hermes_chain_type_components::traits::types::address::HasAddressType;
use hermes_test_components::chain::traits::messages::ibc_transfer::IbcTokenTransferMessageBuilder;
use hermes_test_components::chain::traits::types::amount::HasAmountType;
use hermes_test_components::chain::traits::types::memo::HasMemoType;
use ibc::core::host::types::identifiers::PortId;
use ibc::primitives::Timestamp;

use crate::impls::types::message::StarknetMessage;
use crate::types::amount::StarknetAmount;
use crate::types::channel_id::ChannelId;

pub struct BuildStarknetIbcTransferMessage;

impl<Chain, Counterparty> IbcTokenTransferMessageBuilder<Chain, Counterparty>
for BuildStarknetIbcTransferMessage
where
Chain: HasAsyncErrorType
+ HasAmountType<Amount = StarknetAmount>
+ HasMemoType<Memo = Option<String>>
+ HasMessageType<Message = StarknetMessage>
+ HasHeightType<Height = u64>
+ HasTimeoutType<Timeout = Timestamp>
+ HasChannelIdType<Counterparty, ChannelId = ChannelId>
+ HasPortIdType<Counterparty, PortId = PortId>,
Counterparty: HasAddressType,
{
async fn build_ibc_token_transfer_message(
_chain: &Chain,
_channel_id: &ChannelId,
_port_id: &PortId,
_recipient_address: &Counterparty::Address,
_amount: &StarknetAmount,
_memo: &Option<String>,
_timeout_height: Option<&u64>,
_timeout_time: Option<&Timestamp>,
) -> Result<Chain::Message, Chain::Error> {
// FIXME: Implement the logic to build the token transfer message
todo!()
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
pub mod channel;
pub mod connection;
pub mod create_client;
pub mod ibc_transfer;
pub mod packet;
pub mod update_client;
Loading

0 comments on commit ff5f389

Please sign in to comment.