1
1
#![ allow( clippy:: unwrap_used) ]
2
2
3
3
mod mock;
4
- use frame_support:: assert_ok;
4
+ use frame_support:: { assert_ok, weights :: Weight } ;
5
5
use frame_system:: Config ;
6
6
use mock:: * ;
7
7
use pallet_subtensor:: * ;
@@ -278,17 +278,25 @@ fn test_migration_delete_subnet_21() {
278
278
} )
279
279
}
280
280
281
+ // SKIP_WASM_BUILD=1 RUST_LOG=info cargo test --test migration -- test_migrate_fix_total_coldkey_stake --exact --nocapture
281
282
// SKIP_WASM_BUILD=1 RUST_LOG=info cargo test --test migration -- test_migrate_fix_total_coldkey_stake --exact --nocapture
282
283
#[ test]
283
284
fn test_migrate_fix_total_coldkey_stake ( ) {
284
285
new_test_ext ( 1 ) . execute_with ( || {
286
+ let migration_name = "fix_total_coldkey_stake_v7" ;
285
287
let coldkey = U256 :: from ( 0 ) ;
286
288
TotalColdkeyStake :: < Test > :: insert ( coldkey, 0 ) ;
287
289
StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
288
290
Stake :: < Test > :: insert ( U256 :: from ( 1 ) , U256 :: from ( 0 ) , 10000 ) ;
289
291
Stake :: < Test > :: insert ( U256 :: from ( 2 ) , U256 :: from ( 0 ) , 10000 ) ;
290
292
Stake :: < Test > :: insert ( U256 :: from ( 3 ) , U256 :: from ( 0 ) , 10000 ) ;
291
- pallet_subtensor:: migration:: do_migrate_fix_total_coldkey_stake :: < Test > ( ) ;
293
+
294
+ let weight = run_migration_and_check ( migration_name) ;
295
+ assert ! ( weight != Weight :: zero( ) ) ;
296
+ assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
297
+
298
+ let second_weight = run_migration_and_check ( migration_name) ;
299
+ assert_eq ! ( second_weight, Weight :: zero( ) ) ;
292
300
assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
293
301
} )
294
302
}
@@ -297,13 +305,16 @@ fn test_migrate_fix_total_coldkey_stake() {
297
305
#[ test]
298
306
fn test_migrate_fix_total_coldkey_stake_value_already_in_total ( ) {
299
307
new_test_ext ( 1 ) . execute_with ( || {
308
+ let migration_name = "fix_total_coldkey_stake_v7" ;
300
309
let coldkey = U256 :: from ( 0 ) ;
301
310
TotalColdkeyStake :: < Test > :: insert ( coldkey, 100000000 ) ;
302
311
StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
303
312
Stake :: < Test > :: insert ( U256 :: from ( 1 ) , U256 :: from ( 0 ) , 10000 ) ;
304
313
Stake :: < Test > :: insert ( U256 :: from ( 2 ) , U256 :: from ( 0 ) , 10000 ) ;
305
314
Stake :: < Test > :: insert ( U256 :: from ( 3 ) , U256 :: from ( 0 ) , 10000 ) ;
306
- pallet_subtensor:: migration:: do_migrate_fix_total_coldkey_stake :: < Test > ( ) ;
315
+
316
+ let weight = run_migration_and_check ( migration_name) ;
317
+ assert ! ( weight != Weight :: zero( ) ) ;
307
318
assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
308
319
} )
309
320
}
@@ -312,12 +323,15 @@ fn test_migrate_fix_total_coldkey_stake_value_already_in_total() {
312
323
#[ test]
313
324
fn test_migrate_fix_total_coldkey_stake_no_entry ( ) {
314
325
new_test_ext ( 1 ) . execute_with ( || {
326
+ let migration_name = "fix_total_coldkey_stake_v7" ;
315
327
let coldkey = U256 :: from ( 0 ) ;
316
328
StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
317
329
Stake :: < Test > :: insert ( U256 :: from ( 1 ) , U256 :: from ( 0 ) , 10000 ) ;
318
330
Stake :: < Test > :: insert ( U256 :: from ( 2 ) , U256 :: from ( 0 ) , 10000 ) ;
319
331
Stake :: < Test > :: insert ( U256 :: from ( 3 ) , U256 :: from ( 0 ) , 10000 ) ;
320
- pallet_subtensor:: migration:: do_migrate_fix_total_coldkey_stake :: < Test > ( ) ;
332
+
333
+ let weight = run_migration_and_check ( migration_name) ;
334
+ assert ! ( weight != Weight :: zero( ) ) ;
321
335
assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
322
336
} )
323
337
}
@@ -326,10 +340,13 @@ fn test_migrate_fix_total_coldkey_stake_no_entry() {
326
340
#[ test]
327
341
fn test_migrate_fix_total_coldkey_stake_no_entry_in_hotkeys ( ) {
328
342
new_test_ext ( 1 ) . execute_with ( || {
343
+ let migration_name = "fix_total_coldkey_stake_v7" ;
329
344
let coldkey = U256 :: from ( 0 ) ;
330
345
TotalColdkeyStake :: < Test > :: insert ( coldkey, 100000000 ) ;
331
346
StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
332
- pallet_subtensor:: migration:: do_migrate_fix_total_coldkey_stake :: < Test > ( ) ;
347
+
348
+ let weight = run_migration_and_check ( migration_name) ;
349
+ assert ! ( weight != Weight :: zero( ) ) ;
333
350
assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 0 ) ;
334
351
} )
335
352
}
@@ -338,12 +355,53 @@ fn test_migrate_fix_total_coldkey_stake_no_entry_in_hotkeys() {
338
355
#[ test]
339
356
fn test_migrate_fix_total_coldkey_stake_one_hotkey_stake_missing ( ) {
340
357
new_test_ext ( 1 ) . execute_with ( || {
358
+ let migration_name = "fix_total_coldkey_stake_v7" ;
341
359
let coldkey = U256 :: from ( 0 ) ;
342
360
TotalColdkeyStake :: < Test > :: insert ( coldkey, 100000000 ) ;
343
361
StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
344
362
Stake :: < Test > :: insert ( U256 :: from ( 1 ) , U256 :: from ( 0 ) , 10000 ) ;
345
363
Stake :: < Test > :: insert ( U256 :: from ( 2 ) , U256 :: from ( 0 ) , 10000 ) ;
346
- pallet_subtensor:: migration:: do_migrate_fix_total_coldkey_stake :: < Test > ( ) ;
364
+
365
+ let weight = run_migration_and_check ( migration_name) ;
366
+ assert ! ( weight != Weight :: zero( ) ) ;
347
367
assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 20000 ) ;
348
368
} )
349
369
}
370
+
371
+ // New test to check if migration runs only once
372
+ #[ test]
373
+ fn test_migrate_fix_total_coldkey_stake_runs_once ( ) {
374
+ new_test_ext ( 1 ) . execute_with ( || {
375
+ let migration_name = "fix_total_coldkey_stake_v7" ;
376
+ let coldkey = U256 :: from ( 0 ) ;
377
+ TotalColdkeyStake :: < Test > :: insert ( coldkey, 0 ) ;
378
+ StakingHotkeys :: < Test > :: insert ( coldkey, vec ! [ U256 :: from( 1 ) , U256 :: from( 2 ) , U256 :: from( 3 ) ] ) ;
379
+ Stake :: < Test > :: insert ( U256 :: from ( 1 ) , U256 :: from ( 0 ) , 10000 ) ;
380
+ Stake :: < Test > :: insert ( U256 :: from ( 2 ) , U256 :: from ( 0 ) , 10000 ) ;
381
+ Stake :: < Test > :: insert ( U256 :: from ( 3 ) , U256 :: from ( 0 ) , 10000 ) ;
382
+
383
+ // First run
384
+ let first_weight = run_migration_and_check ( migration_name) ;
385
+ assert ! ( first_weight != Weight :: zero( ) ) ;
386
+ assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
387
+
388
+ // Second run
389
+ let second_weight = run_migration_and_check ( migration_name) ;
390
+ assert_eq ! ( second_weight, Weight :: zero( ) ) ;
391
+ assert_eq ! ( TotalColdkeyStake :: <Test >:: get( coldkey) , 30000 ) ;
392
+ } )
393
+ }
394
+
395
+ fn run_migration_and_check ( migration_name : & ' static str ) -> frame_support:: weights:: Weight {
396
+ // Execute the migration and store its weight
397
+ let weight: frame_support:: weights:: Weight =
398
+ pallet_subtensor:: migration:: migrate_fix_total_coldkey_stake :: < Test > ( ) ;
399
+
400
+ // Check if the migration has been marked as completed
401
+ assert ! ( HasMigrationRun :: <Test >:: get(
402
+ migration_name. as_bytes( ) . to_vec( )
403
+ ) ) ;
404
+
405
+ // Return the weight of the executed migration
406
+ weight
407
+ }
0 commit comments