@@ -188,5 +188,78 @@ mod benches {
188188 }
189189 }
190190
191+ /// Worst-case `store_encrypted`: queue is nearly full (count = limit - 1),
192+ /// max-size encrypted call data (8192 bytes).
193+ #[ benchmark( extra) ]
194+ fn store_encrypted ( ) {
195+ let who: T :: AccountId = whitelisted_caller ( ) ;
196+
197+ // Fill queue to just under the limit for worst-case read path.
198+ let limit = MaxPendingExtrinsicsLimit :: < T > :: get ( ) ;
199+ let dummy = PendingExtrinsic :: < T > {
200+ who : who. clone ( ) ,
201+ encrypted_call : BoundedVec :: truncate_from ( vec ! [ 0x00 ; 1 ] ) ,
202+ submitted_at : 0u32 . into ( ) ,
203+ } ;
204+ for i in 0 ..limit. saturating_sub ( 1 ) {
205+ PendingExtrinsics :: < T > :: insert ( i, dummy. clone ( ) ) ;
206+ }
207+ NextPendingExtrinsicIndex :: < T > :: put ( limit. saturating_sub ( 1 ) ) ;
208+
209+ let encrypted_call: BoundedVec < u8 , MaxEncryptedCallSize > =
210+ BoundedVec :: truncate_from ( vec ! [ 0xAB ; 8192 ] ) ;
211+
212+ #[ extrinsic_call]
213+ store_encrypted ( RawOrigin :: Signed ( who. clone ( ) ) , encrypted_call) ;
214+
215+ assert_eq ! ( PendingExtrinsics :: <T >:: count( ) , limit) ;
216+ }
217+
218+ /// Benchmark `set_max_pending_extrinsics_number`: root origin, single storage write.
219+ #[ benchmark]
220+ fn set_max_pending_extrinsics_number ( ) {
221+ let value: u32 = 500 ;
222+
223+ #[ extrinsic_call]
224+ set_max_pending_extrinsics_number ( RawOrigin :: Root , value) ;
225+
226+ assert_eq ! ( MaxPendingExtrinsicsLimit :: <T >:: get( ) , value) ;
227+ }
228+
229+ /// Benchmark `set_on_initialize_weight`: root origin, single storage write.
230+ /// Uses the maximum allowed value for worst-case.
231+ #[ benchmark]
232+ fn set_on_initialize_weight ( ) {
233+ let value: u64 = MAX_ON_INITIALIZE_WEIGHT ;
234+
235+ #[ extrinsic_call]
236+ set_on_initialize_weight ( RawOrigin :: Root , value) ;
237+
238+ assert_eq ! ( OnInitializeWeight :: <T >:: get( ) , value) ;
239+ }
240+
241+ /// Benchmark `set_stored_extrinsic_lifetime`: root origin, single storage write.
242+ #[ benchmark]
243+ fn set_stored_extrinsic_lifetime ( ) {
244+ let value: u32 = 100 ;
245+
246+ #[ extrinsic_call]
247+ set_stored_extrinsic_lifetime ( RawOrigin :: Root , value) ;
248+
249+ assert_eq ! ( ExtrinsicLifetime :: <T >:: get( ) , value) ;
250+ }
251+
252+ /// Benchmark `set_max_extrinsic_weight`: root origin, single storage write.
253+ /// Uses the maximum allowed value for worst-case.
254+ #[ benchmark]
255+ fn set_max_extrinsic_weight ( ) {
256+ let value: u64 = MAX_ON_INITIALIZE_WEIGHT ;
257+
258+ #[ extrinsic_call]
259+ set_max_extrinsic_weight ( RawOrigin :: Root , value) ;
260+
261+ assert_eq ! ( MaxExtrinsicWeight :: <T >:: get( ) , value) ;
262+ }
263+
191264 impl_benchmark_test_suite ! ( Pallet , crate :: mock:: new_test_ext( ) , crate :: mock:: Test ) ;
192265}
0 commit comments