pub struct DomainNode<Runtime, RuntimeApi>where
Runtime: DomainRuntime,
RuntimeApi: ConstructRuntimeApi<Block, FullClient<Block, RuntimeApi>> + Send + Sync + 'static,
RuntimeApi::RuntimeApi: ApiExt<Block> + Metadata<Block> + BlockBuilder<Block> + OffchainWorkerApi<Block> + SessionKeys<Block> + DomainCoreApi<Block> + MessengerApi<Block, NumberFor<Block>, <Block as BlockT>::Hash> + TaggedTransactionQueue<Block> + AccountNonceApi<Block, Runtime::AccountId, Nonce> + TransactionPaymentRuntimeApi<Block, Balance> + RelayerApi<Block, NumberFor<Block>, NumberFor<Block>, <Block as BlockT>::Hash>,{
pub domain_id: DomainId,
pub key: Runtime::Keyring,
pub task_manager: TaskManager,
pub client: Arc<FullClient<Block, RuntimeApi>>,
pub backend: Arc<Backend>,
pub code_executor: Arc<RuntimeExecutor>,
pub network_service: Arc<dyn NetworkService>,
pub sync_service: Arc<SyncingService<Block>>,
pub addr: MultiaddrWithPeerId,
pub rpc_handlers: RpcHandlers,
pub operator: DomainOperator<RuntimeApi>,
pub tx_pool_sink: TracingUnboundedSender<ChainMsg>,
}
Expand description
A generic domain node instance used for testing.
Fields§
§domain_id: DomainId
The domain id
key: Runtime::Keyring
The node’s account key
task_manager: TaskManager
TaskManager’s instance.
client: Arc<FullClient<Block, RuntimeApi>>
Client’s instance.
backend: Arc<Backend>
Client backend.
code_executor: Arc<RuntimeExecutor>
Code executor.
network_service: Arc<dyn NetworkService>
Network service.
sync_service: Arc<SyncingService<Block>>
Sync service.
addr: MultiaddrWithPeerId
The MultiaddrWithPeerId
to this node. This is useful if you want to pass it as “boot node”
to other nodes.
rpc_handlers: RpcHandlers
RPCHandlers to make RPC queries.
operator: DomainOperator<RuntimeApi>
Domain oeprator.
tx_pool_sink: TracingUnboundedSender<ChainMsg>
Sink to the node’s tx pool
Implementations§
source§impl<Runtime, RuntimeApi> DomainNode<Runtime, RuntimeApi>where
Runtime: Config<Hash = H256> + Config + DomainRuntime + Send + Sync,
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + Send + Sync,
<<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance: Send + Sync + From<u64> + FixedPointOperand,
u64: From<BlockNumberFor<Runtime>>,
RuntimeApi: ConstructRuntimeApi<Block, FullClient<Block, RuntimeApi>> + Send + Sync + 'static,
RuntimeApi::RuntimeApi: ApiExt<Block> + Metadata<Block> + BlockBuilder<Block> + OffchainWorkerApi<Block> + SessionKeys<Block> + DomainCoreApi<Block> + TaggedTransactionQueue<Block> + AccountNonceApi<Block, <Runtime as DomainRuntime>::AccountId, Nonce> + TransactionPaymentRuntimeApi<Block, Balance> + MessengerApi<Block, NumberFor<Block>, <Block as BlockT>::Hash> + RelayerApi<Block, NumberFor<Block>, NumberFor<Block>, <Block as BlockT>::Hash> + OnchainStateApi<Block, <Runtime as DomainRuntime>::AccountId, Balance>,
impl<Runtime, RuntimeApi> DomainNode<Runtime, RuntimeApi>where
Runtime: Config<Hash = H256> + Config + DomainRuntime + Send + Sync,
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + Send + Sync,
<<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance: Send + Sync + From<u64> + FixedPointOperand,
u64: From<BlockNumberFor<Runtime>>,
RuntimeApi: ConstructRuntimeApi<Block, FullClient<Block, RuntimeApi>> + Send + Sync + 'static,
RuntimeApi::RuntimeApi: ApiExt<Block> + Metadata<Block> + BlockBuilder<Block> + OffchainWorkerApi<Block> + SessionKeys<Block> + DomainCoreApi<Block> + TaggedTransactionQueue<Block> + AccountNonceApi<Block, <Runtime as DomainRuntime>::AccountId, Nonce> + TransactionPaymentRuntimeApi<Block, Balance> + MessengerApi<Block, NumberFor<Block>, <Block as BlockT>::Hash> + RelayerApi<Block, NumberFor<Block>, NumberFor<Block>, <Block as BlockT>::Hash> + OnchainStateApi<Block, <Runtime as DomainRuntime>::AccountId, Balance>,
sourcepub fn wait_for_blocks(&self, count: usize) -> impl Future<Output = ()>
pub fn wait_for_blocks(&self, count: usize) -> impl Future<Output = ()>
Wait for count
blocks to be imported in the node and then exit. This function will not
return if no blocks are ever created, thus you should restrict the maximum amount of time of
the test execution.
sourcepub fn account_nonce(&self) -> u32
pub fn account_nonce(&self) -> u32
Get the nonce of the node account
sourcepub async fn send_system_remark(&mut self)
pub async fn send_system_remark(&mut self)
Sends an system.remark extrinsic to the pool.
sourcepub async fn construct_and_send_extrinsic(
&mut self,
function: impl Into<<Runtime as Config>::RuntimeCall>,
) -> Result<RpcTransactionOutput, RpcTransactionError>
pub async fn construct_and_send_extrinsic( &mut self, function: impl Into<<Runtime as Config>::RuntimeCall>, ) -> Result<RpcTransactionOutput, RpcTransactionError>
Construct an extrinsic with the current nonce of the node account and send it to this node.
sourcepub async fn construct_and_send_extrinsic_with(
&self,
nonce: u32,
tip: <<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance,
function: impl Into<<Runtime as Config>::RuntimeCall>,
) -> Result<RpcTransactionOutput, RpcTransactionError>
pub async fn construct_and_send_extrinsic_with( &self, nonce: u32, tip: <<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance, function: impl Into<<Runtime as Config>::RuntimeCall>, ) -> Result<RpcTransactionOutput, RpcTransactionError>
Construct an extrinsic with the given nonce and tip for the node account and send it to this node.
sourcepub fn construct_extrinsic(
&mut self,
nonce: u32,
function: impl Into<<Runtime as Config>::RuntimeCall>,
) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
pub fn construct_extrinsic( &mut self, nonce: u32, function: impl Into<<Runtime as Config>::RuntimeCall>, ) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
Construct an extrinsic.
sourcepub fn construct_extrinsic_with_tip(
&mut self,
nonce: u32,
tip: <<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance,
function: impl Into<<Runtime as Config>::RuntimeCall>,
) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
pub fn construct_extrinsic_with_tip( &mut self, nonce: u32, tip: <<Runtime as Config>::OnChargeTransaction as OnChargeTransaction<Runtime>>::Balance, function: impl Into<<Runtime as Config>::RuntimeCall>, ) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
Construct an extrinsic with the given transaction tip.
sourcepub async fn send_extrinsic(
&self,
extrinsic: impl Into<OpaqueExtrinsic>,
) -> Result<RpcTransactionOutput, RpcTransactionError>
pub async fn send_extrinsic( &self, extrinsic: impl Into<OpaqueExtrinsic>, ) -> Result<RpcTransactionOutput, RpcTransactionError>
Send an extrinsic to this node.
sourcepub fn free_balance(
&self,
account_id: <Runtime as DomainRuntime>::AccountId,
) -> Balance
pub fn free_balance( &self, account_id: <Runtime as DomainRuntime>::AccountId, ) -> Balance
Get the free balance of the given account
sourcepub fn get_open_channel_for_chain(&self, chain_id: ChainId) -> Option<ChannelId>
pub fn get_open_channel_for_chain(&self, chain_id: ChainId) -> Option<ChannelId>
Returns the open XDM channel for given chain
sourcepub fn construct_unsigned_extrinsic(
&self,
function: impl Into<<Runtime as Config>::RuntimeCall>,
) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
pub fn construct_unsigned_extrinsic( &self, function: impl Into<<Runtime as Config>::RuntimeCall>, ) -> UncheckedExtrinsic<<Runtime as DomainRuntime>::Address, <Runtime as Config>::RuntimeCall, <Runtime as DomainRuntime>::Signature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckMortality<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>
Construct an unsigned extrinsic that can be applied to the test runtime.
Auto Trait Implementations§
impl<Runtime, RuntimeApi> Freeze for DomainNode<Runtime, RuntimeApi>
impl<Runtime, RuntimeApi> !RefUnwindSafe for DomainNode<Runtime, RuntimeApi>
impl<Runtime, RuntimeApi> Send for DomainNode<Runtime, RuntimeApi>
impl<Runtime, RuntimeApi> !Sync for DomainNode<Runtime, RuntimeApi>
impl<Runtime, RuntimeApi> Unpin for DomainNode<Runtime, RuntimeApi>
impl<Runtime, RuntimeApi> !UnwindSafe for DomainNode<Runtime, RuntimeApi>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.