Browse Source

Introduce support for the new working groups

iorveth 4 years ago
parent
commit
a1b7aaaa20

+ 20 - 6
node/src/chain_spec/mod.rs

@@ -30,12 +30,12 @@ use sp_runtime::Perbill;
 
 
 use node_runtime::{
 use node_runtime::{
     membership, AuthorityDiscoveryConfig, BabeConfig, Balance, BalancesConfig,
     membership, AuthorityDiscoveryConfig, BabeConfig, Balance, BalancesConfig,
-    ContentDirectoryConfig, ContentDirectoryWorkingGroupConfig, CouncilConfig,
-    CouncilElectionConfig, DataDirectoryConfig, DataObjectStorageRegistryConfig,
-    DataObjectTypeRegistryConfig, ElectionParameters, ForumConfig, GrandpaConfig, ImOnlineConfig,
-    MembersConfig, Moment, ProposalsCodexConfig, SessionConfig, SessionKeys, Signature,
-    StakerStatus, StakingConfig, StorageWorkingGroupConfig, SudoConfig, SystemConfig, DAYS,
-    WASM_BINARY,
+    BuilderWorkingGroupConfig, ContentDirectoryConfig, ContentDirectoryWorkingGroupConfig,
+    CouncilConfig, CouncilElectionConfig, DataDirectoryConfig, DataObjectStorageRegistryConfig,
+    DataObjectTypeRegistryConfig, ElectionParameters, ForumConfig, GatewayWorkingGroupConfig,
+    GrandpaConfig, ImOnlineConfig, MembersConfig, Moment, ProposalsCodexConfig, SessionConfig,
+    SessionKeys, Signature, StakerStatus, StakingConfig, StorageWorkingGroupConfig, SudoConfig,
+    SystemConfig, DAYS, WASM_BINARY,
 };
 };
 
 
 // Exported to be used by chain-spec-builder
 // Exported to be used by chain-spec-builder
@@ -319,6 +319,20 @@ pub fn testnet_genesis(
             worker_application_human_readable_text_constraint: default_text_constraint,
             worker_application_human_readable_text_constraint: default_text_constraint,
             worker_exit_rationale_text_constraint: default_text_constraint,
             worker_exit_rationale_text_constraint: default_text_constraint,
         }),
         }),
+        working_group_Instance4: Some(BuilderWorkingGroupConfig {
+            phantom: Default::default(),
+            working_group_mint_capacity: 0,
+            opening_human_readable_text_constraint: default_text_constraint,
+            worker_application_human_readable_text_constraint: default_text_constraint,
+            worker_exit_rationale_text_constraint: default_text_constraint,
+        }),
+        working_group_Instance5: Some(GatewayWorkingGroupConfig {
+            phantom: Default::default(),
+            working_group_mint_capacity: 0,
+            opening_human_readable_text_constraint: default_text_constraint,
+            worker_application_human_readable_text_constraint: default_text_constraint,
+            worker_exit_rationale_text_constraint: default_text_constraint,
+        }),
         content_directory: Some({
         content_directory: Some({
             ContentDirectoryConfig {
             ContentDirectoryConfig {
                 class_by_id: vec![],
                 class_by_id: vec![],

+ 2 - 2
runtime-modules/common/src/working_group.rs

@@ -18,6 +18,6 @@ pub enum WorkingGroup {
     Content,
     Content,
     /// Builder working group: working_group::Instance4.
     /// Builder working group: working_group::Instance4.
     Builder,
     Builder,
-    /// Gateway working group: working_group::Instance4.
-    Gateway
+    /// Gateway working group: working_group::Instance5.
+    Gateway,
 }
 }

+ 1 - 1
runtime-modules/storage/src/tests/data_directory.rs

@@ -203,4 +203,4 @@ fn reject_content_as_liaison() {
         );
         );
         assert_eq!(res, Ok(()));
         assert_eq!(res, Ok(()));
     });
     });
-}
+}

+ 2 - 0
runtime/src/integration/proposals/proposal_encoder.rs

@@ -22,6 +22,8 @@ macro_rules! wrap_working_group_call {
                 Call::ContentDirectoryWorkingGroup($working_group_instance_call)
                 Call::ContentDirectoryWorkingGroup($working_group_instance_call)
             }
             }
             WorkingGroup::Storage => Call::StorageWorkingGroup($working_group_instance_call),
             WorkingGroup::Storage => Call::StorageWorkingGroup($working_group_instance_call),
+            WorkingGroup::Builder => Call::BuilderWorkingGroup($working_group_instance_call),
+            WorkingGroup::Gateway => Call::GatewayWorkingGroup($working_group_instance_call),
         }
         }
     }};
     }};
 }
 }

+ 18 - 0
runtime/src/lib.rs

@@ -522,6 +522,12 @@ pub type StorageWorkingGroupInstance = working_group::Instance2;
 // The content directory working group instance alias.
 // The content directory working group instance alias.
 pub type ContentDirectoryWorkingGroupInstance = working_group::Instance3;
 pub type ContentDirectoryWorkingGroupInstance = working_group::Instance3;
 
 
+// The builder working group instance alias.
+pub type BuilderWorkingGroupInstance = working_group::Instance4;
+
+// The gateway working group instance alias.
+pub type GatewayWorkingGroupInstance = working_group::Instance5;
+
 parameter_types! {
 parameter_types! {
     pub const MaxWorkerNumberLimit: u32 = 100;
     pub const MaxWorkerNumberLimit: u32 = 100;
 }
 }
@@ -536,6 +542,16 @@ impl working_group::Trait<ContentDirectoryWorkingGroupInstance> for Runtime {
     type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
     type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
 }
 }
 
 
+impl working_group::Trait<BuilderWorkingGroupInstance> for Runtime {
+    type Event = Event;
+    type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
+}
+
+impl working_group::Trait<GatewayWorkingGroupInstance> for Runtime {
+    type Event = Event;
+    type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
+}
+
 impl service_discovery::Trait for Runtime {
 impl service_discovery::Trait for Runtime {
     type Event = Event;
     type Event = Event;
 }
 }
@@ -670,5 +686,7 @@ construct_runtime!(
         // reserved for the future use: ForumWorkingGroup: working_group::<Instance1>::{Module, Call, Storage, Event<T>},
         // reserved for the future use: ForumWorkingGroup: working_group::<Instance1>::{Module, Call, Storage, Event<T>},
         StorageWorkingGroup: working_group::<Instance2>::{Module, Call, Storage, Config<T>, Event<T>},
         StorageWorkingGroup: working_group::<Instance2>::{Module, Call, Storage, Config<T>, Event<T>},
         ContentDirectoryWorkingGroup: working_group::<Instance3>::{Module, Call, Storage, Config<T>, Event<T>},
         ContentDirectoryWorkingGroup: working_group::<Instance3>::{Module, Call, Storage, Config<T>, Event<T>},
+        BuilderWorkingGroup: working_group::<Instance4>::{Module, Call, Storage, Config<T>, Event<T>},
+        GatewayWorkingGroup: working_group::<Instance5>::{Module, Call, Storage, Config<T>, Event<T>},
     }
     }
 );
 );

+ 121 - 2
runtime/src/tests/proposals_integration/working_group_proposals.rs

@@ -11,8 +11,9 @@ use proposals_codex::AddOpeningParameters;
 use working_group::{OpeningPolicyCommitment, RewardPolicy};
 use working_group::{OpeningPolicyCommitment, RewardPolicy};
 
 
 use crate::{
 use crate::{
-    Balance, BlockNumber, ContentDirectoryWorkingGroup, ContentDirectoryWorkingGroupInstance,
-    StorageWorkingGroup, StorageWorkingGroupInstance,
+    Balance, BlockNumber, BuilderWorkingGroup, BuilderWorkingGroupInstance,
+    ContentDirectoryWorkingGroup, ContentDirectoryWorkingGroupInstance, GatewayWorkingGroup,
+    GatewayWorkingGroupInstance, StorageWorkingGroup, StorageWorkingGroupInstance,
 };
 };
 use sp_std::collections::btree_set::BTreeSet;
 use sp_std::collections::btree_set::BTreeSet;
 
 
@@ -52,6 +53,22 @@ fn add_opening(
             >>::contains_key(opening_id));
             >>::contains_key(opening_id));
             opening_id
             opening_id
         }
         }
+        WorkingGroup::Builder => {
+            let opening_id = BuilderWorkingGroup::next_opening_id();
+            assert!(!<working_group::OpeningById<
+                Runtime,
+                BuilderWorkingGroupInstance,
+            >>::contains_key(opening_id));
+            opening_id
+        }
+        WorkingGroup::Gateway => {
+            let opening_id = GatewayWorkingGroup::next_opening_id();
+            assert!(!<working_group::OpeningById<
+                Runtime,
+                GatewayWorkingGroupInstance,
+            >>::contains_key(opening_id));
+            opening_id
+        }
     };
     };
 
 
     let codex_extrinsic_test_fixture = CodexProposalTestFixture::default_for_call(|| {
     let codex_extrinsic_test_fixture = CodexProposalTestFixture::default_for_call(|| {
@@ -330,6 +347,18 @@ fn create_add_working_group_leader_opening_proposal_execution_succeeds() {
                     StorageWorkingGroupInstance,
                     StorageWorkingGroupInstance,
                 >(group);
                 >(group);
             }
             }
+            WorkingGroup::Builder => {
+                run_create_add_working_group_leader_opening_proposal_execution_succeeds::<
+                    Runtime,
+                    BuilderWorkingGroupInstance,
+                >(group);
+            }
+            WorkingGroup::Gateway => {
+                run_create_add_working_group_leader_opening_proposal_execution_succeeds::<
+                    Runtime,
+                    GatewayWorkingGroupInstance,
+                >(group);
+            }
         }
         }
     }
     }
 }
 }
@@ -388,6 +417,18 @@ fn create_begin_review_working_group_leader_applications_proposal_execution_succ
                 StorageWorkingGroupInstance,
                 StorageWorkingGroupInstance,
             >(group);
             >(group);
             }
             }
+            WorkingGroup::Builder => {
+                run_create_begin_review_working_group_leader_applications_proposal_execution_succeeds::<
+                Runtime,
+                BuilderWorkingGroupInstance,
+            >(group);
+            }
+            WorkingGroup::Gateway => {
+                run_create_begin_review_working_group_leader_applications_proposal_execution_succeeds::<
+                Runtime,
+                GatewayWorkingGroupInstance,
+            >(group);
+            }
         }
         }
     }
     }
 }
 }
@@ -468,6 +509,18 @@ fn create_fill_working_group_leader_opening_proposal_execution_succeeds() {
                     StorageWorkingGroupInstance,
                     StorageWorkingGroupInstance,
                 >(group);
                 >(group);
             }
             }
+            WorkingGroup::Builder => {
+                run_create_fill_working_group_leader_opening_proposal_execution_succeeds::<
+                    Runtime,
+                    BuilderWorkingGroupInstance,
+                >(group);
+            }
+            WorkingGroup::Gateway => {
+                run_create_fill_working_group_leader_opening_proposal_execution_succeeds::<
+                    Runtime,
+                    GatewayWorkingGroupInstance,
+                >(group);
+            }
         }
         }
     }
     }
 
 
@@ -545,6 +598,18 @@ fn create_fill_working_group_leader_opening_proposal_execution_succeeds() {
                         StorageWorkingGroupInstance,
                         StorageWorkingGroupInstance,
                     >(group);
                     >(group);
                 }
                 }
+                WorkingGroup::Builder => {
+                    run_create_decrease_group_leader_stake_proposal_execution_succeeds::<
+                        Runtime,
+                        BuilderWorkingGroupInstance,
+                    >(group);
+                }
+                WorkingGroup::Gateway => {
+                    run_create_decrease_group_leader_stake_proposal_execution_succeeds::<
+                        Runtime,
+                        GatewayWorkingGroupInstance,
+                    >(group);
+                }
             }
             }
         }
         }
     }
     }
@@ -661,6 +726,18 @@ fn run_create_decrease_group_leader_stake_proposal_execution_succeeds<
                         StorageWorkingGroupInstance,
                         StorageWorkingGroupInstance,
                     >(group)
                     >(group)
                 }
                 }
+                WorkingGroup::Builder => {
+                    run_create_slash_group_leader_stake_proposal_execution_succeeds::<
+                        Runtime,
+                        BuilderWorkingGroupInstance,
+                    >(group)
+                }
+                WorkingGroup::Gateway => {
+                    run_create_slash_group_leader_stake_proposal_execution_succeeds::<
+                        Runtime,
+                        GatewayWorkingGroupInstance,
+                    >(group)
+                }
             }
             }
         }
         }
     }
     }
@@ -778,6 +855,18 @@ fn run_create_slash_group_leader_stake_proposal_execution_succeeds<
                         StorageWorkingGroupInstance,
                         StorageWorkingGroupInstance,
                     >(group);
                     >(group);
                 }
                 }
+                WorkingGroup::Builder => {
+                    run_create_set_working_group_mint_capacity_proposal_execution_succeeds::<
+                        Runtime,
+                        BuilderWorkingGroupInstance,
+                    >(group);
+                }
+                WorkingGroup::Gateway => {
+                    run_create_set_working_group_mint_capacity_proposal_execution_succeeds::<
+                        Runtime,
+                        GatewayWorkingGroupInstance,
+                    >(group);
+                }
             }
             }
         }
         }
 
 
@@ -834,6 +923,18 @@ fn run_create_slash_group_leader_stake_proposal_execution_succeeds<
                             StorageWorkingGroupInstance,
                             StorageWorkingGroupInstance,
                         >(group);
                         >(group);
                     }
                     }
+                    WorkingGroup::Builder => {
+                        run_create_set_working_group_mint_capacity_proposal_execution_succeeds::<
+                            Runtime,
+                            BuilderWorkingGroupInstance,
+                        >(group);
+                    }
+                    WorkingGroup::Gateway => {
+                        run_create_set_working_group_mint_capacity_proposal_execution_succeeds::<
+                            Runtime,
+                            GatewayWorkingGroupInstance,
+                        >(group);
+                    }
                 }
                 }
             }
             }
         }
         }
@@ -957,6 +1058,18 @@ fn run_create_slash_group_leader_stake_proposal_execution_succeeds<
                             StorageWorkingGroupInstance,
                             StorageWorkingGroupInstance,
                         >(group);
                         >(group);
                     }
                     }
+                    WorkingGroup::Builder => {
+                        run_create_terminate_group_leader_role_proposal_execution_succeeds::<
+                            Runtime,
+                            BuilderWorkingGroupInstance,
+                        >(group);
+                    }
+                    WorkingGroup::Gateway => {
+                        run_create_terminate_group_leader_role_proposal_execution_succeeds::<
+                            Runtime,
+                            GatewayWorkingGroupInstance,
+                        >(group);
+                    }
                 }
                 }
             }
             }
         }
         }
@@ -1076,6 +1189,12 @@ fn run_create_slash_group_leader_stake_proposal_execution_succeeds<
                     WorkingGroup::Storage => {
                     WorkingGroup::Storage => {
                         run_create_terminate_group_leader_role_proposal_with_slashing_execution_succeeds::<Runtime, StorageWorkingGroupInstance>(group);
                         run_create_terminate_group_leader_role_proposal_with_slashing_execution_succeeds::<Runtime, StorageWorkingGroupInstance>(group);
                     }
                     }
+                    WorkingGroup::Builder => {
+                        run_create_terminate_group_leader_role_proposal_with_slashing_execution_succeeds::<Runtime, BuilderWorkingGroupInstance>(group);
+                    }
+                    WorkingGroup::Gateway => {
+                        run_create_terminate_group_leader_role_proposal_with_slashing_execution_succeeds::<Runtime, GatewayWorkingGroupInstance>(group);
+                    }
                 }
                 }
             }
             }
         }
         }