Skip to content

Commit 4bc97e4

Browse files
authored
Add event field names to HRMP Event variants (#1695)
Update the HRMP pallet to use field names for Event variants to improve metadata for a better client experience. Event variants are now structs instead of unnamed tuples. Partially implements Substrate issue [9903](paritytech/substrate#9903) which doesn't appear to have been moved to the monorepo.
1 parent 769bdd3 commit 4bc97e4

6 files changed

Lines changed: 136 additions & 66 deletions

File tree

cumulus/parachains/integration-tests/e2e/collectives/collectives-polkadot/0_xcm/3_hrmp-open-channels.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ tests:
3737
]
3838
events:
3939
- name: hrmp.HrmpChannelForceOpened
40-
result: [*cp_id, *sp_id, *hrmp_proposed_max_capacity, *hrmp_proposed_max_message_size]
40+
result: {
41+
sender: *cp_id,
42+
recipient: *sp_id,
43+
proposed_max_capacity: *hrmp_proposed_max_capacity,
44+
proposed_max_message_size: *hrmp_proposed_max_message_size
45+
}
4146
- name: Force Open HRMP Channel From AssetHub Parachain → Collectives Parachain
4247
its:
4348
- name: Alice calls hrmp.forceOpenHrmpChannel
@@ -56,4 +61,9 @@ tests:
5661
]
5762
events:
5863
- name: hrmp.HrmpChannelForceOpened
59-
result: [*sp_id, *cp_id, *hrmp_proposed_max_capacity, *hrmp_proposed_max_message_size]
64+
result: {
65+
sender: *sp_id,
66+
recipient: *cp_id,
67+
proposed_max_capacity: *hrmp_proposed_max_capacity,
68+
proposed_max_message_size: *hrmp_proposed_max_message_size
69+
}

cumulus/parachains/integration-tests/emulated/assets/asset-hub-kusama/src/tests/hrmp_channels.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,12 @@ fn open_hrmp_channel_between_paras_works() {
7979
},
8080
// Open channel requested from Para A to Para B
8181
RuntimeEvent::Hrmp(
82-
polkadot_runtime_parachains::hrmp::Event::OpenChannelRequested(
83-
sender, recipient, max_capacity, max_message_size
84-
)
82+
polkadot_runtime_parachains::hrmp::Event::OpenChannelRequested {
83+
sender,
84+
recipient,
85+
proposed_max_capacity: max_capacity,
86+
proposed_max_message_size: max_message_size
87+
}
8588
) => {
8689
sender: *sender == para_a_id.into(),
8790
recipient: *recipient == para_b_id.into(),
@@ -133,9 +136,9 @@ fn open_hrmp_channel_between_paras_works() {
133136
},
134137
// Open channel accepted for Para A to Para B
135138
RuntimeEvent::Hrmp(
136-
polkadot_runtime_parachains::hrmp::Event::OpenChannelAccepted(
139+
polkadot_runtime_parachains::hrmp::Event::OpenChannelAccepted {
137140
sender, recipient
138-
)
141+
}
139142
) => {
140143
sender: *sender == para_a_id.into(),
141144
recipient: *recipient == para_b_id.into(),
@@ -175,9 +178,12 @@ fn force_open_hrmp_channel_for_system_para_works() {
175178
vec![
176179
// HRMP channel forced opened
177180
RuntimeEvent::Hrmp(
178-
polkadot_runtime_parachains::hrmp::Event::HrmpChannelForceOpened(
179-
sender, recipient, max_capacity, max_message_size
180-
)
181+
polkadot_runtime_parachains::hrmp::Event::HrmpChannelForceOpened{
182+
sender,
183+
recipient,
184+
proposed_max_capacity: max_capacity,
185+
proposed_max_message_size: max_message_size
186+
}
181187
) => {
182188
sender: *sender == system_para_id.into(),
183189
recipient: *recipient == para_a_id.into(),

cumulus/parachains/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/hrmp_channels.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ fn open_hrmp_channel_between_paras_works() {
7979
},
8080
// Open channel requested from Para A to Para B
8181
RuntimeEvent::Hrmp(
82-
polkadot_runtime_parachains::hrmp::Event::OpenChannelRequested(
83-
sender, recipient, max_capacity, max_message_size
84-
)
82+
polkadot_runtime_parachains::hrmp::Event::OpenChannelRequested {
83+
sender, recipient, proposed_max_capacity: max_capacity, proposed_max_message_size: max_message_size
84+
}
8585
) => {
8686
sender: *sender == para_a_id.into(),
8787
recipient: *recipient == para_b_id.into(),
@@ -133,9 +133,9 @@ fn open_hrmp_channel_between_paras_works() {
133133
},
134134
// Open channel accepted for Para A to Para B
135135
RuntimeEvent::Hrmp(
136-
polkadot_runtime_parachains::hrmp::Event::OpenChannelAccepted(
136+
polkadot_runtime_parachains::hrmp::Event::OpenChannelAccepted {
137137
sender, recipient
138-
)
138+
}
139139
) => {
140140
sender: *sender == para_a_id.into(),
141141
recipient: *recipient == para_b_id.into(),
@@ -175,9 +175,9 @@ fn force_open_hrmp_channel_for_system_para_works() {
175175
vec![
176176
// HRMP channel forced opened
177177
RuntimeEvent::Hrmp(
178-
polkadot_runtime_parachains::hrmp::Event::HrmpChannelForceOpened(
179-
sender, recipient, max_capacity, max_message_size
180-
)
178+
polkadot_runtime_parachains::hrmp::Event::HrmpChannelForceOpened{
179+
sender, recipient, proposed_max_capacity: max_capacity, proposed_max_message_size: max_message_size
180+
}
181181
) => {
182182
sender: *sender == system_para_id.into(),
183183
recipient: *recipient == para_a_id.into(),

polkadot/runtime/parachains/src/hrmp.rs

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -278,24 +278,34 @@ pub mod pallet {
278278
#[pallet::generate_deposit(pub(super) fn deposit_event)]
279279
pub enum Event<T: Config> {
280280
/// Open HRMP channel requested.
281-
/// `[sender, recipient, proposed_max_capacity, proposed_max_message_size]`
282-
OpenChannelRequested(ParaId, ParaId, u32, u32),
281+
OpenChannelRequested {
282+
sender: ParaId,
283+
recipient: ParaId,
284+
proposed_max_capacity: u32,
285+
proposed_max_message_size: u32,
286+
},
283287
/// An HRMP channel request sent by the receiver was canceled by either party.
284-
/// `[by_parachain, channel_id]`
285-
OpenChannelCanceled(ParaId, HrmpChannelId),
286-
/// Open HRMP channel accepted. `[sender, recipient]`
287-
OpenChannelAccepted(ParaId, ParaId),
288-
/// HRMP channel closed. `[by_parachain, channel_id]`
289-
ChannelClosed(ParaId, HrmpChannelId),
288+
OpenChannelCanceled { by_parachain: ParaId, channel_id: HrmpChannelId },
289+
/// Open HRMP channel accepted.
290+
OpenChannelAccepted { sender: ParaId, recipient: ParaId },
291+
/// HRMP channel closed.
292+
ChannelClosed { by_parachain: ParaId, channel_id: HrmpChannelId },
290293
/// An HRMP channel was opened via Root origin.
291-
/// `[sender, recipient, proposed_max_capacity, proposed_max_message_size]`
292-
HrmpChannelForceOpened(ParaId, ParaId, u32, u32),
294+
HrmpChannelForceOpened {
295+
sender: ParaId,
296+
recipient: ParaId,
297+
proposed_max_capacity: u32,
298+
proposed_max_message_size: u32,
299+
},
293300
/// An HRMP channel was opened between two system chains.
294-
/// `[sender, recipient, proposed_max_capacity, proposed_max_message_size]`
295-
HrmpSystemChannelOpened(ParaId, ParaId, u32, u32),
301+
HrmpSystemChannelOpened {
302+
sender: ParaId,
303+
recipient: ParaId,
304+
proposed_max_capacity: u32,
305+
proposed_max_message_size: u32,
306+
},
296307
/// An HRMP channel's deposits were updated.
297-
/// `[sender, recipient]`
298-
OpenChannelDepositsUpdated(ParaId, ParaId),
308+
OpenChannelDepositsUpdated { sender: ParaId, recipient: ParaId },
299309
}
300310

301311
#[pallet::error]
@@ -499,12 +509,12 @@ pub mod pallet {
499509
proposed_max_capacity,
500510
proposed_max_message_size,
501511
)?;
502-
Self::deposit_event(Event::OpenChannelRequested(
503-
origin,
512+
Self::deposit_event(Event::OpenChannelRequested {
513+
sender: origin,
504514
recipient,
505515
proposed_max_capacity,
506516
proposed_max_message_size,
507-
));
517+
});
508518
Ok(())
509519
}
510520

@@ -516,7 +526,7 @@ pub mod pallet {
516526
pub fn hrmp_accept_open_channel(origin: OriginFor<T>, sender: ParaId) -> DispatchResult {
517527
let origin = ensure_parachain(<T as Config>::RuntimeOrigin::from(origin))?;
518528
Self::accept_open_channel(origin, sender)?;
519-
Self::deposit_event(Event::OpenChannelAccepted(sender, origin));
529+
Self::deposit_event(Event::OpenChannelAccepted { sender, recipient: origin });
520530
Ok(())
521531
}
522532

@@ -532,7 +542,7 @@ pub mod pallet {
532542
) -> DispatchResult {
533543
let origin = ensure_parachain(<T as Config>::RuntimeOrigin::from(origin))?;
534544
Self::close_channel(origin, channel_id.clone())?;
535-
Self::deposit_event(Event::ChannelClosed(origin, channel_id));
545+
Self::deposit_event(Event::ChannelClosed { by_parachain: origin, channel_id });
536546
Ok(())
537547
}
538548

@@ -611,7 +621,7 @@ pub mod pallet {
611621
Error::<T>::WrongWitness
612622
);
613623
Self::cancel_open_request(origin, channel_id.clone())?;
614-
Self::deposit_event(Event::OpenChannelCanceled(origin, channel_id));
624+
Self::deposit_event(Event::OpenChannelCanceled { by_parachain: origin, channel_id });
615625
Ok(())
616626
}
617627

@@ -651,12 +661,12 @@ pub mod pallet {
651661
// that it will not require deposits from either member.
652662
Self::init_open_channel(sender, recipient, max_capacity, max_message_size)?;
653663
Self::accept_open_channel(recipient, sender)?;
654-
Self::deposit_event(Event::HrmpChannelForceOpened(
664+
Self::deposit_event(Event::HrmpChannelForceOpened {
655665
sender,
656666
recipient,
657-
max_capacity,
658-
max_message_size,
659-
));
667+
proposed_max_capacity: max_capacity,
668+
proposed_max_message_size: max_message_size,
669+
});
660670

661671
Ok(Some(<T as Config>::WeightInfo::force_open_hrmp_channel(cancel_request)).into())
662672
}
@@ -695,12 +705,12 @@ pub mod pallet {
695705
Self::init_open_channel(sender, recipient, max_capacity, max_message_size)?;
696706
Self::accept_open_channel(recipient, sender)?;
697707

698-
Self::deposit_event(Event::HrmpSystemChannelOpened(
708+
Self::deposit_event(Event::HrmpSystemChannelOpened {
699709
sender,
700710
recipient,
701-
max_capacity,
702-
max_message_size,
703-
));
711+
proposed_max_capacity: max_capacity,
712+
proposed_max_message_size: max_message_size,
713+
});
704714

705715
Ok(Pays::No.into())
706716
}
@@ -796,7 +806,7 @@ pub mod pallet {
796806
Ok(())
797807
})?;
798808

799-
Self::deposit_event(Event::OpenChannelDepositsUpdated(sender, recipient));
809+
Self::deposit_event(Event::OpenChannelDepositsUpdated { sender, recipient });
800810

801811
Ok(())
802812
}

polkadot/runtime/parachains/src/hrmp/benchmarking.rs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,13 @@ mod benchmarks {
166166
_(sender_origin, recipient_id, capacity, message_size);
167167

168168
assert_last_event::<T>(
169-
Event::<T>::OpenChannelRequested(sender_id, recipient_id, capacity, message_size)
170-
.into(),
169+
Event::<T>::OpenChannelRequested {
170+
sender: sender_id,
171+
recipient: recipient_id,
172+
proposed_max_capacity: capacity,
173+
proposed_max_message_size: message_size,
174+
}
175+
.into(),
171176
);
172177
}
173178

@@ -179,7 +184,7 @@ mod benchmarks {
179184
#[extrinsic_call]
180185
_(recipient_origin, sender);
181186

182-
assert_last_event::<T>(Event::<T>::OpenChannelAccepted(sender, recipient).into());
187+
assert_last_event::<T>(Event::<T>::OpenChannelAccepted { sender, recipient }.into());
183188
}
184189

185190
#[benchmark]
@@ -191,7 +196,9 @@ mod benchmarks {
191196
#[extrinsic_call]
192197
_(sender_origin, channel_id.clone());
193198

194-
assert_last_event::<T>(Event::<T>::ChannelClosed(sender, channel_id).into());
199+
assert_last_event::<T>(
200+
Event::<T>::ChannelClosed { by_parachain: sender, channel_id }.into(),
201+
);
195202
}
196203

197204
// NOTE: a single parachain should have the maximum number of allowed ingress and egress
@@ -411,8 +418,13 @@ mod benchmarks {
411418
_(frame_system::Origin::<T>::Root, sender_id, recipient_id, capacity, message_size);
412419

413420
assert_last_event::<T>(
414-
Event::<T>::HrmpChannelForceOpened(sender_id, recipient_id, capacity, message_size)
415-
.into(),
421+
Event::<T>::HrmpChannelForceOpened {
422+
sender: sender_id,
423+
recipient: recipient_id,
424+
proposed_max_capacity: capacity,
425+
proposed_max_message_size: message_size,
426+
}
427+
.into(),
416428
);
417429
}
418430

@@ -435,8 +447,13 @@ mod benchmarks {
435447
_(frame_system::RawOrigin::Signed(caller), sender_id, recipient_id);
436448

437449
assert_last_event::<T>(
438-
Event::<T>::HrmpSystemChannelOpened(sender_id, recipient_id, capacity, message_size)
439-
.into(),
450+
Event::<T>::HrmpSystemChannelOpened {
451+
sender: sender_id,
452+
recipient: recipient_id,
453+
proposed_max_capacity: capacity,
454+
proposed_max_message_size: message_size,
455+
}
456+
.into(),
440457
);
441458
}
442459

@@ -478,7 +495,8 @@ mod benchmarks {
478495
_(frame_system::RawOrigin::Signed(caller), sender_id, recipient_id);
479496

480497
assert_last_event::<T>(
481-
Event::<T>::OpenChannelDepositsUpdated(sender_id, recipient_id).into(),
498+
Event::<T>::OpenChannelDepositsUpdated { sender: sender_id, recipient: recipient_id }
499+
.into(),
482500
);
483501
let channel = HrmpChannels::<T>::get(&channel_id).unwrap();
484502
// Check that the deposit was updated in the channel state.

0 commit comments

Comments
 (0)