feat: introduce PreBlock (backport #17421) (#17712)

Co-authored-by: mmsqe <mavis@crypto.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot]
2023-09-13 19:40:08 +02:00
committed by GitHub
co-authored by mmsqe Julien Robert
parent 92d1d9a106
commit 4c083c6f23
41 changed files with 476 additions and 94 deletions
+18 -1
View File
@@ -28,6 +28,7 @@ import (
// Config should never need to be instantiated manually and is solely used for ModuleOption.
type Config struct {
ModuleConfigs map[string]*appv1alpha1.ModuleConfig
PreBlockersOrder []string
BeginBlockersOrder []string
EndBlockersOrder []string
InitGenesisOrder []string
@@ -37,8 +38,10 @@ type Config struct {
func defaultConfig() *Config {
return &Config{
ModuleConfigs: make(map[string]*appv1alpha1.ModuleConfig),
BeginBlockersOrder: []string{
PreBlockersOrder: []string{
"upgrade",
},
BeginBlockersOrder: []string{
"mint",
"distribution",
"slashing",
@@ -106,6 +109,12 @@ func defaultConfig() *Config {
type ModuleOption func(config *Config)
func WithCustomPreBlockersOrder(preBlockOrder ...string) ModuleOption {
return func(config *Config) {
config.PreBlockersOrder = preBlockOrder
}
}
func WithCustomBeginBlockersOrder(beginBlockOrder ...string) ModuleOption {
return func(config *Config) {
config.BeginBlockersOrder = beginBlockOrder
@@ -315,11 +324,18 @@ func NewAppConfig(opts ...ModuleOption) depinject.Config {
opt(cfg)
}
preBlockers := make([]string, 0)
beginBlockers := make([]string, 0)
endBlockers := make([]string, 0)
initGenesis := make([]string, 0)
overrides := make([]*runtimev1alpha1.StoreKeyConfig, 0)
for _, s := range cfg.PreBlockersOrder {
if _, ok := cfg.ModuleConfigs[s]; ok {
preBlockers = append(preBlockers, s)
}
}
for _, s := range cfg.BeginBlockersOrder {
if _, ok := cfg.ModuleConfigs[s]; ok {
beginBlockers = append(beginBlockers, s)
@@ -344,6 +360,7 @@ func NewAppConfig(opts ...ModuleOption) depinject.Config {
runtimeConfig := &runtimev1alpha1.Module{
AppName: "TestApp",
PreBlockers: preBlockers,
BeginBlockers: beginBlockers,
EndBlockers: endBlockers,
OverrideStoreKeys: overrides,
+42
View File
@@ -540,3 +540,45 @@ func (mr *MockCoreAppModuleMockRecorder) ValidateGenesis(arg0 interface{}) *gomo
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockCoreAppModule)(nil).ValidateGenesis), arg0)
}
// MockCoreModuleWithPreBlock is a mock of CoreModuleWithPreBlock interface.
type MockCoreModuleWithPreBlock struct {
MockCoreAppModule
recorder *MockCoreModuleWithPreBlockMockRecorder
}
// MockCoreModuleWithPreBlockMockRecorder is the mock recorder for MockCoreModuleWithPreBlock.
type MockCoreModuleWithPreBlockMockRecorder struct {
mock *MockCoreModuleWithPreBlock
}
// NewMockCoreModuleWithPreBlock creates a new mock instance.
func NewMockCoreModuleWithPreBlock(ctrl *gomock.Controller) *MockCoreModuleWithPreBlock {
mock := &MockCoreModuleWithPreBlock{
MockCoreAppModule: MockCoreAppModule{
ctrl: ctrl,
},
}
mock.recorder = &MockCoreModuleWithPreBlockMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockCoreModuleWithPreBlock) EXPECT() *MockCoreModuleWithPreBlockMockRecorder {
return m.recorder
}
// PreBlock mocks base method.
func (m *MockCoreModuleWithPreBlock) PreBlock(arg0 context.Context) (appmodule.ResponsePreBlock, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "PreBlock", arg0)
ret0, _ := ret[0].(appmodule.ResponsePreBlock)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// PreBlock indicates an expected call of PreBlock.
func (mr *MockCoreModuleWithPreBlockMockRecorder) PreBlock(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PreBlock", reflect.TypeOf((*MockCoreModuleWithPreBlock)(nil).PreBlock), arg0)
}