diff --git a/tests/Makefile b/tests/Makefile index 95df468c77..e5a1ee7ec6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -4,8 +4,11 @@ test-integration: test-integration-cov: go test ./integration/... -timeout 30m -coverpkg=../... -coverprofile=integration-profile.out -covermode=atomic -test-e2e: - go test ./e2e/... -mod=readonly -timeout 30m -race -tags='e2e' +test-e2e: test-e2e-server + go test ./e2e/... -mod=readonly -timeout 30m -tags='e2e' -test-e2e-cov: - go test ./e2e/... -mod=readonly -timeout 30m -race -tags='e2e' -coverpkg=../... -coverprofile=e2e-profile.out -covermode=atomic \ No newline at end of file +test-e2e-cov: test-e2e-server + go test ./e2e/... -mod=readonly -timeout 30m -race -tags='e2e' -coverpkg=../... -coverprofile=e2e-profile.out -covermode=atomic + +test-e2e-server: + go test ./e2e/server -mod=readonly -timeout 30m -tags='e2e' -coverpkg=../... -coverprofile=e2e-server-profile.out -covermode=atomic \ No newline at end of file diff --git a/tests/e2e/server/export_test.go b/tests/e2e/server/export_test.go index 46a2e1d9fb..6b33ecd4d4 100644 --- a/tests/e2e/server/export_test.go +++ b/tests/e2e/server/export_test.go @@ -1,5 +1,5 @@ -//go:build e2e -// +build e2e +//go:build !race +// +build !race package server_test diff --git a/types/module/module.go b/types/module/module.go index e4050fc351..6e84e03627 100644 --- a/types/module/module.go +++ b/types/module/module.go @@ -383,14 +383,9 @@ func (m *Manager) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) map[string // ExportGenesisForModules performs export genesis functionality for modules func (m *Manager) ExportGenesisForModules(ctx sdk.Context, cdc codec.JSONCodec, modulesToExport []string) map[string]json.RawMessage { genesisData := make(map[string]json.RawMessage) - if len(modulesToExport) == 0 { - for _, moduleName := range m.OrderExportGenesis { - if module, ok := m.Modules[moduleName].(HasGenesis); ok { - genesisData[moduleName] = module.ExportGenesis(ctx, cdc) - } - } - return genesisData + if len(modulesToExport) == 0 { + modulesToExport = m.OrderExportGenesis } // verify modules exists in app, so that we don't panic in the middle of an export @@ -398,12 +393,24 @@ func (m *Manager) ExportGenesisForModules(ctx sdk.Context, cdc codec.JSONCodec, panic(err) } - for _, moduleName := range modulesToExport { + channels := make([]chan json.RawMessage, len(modulesToExport)) + modulesWithGenesis := make([]string, 0, len(modulesToExport)) + + for i, moduleName := range modulesToExport { if module, ok := m.Modules[moduleName].(HasGenesis); ok { - genesisData[moduleName] = module.ExportGenesis(ctx, cdc) + channels[i] = make(chan json.RawMessage) + modulesWithGenesis = append(modulesWithGenesis, moduleName) + + go func(module HasGenesis, ch chan json.RawMessage) { + ch <- module.ExportGenesis(ctx, cdc) + }(module, channels[i]) } } + for i, moduleName := range modulesWithGenesis { + genesisData[moduleName] = <-channels[i] + } + return genesisData }