Skip to content

Commit e6c942b

Browse files
svyatonikbkontur
authored andcommitted
emit events from bridge hub router (#2760)
1 parent 7d44a36 commit e6c942b

File tree

3 files changed

+65
-3
lines changed

3 files changed

+65
-3
lines changed

bridges/modules/xcm-bridge-hub-router/src/lib.rs

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ pub mod pallet {
7777

7878
#[pallet::config]
7979
pub trait Config<I: 'static = ()>: frame_system::Config {
80+
/// The overarching event type.
81+
type RuntimeEvent: From<Event<Self, I>>
82+
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
8083
/// Benchmarks results from runtime we're plugged into.
8184
type WeightInfo: WeightInfo;
8285

@@ -134,6 +137,10 @@ pub mod pallet {
134137
previous_factor,
135138
delivery_fee_factor,
136139
);
140+
Self::deposit_event(Event::DeliveryFeeFactorDecreased {
141+
new_value: delivery_fee_factor,
142+
});
143+
137144
DeliveryFeeFactor::<T, I>::put(delivery_fee_factor);
138145

139146
T::WeightInfo::on_initialize_when_non_congested()
@@ -202,10 +209,26 @@ pub mod pallet {
202209
previous_factor,
203210
f,
204211
);
212+
Self::deposit_event(Event::DeliveryFeeFactorIncreased { new_value: *f });
205213
*f
206214
});
207215
}
208216
}
217+
218+
#[pallet::event]
219+
#[pallet::generate_deposit(pub(super) fn deposit_event)]
220+
pub enum Event<T: Config<I>, I: 'static = ()> {
221+
/// Delivery fee factor has been decreased.
222+
DeliveryFeeFactorDecreased {
223+
/// New value of the `DeliveryFeeFactor`.
224+
new_value: FixedU128,
225+
},
226+
/// Delivery fee factor has been increased.
227+
DeliveryFeeFactorIncreased {
228+
/// New value of the `DeliveryFeeFactor`.
229+
new_value: FixedU128,
230+
},
231+
}
209232
}
210233

211234
/// We'll be using `SovereignPaidRemoteExporter` to send remote messages over the sibling/child
@@ -399,6 +422,7 @@ mod tests {
399422
use mock::*;
400423

401424
use frame_support::traits::Hooks;
425+
use frame_system::{EventRecord, Phase};
402426
use sp_runtime::traits::One;
403427

404428
#[test]
@@ -418,13 +442,16 @@ mod tests {
418442
let old_delivery_fee_factor = XcmBridgeHubRouter::delivery_fee_factor();
419443
XcmBridgeHubRouter::on_initialize(One::one());
420444
assert_eq!(XcmBridgeHubRouter::delivery_fee_factor(), old_delivery_fee_factor);
445+
446+
assert_eq!(System::events(), vec![]);
421447
})
422448
}
423449

424450
#[test]
425451
fn fee_factor_is_decreased_from_on_initialize_when_xcm_channel_is_uncongested() {
426452
run_test(|| {
427-
DeliveryFeeFactor::<TestRuntime, ()>::put(FixedU128::from_rational(125, 100));
453+
let initial_fee_factor = FixedU128::from_rational(125, 100);
454+
DeliveryFeeFactor::<TestRuntime, ()>::put(initial_fee_factor);
428455

429456
// it shold eventually decreased to one
430457
while XcmBridgeHubRouter::delivery_fee_factor() > MINIMAL_DELIVERY_FEE_FACTOR {
@@ -434,6 +461,19 @@ mod tests {
434461
// verify that it doesn't decreases anymore
435462
XcmBridgeHubRouter::on_initialize(One::one());
436463
assert_eq!(XcmBridgeHubRouter::delivery_fee_factor(), MINIMAL_DELIVERY_FEE_FACTOR);
464+
465+
// check emitted event
466+
let first_system_event = System::events().first().cloned();
467+
assert_eq!(
468+
first_system_event,
469+
Some(EventRecord {
470+
phase: Phase::Initialization,
471+
event: RuntimeEvent::XcmBridgeHubRouter(Event::DeliveryFeeFactorDecreased {
472+
new_value: initial_fee_factor / EXPONENTIAL_FEE_BASE,
473+
}),
474+
topics: vec![],
475+
})
476+
);
437477
})
438478
}
439479

@@ -568,6 +608,8 @@ mod tests {
568608

569609
assert!(TestToBridgeHubSender::is_message_sent());
570610
assert_eq!(old_delivery_fee_factor, XcmBridgeHubRouter::delivery_fee_factor());
611+
612+
assert_eq!(System::events(), vec![]);
571613
});
572614
}
573615

@@ -585,6 +627,19 @@ mod tests {
585627

586628
assert!(TestToBridgeHubSender::is_message_sent());
587629
assert!(old_delivery_fee_factor < XcmBridgeHubRouter::delivery_fee_factor());
630+
631+
// check emitted event
632+
let first_system_event = System::events().first().cloned();
633+
assert!(matches!(
634+
first_system_event,
635+
Some(EventRecord {
636+
phase: Phase::Initialization,
637+
event: RuntimeEvent::XcmBridgeHubRouter(
638+
Event::DeliveryFeeFactorIncreased { .. }
639+
),
640+
..
641+
})
642+
));
588643
});
589644
}
590645

bridges/modules/xcm-bridge-hub-router/src/mock.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ construct_runtime! {
4444
pub enum TestRuntime
4545
{
4646
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
47-
XcmBridgeHubRouter: pallet_xcm_bridge_hub_router::{Pallet, Storage},
47+
XcmBridgeHubRouter: pallet_xcm_bridge_hub_router::{Pallet, Storage, Event<T>},
4848
}
4949
}
5050

@@ -72,6 +72,7 @@ impl frame_system::Config for TestRuntime {
7272
}
7373

7474
impl pallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
75+
type RuntimeEvent = RuntimeEvent;
7576
type WeightInfo = ();
7677

7778
type UniversalLocation = UniversalLocation;
@@ -185,7 +186,12 @@ pub fn new_test_ext() -> sp_io::TestExternalities {
185186

186187
/// Run pallet test.
187188
pub fn run_test<T>(test: impl FnOnce() -> T) -> T {
188-
new_test_ext().execute_with(test)
189+
new_test_ext().execute_with(|| {
190+
System::set_block_number(1);
191+
System::reset_events();
192+
193+
test()
194+
})
189195
}
190196

191197
pub(crate) fn fake_message_hash<T>(message: &Xcm<T>) -> XcmHash {

bridges/modules/xcm-bridge-hub/src/mock.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ impl pallet_xcm_bridge_hub::Config for TestRuntime {
199199
}
200200

201201
impl pallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
202+
type RuntimeEvent = RuntimeEvent;
202203
type WeightInfo = ();
203204

204205
type UniversalLocation = UniversalLocation;

0 commit comments

Comments
 (0)