@@ -64,7 +64,10 @@ mod tests {
6464 ExecutionState , ExportedFunctions , NumWasmPages ,
6565 execution_state:: { CustomSection , CustomSectionType , WasmBinary , WasmMetadata } ,
6666 } ,
67- metadata_state:: { ApiBoundaryNodeEntry , SubnetTopology , testing:: NetworkTopologyTesting } ,
67+ metadata_state:: {
68+ ApiBoundaryNodeEntry , SubnetTopology ,
69+ testing:: { NetworkTopologyTesting , SystemMetadataTesting } ,
70+ } ,
6871 page_map:: PageMap ,
6972 testing:: { ReplicatedStateTesting , StreamTesting } ,
7073 } ;
@@ -766,55 +769,57 @@ mod tests {
766769 fn test_traverse_subnet ( ) {
767770 let mut state = ReplicatedState :: new ( subnet_test_id ( 1 ) , SubnetType :: Application ) ;
768771
769- state. metadata . network_topology . set_subnets ( btreemap ! {
770- // For test coverage, this test adds one subnet for each subnet type
771- subnet_test_id( 0 ) => SubnetTopology {
772- public_key: vec![ 1 , 2 , 3 , 4 ] ,
773- nodes: BTreeSet :: new( ) ,
774- subnet_type: SubnetType :: Application ,
775- subnet_features: SubnetFeatures :: default ( ) ,
776- chain_keys_held: BTreeSet :: new( ) ,
777- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
778- subnet_admins: BTreeSet :: new( ) ,
779- } ,
780- subnet_test_id( 1 ) => SubnetTopology {
781- public_key: vec![ 5 , 6 , 7 , 8 ] ,
782- nodes: BTreeSet :: new( ) ,
783- subnet_type: SubnetType :: System ,
784- subnet_features: SubnetFeatures :: default ( ) ,
785- chain_keys_held: BTreeSet :: new( ) ,
786- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
787- subnet_admins: BTreeSet :: new( ) ,
788- } ,
789- subnet_test_id( 2 ) => SubnetTopology {
790- public_key: vec![ 9 , 10 , 11 , 12 ] ,
791- nodes: BTreeSet :: new( ) ,
792- subnet_type: SubnetType :: VerifiedApplication ,
793- subnet_features: SubnetFeatures :: default ( ) ,
794- chain_keys_held: BTreeSet :: new( ) ,
795- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
796- subnet_admins: BTreeSet :: new( ) ,
797- } ,
798- subnet_test_id( 3 ) => SubnetTopology {
799- public_key: vec![ 13 , 14 , 15 , 16 ] ,
800- nodes: BTreeSet :: new( ) ,
801- subnet_type: SubnetType :: CloudEngine ,
802- subnet_features: SubnetFeatures :: default ( ) ,
803- chain_keys_held: BTreeSet :: new( ) ,
804- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
805- subnet_admins: BTreeSet :: new( ) ,
806- }
772+ state. metadata . modify_network_topology ( |network_topology| {
773+ network_topology. set_subnets ( btreemap ! {
774+ // For test coverage, this test adds one subnet for each subnet type
775+ subnet_test_id( 0 ) => SubnetTopology {
776+ public_key: vec![ 1 , 2 , 3 , 4 ] ,
777+ nodes: BTreeSet :: new( ) ,
778+ subnet_type: SubnetType :: Application ,
779+ subnet_features: SubnetFeatures :: default ( ) ,
780+ chain_keys_held: BTreeSet :: new( ) ,
781+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
782+ subnet_admins: BTreeSet :: new( ) ,
783+ } ,
784+ subnet_test_id( 1 ) => SubnetTopology {
785+ public_key: vec![ 5 , 6 , 7 , 8 ] ,
786+ nodes: BTreeSet :: new( ) ,
787+ subnet_type: SubnetType :: System ,
788+ subnet_features: SubnetFeatures :: default ( ) ,
789+ chain_keys_held: BTreeSet :: new( ) ,
790+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
791+ subnet_admins: BTreeSet :: new( ) ,
792+ } ,
793+ subnet_test_id( 2 ) => SubnetTopology {
794+ public_key: vec![ 9 , 10 , 11 , 12 ] ,
795+ nodes: BTreeSet :: new( ) ,
796+ subnet_type: SubnetType :: VerifiedApplication ,
797+ subnet_features: SubnetFeatures :: default ( ) ,
798+ chain_keys_held: BTreeSet :: new( ) ,
799+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
800+ subnet_admins: BTreeSet :: new( ) ,
801+ } ,
802+ subnet_test_id( 3 ) => SubnetTopology {
803+ public_key: vec![ 13 , 14 , 15 , 16 ] ,
804+ nodes: BTreeSet :: new( ) ,
805+ subnet_type: SubnetType :: CloudEngine ,
806+ subnet_features: SubnetFeatures :: default ( ) ,
807+ chain_keys_held: BTreeSet :: new( ) ,
808+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
809+ subnet_admins: BTreeSet :: new( ) ,
810+ }
811+ } ) ;
812+ network_topology. set_routing_table (
813+ RoutingTable :: try_from ( btreemap ! {
814+ id_range( 0 , 10 ) => subnet_test_id( 0 ) ,
815+ id_range( 11 , 20 ) => subnet_test_id( 1 ) ,
816+ id_range( 21 , 30 ) => subnet_test_id( 0 ) ,
817+ id_range( 31 , 40 ) => subnet_test_id( 2 ) ,
818+ id_range( 41 , 50 ) => subnet_test_id( 3 ) ,
819+ } )
820+ . unwrap ( ) ,
821+ ) ;
807822 } ) ;
808- state. metadata . network_topology . set_routing_table (
809- RoutingTable :: try_from ( btreemap ! {
810- id_range( 0 , 10 ) => subnet_test_id( 0 ) ,
811- id_range( 11 , 20 ) => subnet_test_id( 1 ) ,
812- id_range( 21 , 30 ) => subnet_test_id( 0 ) ,
813- id_range( 31 , 40 ) => subnet_test_id( 2 ) ,
814- id_range( 41 , 50 ) => subnet_test_id( 3 ) ,
815- } )
816- . unwrap ( ) ,
817- ) ;
818823 state. metadata . node_public_keys = btreemap ! {
819824 node_test_id( 2 ) => vec![ 9 , 10 , 11 , 12 ] ,
820825 } ;
@@ -1032,38 +1037,40 @@ mod tests {
10321037 fn test_traverse_large_or_empty_routing_table ( ) {
10331038 let mut state = ReplicatedState :: new ( subnet_test_id ( 1 ) , SubnetType :: Application ) ;
10341039
1035- state. metadata . network_topology . set_subnets ( btreemap ! {
1036- subnet_test_id( 0 ) => SubnetTopology {
1037- public_key: vec![ 1 , 2 , 3 , 4 ] ,
1038- nodes: BTreeSet :: new( ) ,
1039- subnet_type: SubnetType :: Application ,
1040- subnet_features: SubnetFeatures :: default ( ) ,
1041- chain_keys_held: BTreeSet :: new( ) ,
1042- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
1043- subnet_admins: BTreeSet :: new( ) ,
1044- } ,
1045- subnet_test_id( 1 ) => SubnetTopology {
1046- public_key: vec![ 5 , 6 , 7 , 8 ] ,
1047- nodes: BTreeSet :: new( ) ,
1048- subnet_type: SubnetType :: VerifiedApplication ,
1049- subnet_features: SubnetFeatures :: default ( ) ,
1050- chain_keys_held: BTreeSet :: new( ) ,
1051- cost_schedule: CanisterCyclesCostSchedule :: Normal ,
1052- subnet_admins: BTreeSet :: new( ) ,
1053- }
1040+ state. metadata . modify_network_topology ( |network_topology| {
1041+ network_topology. set_subnets ( btreemap ! {
1042+ subnet_test_id( 0 ) => SubnetTopology {
1043+ public_key: vec![ 1 , 2 , 3 , 4 ] ,
1044+ nodes: BTreeSet :: new( ) ,
1045+ subnet_type: SubnetType :: Application ,
1046+ subnet_features: SubnetFeatures :: default ( ) ,
1047+ chain_keys_held: BTreeSet :: new( ) ,
1048+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
1049+ subnet_admins: BTreeSet :: new( ) ,
1050+ } ,
1051+ subnet_test_id( 1 ) => SubnetTopology {
1052+ public_key: vec![ 5 , 6 , 7 , 8 ] ,
1053+ nodes: BTreeSet :: new( ) ,
1054+ subnet_type: SubnetType :: VerifiedApplication ,
1055+ subnet_features: SubnetFeatures :: default ( ) ,
1056+ chain_keys_held: BTreeSet :: new( ) ,
1057+ cost_schedule: CanisterCyclesCostSchedule :: Normal ,
1058+ subnet_admins: BTreeSet :: new( ) ,
1059+ }
1060+ } ) ;
1061+ network_topology. set_routing_table (
1062+ RoutingTable :: try_from ( btreemap ! {
1063+ id_range( 0 , 10 ) => subnet_test_id( 0 ) ,
1064+ id_range( 21 , 30 ) => subnet_test_id( 0 ) ,
1065+ id_range( 36 , 40 ) => subnet_test_id( 0 ) ,
1066+ id_range( 51 , 51 ) => subnet_test_id( 0 ) ,
1067+ id_range( 61 , 70 ) => subnet_test_id( 0 ) ,
1068+ id_range( 81 , 90 ) => subnet_test_id( 0 ) ,
1069+ id_range( 105 , 110 ) => subnet_test_id( 0 ) ,
1070+ } )
1071+ . unwrap ( ) ,
1072+ ) ;
10541073 } ) ;
1055- state. metadata . network_topology . set_routing_table (
1056- RoutingTable :: try_from ( btreemap ! {
1057- id_range( 0 , 10 ) => subnet_test_id( 0 ) ,
1058- id_range( 21 , 30 ) => subnet_test_id( 0 ) ,
1059- id_range( 36 , 40 ) => subnet_test_id( 0 ) ,
1060- id_range( 51 , 51 ) => subnet_test_id( 0 ) ,
1061- id_range( 61 , 70 ) => subnet_test_id( 0 ) ,
1062- id_range( 81 , 90 ) => subnet_test_id( 0 ) ,
1063- id_range( 105 , 110 ) => subnet_test_id( 0 ) ,
1064- } )
1065- . unwrap ( ) ,
1066- ) ;
10671074
10681075 let height = 0 ;
10691076
0 commit comments