Skip to content

Commit

Permalink
revert migration
Browse files Browse the repository at this point in the history
  • Loading branch information
haiyizxx committed Oct 4, 2024
1 parent 7fcf497 commit 987862a
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 48 deletions.
18 changes: 9 additions & 9 deletions x/nexus/keeper/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"

axelarnettypes "github.com/axelarnetwork/axelar-core/x/axelarnet/types"
"github.com/axelarnetwork/axelar-core/x/nexus/types"
)

// Migrate7to8 returns the handler that performs in-place store migrations
func Migrate7to8(_ Keeper, bank types.BankKeeper, account types.AccountKeeper) func(ctx sdk.Context) error {
// Migrate6to7 returns the handler that performs in-place store migrations
func Migrate6to7(k Keeper) func(ctx sdk.Context) error {
return func(ctx sdk.Context) error {
if err := sendCoinsFromAxelarnetToNexus(ctx, bank, account); err != nil {
return err
}
addModuleParamGateway(ctx, k)
addModuleParamEndBlockerLimit(ctx, k)

return nil
}
}

func sendCoinsFromAxelarnetToNexus(ctx sdk.Context, bank types.BankKeeper, account types.AccountKeeper) error {
balances := bank.GetAllBalances(ctx, account.GetModuleAddress(axelarnettypes.ModuleName))
func addModuleParamGateway(ctx sdk.Context, k Keeper) {
k.params.Set(ctx, types.KeyGateway, types.DefaultParams().Gateway)
}

return bank.SendCoinsFromModuleToModule(ctx, axelarnettypes.ModuleName, types.ModuleName, balances)
func addModuleParamEndBlockerLimit(ctx sdk.Context, k Keeper) {
k.params.Set(ctx, types.KeyEndBlockerLimit, types.DefaultParams().EndBlockerLimit)
}
79 changes: 42 additions & 37 deletions x/nexus/keeper/migrate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,50 +11,55 @@ import (

"github.com/axelarnetwork/axelar-core/app"
"github.com/axelarnetwork/axelar-core/testutils/fake"
"github.com/axelarnetwork/axelar-core/testutils/rand"
axelarnettypes "github.com/axelarnetwork/axelar-core/x/axelarnet/types"
"github.com/axelarnetwork/axelar-core/x/nexus/keeper"
"github.com/axelarnetwork/axelar-core/x/nexus/types"
"github.com/axelarnetwork/axelar-core/x/nexus/types/mock"
. "github.com/axelarnetwork/utils/test"
)

func TestMigrate7to8(t *testing.T) {
func TestMigrate6to7(t *testing.T) {
encCfg := app.MakeEncodingConfig()
subspace := params.NewSubspace(encCfg.Codec, encCfg.Amino, sdk.NewKVStoreKey("nexusKey"), sdk.NewKVStoreKey("tNexusKey"), "nexus")
k := keeper.NewKeeper(encCfg.Codec, sdk.NewKVStoreKey("nexus"), subspace)
ctx := sdk.NewContext(fake.NewMultiStore(), tmproto.Header{}, false, log.TestingLogger())

t.Run("sendCoinsFromAxelarnetToNexus", func(t *testing.T) {
bank := &mock.BankKeeperMock{}
account := &mock.AccountKeeperMock{}
balances := sdk.NewCoins(rand.Coin(), rand.Coin(), rand.Coin())
axelarnetModuleAccount := rand.AccAddr()
nexusModuleAccount := rand.AccAddr()

account.GetModuleAddressFunc = func(name string) sdk.AccAddress {
switch name {
case axelarnettypes.ModuleName:
return axelarnetModuleAccount
case types.ModuleName:
return nexusModuleAccount
default:
return sdk.AccAddress{}
}
}
bank.GetAllBalancesFunc = func(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins {
if addr.Equals(axelarnetModuleAccount) {
return balances
}
return sdk.NewCoins()
}
bank.SendCoinsFromModuleToModuleFunc = func(ctx sdk.Context, sender, recipient string, coins sdk.Coins) error { return nil }

err := keeper.Migrate7to8(k, bank, account)(ctx)

assert.NoError(t, err)
assert.Len(t, bank.SendCoinsFromModuleToModuleCalls(), 1)
assert.Equal(t, axelarnettypes.ModuleName, bank.SendCoinsFromModuleToModuleCalls()[0].SenderModule)
assert.Equal(t, types.ModuleName, bank.SendCoinsFromModuleToModuleCalls()[0].RecipientModule)
assert.Equal(t, balances, bank.SendCoinsFromModuleToModuleCalls()[0].Amt)
})
Given("subspace is setup with params before migration", func() {
subspace.Set(ctx, types.KeyChainActivationThreshold, types.DefaultParams().ChainActivationThreshold)
subspace.Set(ctx, types.KeyChainMaintainerMissingVoteThreshold, types.DefaultParams().ChainMaintainerMissingVoteThreshold)
subspace.Set(ctx, types.KeyChainMaintainerIncorrectVoteThreshold, types.DefaultParams().ChainMaintainerIncorrectVoteThreshold)
subspace.Set(ctx, types.KeyChainMaintainerCheckWindow, types.DefaultParams().ChainMaintainerCheckWindow)
}).
When("", func() {}).
Then("the migration should add the new param with the default value", func(t *testing.T) {
actualGateway := sdk.AccAddress{}
actualEndBlockerLimit := uint64(0)

assert.PanicsWithError(t, "UnmarshalJSON cannot decode empty bytes", func() {
subspace.Get(ctx, types.KeyGateway, &actualGateway)
})
assert.PanicsWithError(t, "UnmarshalJSON cannot decode empty bytes", func() {
subspace.Get(ctx, types.KeyEndBlockerLimit, &actualEndBlockerLimit)
})
assert.PanicsWithError(t, "UnmarshalJSON cannot decode empty bytes", func() {
k.GetParams(ctx)
})

keeper.Migrate6to7(k)(ctx)

assert.NotPanics(t, func() {
subspace.Get(ctx, types.KeyGateway, &actualGateway)
})
assert.NotPanics(t, func() {
subspace.Get(ctx, types.KeyEndBlockerLimit, &actualEndBlockerLimit)
})
assert.NotPanics(t, func() {
k.GetParams(ctx)
})

assert.Equal(t, types.DefaultParams().Gateway, actualGateway)
assert.Equal(t, types.DefaultParams().Gateway, k.GetParams(ctx).Gateway)
assert.Equal(t, types.DefaultParams().EndBlockerLimit, actualEndBlockerLimit)
assert.Equal(t, types.DefaultParams().EndBlockerLimit, k.GetParams(ctx).EndBlockerLimit)
}).
Run(t)

}
4 changes: 2 additions & 2 deletions x/nexus/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServiceServer(grpc.ServerWithSDKErrors{Server: cfg.MsgServer(), Err: types.ErrNexus, Logger: am.keeper.Logger}, msgServer)
types.RegisterQueryServiceServer(cfg.QueryServer(), keeper.NewGRPCQuerier(am.keeper, am.axelarnet))

err := cfg.RegisterMigration(types.ModuleName, 7, keeper.Migrate7to8(am.keeper, am.bank, am.account))
err := cfg.RegisterMigration(types.ModuleName, 6, keeper.Migrate6to7(am.keeper))
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -171,4 +171,4 @@ func (am AppModule) LegacyQuerierHandler(*codec.LegacyAmino) sdk.Querier {
}

// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 8 }
func (AppModule) ConsensusVersion() uint64 { return 7 }

0 comments on commit 987862a

Please sign in to comment.