* Start chain upgrade tests * Fix stakeunstake test * Make test pass * Better stop chain * Test chain upgrade * Set upgrade handler order * Fix app for chain upgrade * Minor cleanup * Check contract state * Updates * Gov constitution migration will be handled by the sdk * Deactivate upgrade test * Helper * Better upgrade structure an minor updates (cherry picked from commit 32a01da4563b52df6167929f3535d111ad18a1b7) * Updates * Gci formatting * Updates * Testnet commit timeout * Update * Store artifacts on system test failure * Better circleci setup * Artifact path * x * Fix upgrade * Generic upgrade handler * Fix imports * Update tests/system/cli.go Co-authored-by: pinosu <95283998+pinosu@users.noreply.github.com> --------- Co-authored-by: Pino' Surace <pino.surace@live.it> Co-authored-by: pinosu <95283998+pinosu@users.noreply.github.com>
91 lines
2.7 KiB
Go
91 lines
2.7 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types"
|
|
icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types"
|
|
ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
|
|
ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" //nolint:staticcheck
|
|
ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
|
|
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
|
|
|
|
upgradetypes "cosmossdk.io/x/upgrade/types"
|
|
|
|
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
|
|
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
|
|
|
|
"github.com/CosmWasm/wasmd/app/upgrades"
|
|
"github.com/CosmWasm/wasmd/app/upgrades/noop"
|
|
v050 "github.com/CosmWasm/wasmd/app/upgrades/v050"
|
|
)
|
|
|
|
// Upgrades list of chain upgrades
|
|
var Upgrades = []upgrades.Upgrade{v050.Upgrade}
|
|
|
|
// RegisterUpgradeHandlers registers the chain upgrade handlers
|
|
func (app WasmApp) RegisterUpgradeHandlers() {
|
|
setupLegacyKeyTables(app.ParamsKeeper)
|
|
if len(Upgrades) == 0 {
|
|
// always have a unique upgrade registered for the current version to test in system tests
|
|
Upgrades = append(Upgrades, noop.NewUpgrade(app.Version()))
|
|
}
|
|
|
|
keepers := upgrades.AppKeepers{AccountKeeper: app.AccountKeeper}
|
|
// register all upgrade handlers
|
|
for _, upgrade := range Upgrades {
|
|
app.UpgradeKeeper.SetUpgradeHandler(
|
|
upgrade.UpgradeName,
|
|
upgrade.CreateUpgradeHandler(
|
|
app.ModuleManager,
|
|
app.configurator,
|
|
&keepers,
|
|
),
|
|
)
|
|
}
|
|
|
|
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
|
|
if err != nil {
|
|
panic(fmt.Sprintf("failed to read upgrade info from disk %s", err))
|
|
}
|
|
|
|
if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
|
|
return
|
|
}
|
|
|
|
// register store loader for current upgrade
|
|
for _, upgrade := range Upgrades {
|
|
if upgradeInfo.Name == upgrade.UpgradeName {
|
|
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades)) // nolint:gosec
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
func setupLegacyKeyTables(k paramskeeper.Keeper) {
|
|
// Set param key table for params module migration
|
|
for _, subspace := range k.GetSubspaces() {
|
|
subspace := subspace
|
|
|
|
var keyTable paramstypes.KeyTable
|
|
switch subspace.Name() {
|
|
// ibc types
|
|
case ibcexported.ModuleName:
|
|
keyTable = ibcclienttypes.ParamKeyTable()
|
|
keyTable.RegisterParamSet(&ibcconnectiontypes.Params{})
|
|
case ibctransfertypes.ModuleName:
|
|
keyTable = ibctransfertypes.ParamKeyTable()
|
|
case icahosttypes.SubModuleName:
|
|
keyTable = icahosttypes.ParamKeyTable()
|
|
case icacontrollertypes.SubModuleName:
|
|
keyTable = icacontrollertypes.ParamKeyTable()
|
|
default:
|
|
continue
|
|
}
|
|
|
|
if !subspace.HasKeyTable() {
|
|
subspace.WithKeyTable(keyTable)
|
|
}
|
|
}
|
|
}
|