@@ -2724,3 +2724,69 @@ fn test_migrate_reset_unactive_sn_idempotence() {
27242724 assert_eq ! ( TotalIssuance :: <Test >:: get( ) , total_issuance_before) ;
27252725 } ) ;
27262726}
2727+
2728+ #[ test]
2729+ fn test_migrate_remove_unknown_neuron_axon_cert_prom ( ) {
2730+ use crate :: migrations:: migrate_remove_unknown_neuron_axon_cert_prom:: * ;
2731+ const MIGRATION_NAME : & [ u8 ] = b"migrate_remove_neuron_axon_cert_prom" ;
2732+
2733+ new_test_ext ( 1 ) . execute_with ( || {
2734+ setup_for ( NetUid :: from ( 2 ) , 64 , 1231 ) ;
2735+ setup_for ( NetUid :: from ( 42 ) , 256 , 15151 ) ;
2736+ setup_for ( NetUid :: from ( 99 ) , 1024 , 32323 ) ;
2737+ assert ! ( !HasMigrationRun :: <Test >:: get( MIGRATION_NAME ) ) ;
2738+
2739+ let w = migrate_remove_unknown_neuron_axon_cert_prom :: < Test > ( ) ;
2740+ assert ! ( !w. is_zero( ) , "Weight must be non-zero" ) ;
2741+
2742+ assert ! ( HasMigrationRun :: <Test >:: get( MIGRATION_NAME ) ) ;
2743+ assert_for ( NetUid :: from ( 2 ) , 64 , 1231 ) ;
2744+ assert_for ( NetUid :: from ( 42 ) , 256 , 15151 ) ;
2745+ assert_for ( NetUid :: from ( 99 ) , 1024 , 32323 ) ;
2746+ } ) ;
2747+
2748+ fn setup_for ( netuid : NetUid , uids : u32 , items : u32 ) {
2749+ NetworksAdded :: < Test > :: insert ( netuid, true ) ;
2750+
2751+ for i in 1u32 ..=uids {
2752+ let hk = U256 :: from ( netuid. inner ( ) as u32 * 1000 + i) ;
2753+ Uids :: < Test > :: insert ( netuid, hk, i as u16 ) ;
2754+ }
2755+
2756+ for i in 1u32 ..=items {
2757+ let hk = U256 :: from ( netuid. inner ( ) as u32 * 1000 + i) ;
2758+ Axons :: < Test > :: insert ( netuid, hk, AxonInfo :: default ( ) ) ;
2759+ NeuronCertificates :: < Test > :: insert ( netuid, hk, NeuronCertificate :: default ( ) ) ;
2760+ Prometheus :: < Test > :: insert ( netuid, hk, PrometheusInfo :: default ( ) ) ;
2761+ }
2762+ }
2763+
2764+ fn assert_for ( netuid : NetUid , uids : u32 , items : u32 ) {
2765+ assert_eq ! (
2766+ Axons :: <Test >:: iter_key_prefix( netuid) . count( ) ,
2767+ uids as usize
2768+ ) ;
2769+ assert_eq ! (
2770+ NeuronCertificates :: <Test >:: iter_key_prefix( netuid) . count( ) ,
2771+ uids as usize
2772+ ) ;
2773+ assert_eq ! (
2774+ Prometheus :: <Test >:: iter_key_prefix( netuid) . count( ) ,
2775+ uids as usize
2776+ ) ;
2777+
2778+ for i in 1u32 ..=uids {
2779+ let hk = U256 :: from ( netuid. inner ( ) as u32 * 1000 + i) ;
2780+ assert ! ( Axons :: <Test >:: contains_key( netuid, hk) ) ;
2781+ assert ! ( NeuronCertificates :: <Test >:: contains_key( netuid, hk) ) ;
2782+ assert ! ( Prometheus :: <Test >:: contains_key( netuid, hk) ) ;
2783+ }
2784+
2785+ for i in uids + 1u32 ..=items {
2786+ let hk = U256 :: from ( netuid. inner ( ) as u32 * 1000 + i) ;
2787+ assert ! ( !Axons :: <Test >:: contains_key( netuid, hk) ) ;
2788+ assert ! ( !NeuronCertificates :: <Test >:: contains_key( netuid, hk) ) ;
2789+ assert ! ( !Prometheus :: <Test >:: contains_key( netuid, hk) ) ;
2790+ }
2791+ }
2792+ }
0 commit comments