Skip to content

Commit

Permalink
[R4R] fix: export harvest genesis state (#778)
Browse files Browse the repository at this point in the history
* fix: update harvest genesis state to include deposits, claims

* fix migration
  • Loading branch information
karzak authored Jan 27, 2021
1 parent b752150 commit ec2f9ec
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 9 deletions.
2 changes: 1 addition & 1 deletion migrate/v0_11/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ func MigrateHarvest() v0_11harvest.GenesisState {
time.Hour*24,
),
},
), v0_11harvest.DefaultPreviousBlockTime, v0_11harvest.DefaultDistributionTimes)
), v0_11harvest.DefaultPreviousBlockTime, v0_11harvest.DefaultDistributionTimes, v0_11harvest.DefaultDeposits, v0_11harvest.DefaultClaims)
return harvestGS
}

Expand Down
5 changes: 5 additions & 0 deletions x/harvest/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ var (
// variable aliases
ClaimsKeyPrefix = types.ClaimsKeyPrefix
DefaultActive = types.DefaultActive
DefaultClaims = types.DefaultClaims
DefaultDelegatorSchedules = types.DefaultDelegatorSchedules
DefaultDeposits = types.DefaultDeposits
DefaultDistributionTimes = types.DefaultDistributionTimes
DefaultGovSchedules = types.DefaultGovSchedules
DefaultLPSchedules = types.DefaultLPSchedules
Expand All @@ -95,6 +97,7 @@ var (
ErrInvalidDepositDenom = types.ErrInvalidDepositDenom
ErrInvalidDepositType = types.ErrInvalidDepositType
ErrInvalidMultiplier = types.ErrInvalidMultiplier
ErrInvalidReceiver = types.ErrInvalidReceiver
ErrLPScheduleNotFound = types.ErrLPScheduleNotFound
ErrZeroClaim = types.ErrZeroClaim
GovDenom = types.GovDenom
Expand All @@ -110,10 +113,12 @@ type (
Keeper = keeper.Keeper
AccountKeeper = types.AccountKeeper
Claim = types.Claim
Claims = types.Claims
DelegatorDistributionSchedule = types.DelegatorDistributionSchedule
DelegatorDistributionSchedules = types.DelegatorDistributionSchedules
Deposit = types.Deposit
DepositType = types.DepositType
Deposits = types.Deposits
DistributionSchedule = types.DistributionSchedule
DistributionSchedules = types.DistributionSchedules
GenesisDistributionTime = types.GenesisDistributionTime
Expand Down
21 changes: 20 additions & 1 deletion x/harvest/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ func InitGenesis(ctx sdk.Context, k Keeper, supplyKeeper types.SupplyKeeper, gs
panic(fmt.Sprintf("%s module account has not been set", DepositModuleAccount))
}

for _, dep := range gs.Deposits {
k.SetDeposit(ctx, dep)
}

for _, claim := range gs.Claims {
k.SetClaim(ctx, claim)
}

}

// ExportGenesis export genesis state for harvest module
Expand All @@ -61,5 +69,16 @@ func ExportGenesis(ctx sdk.Context, k Keeper) GenesisState {
previousDistTimes = append(previousDistTimes, GenesisDistributionTime{PreviousDistributionTime: previousDistTime, Denom: dds.DistributionSchedule.DepositDenom})
}
}
return NewGenesisState(params, previousBlockTime, previousDistTimes)
deposits := types.Deposits{}
k.IterateDeposits(ctx, func(deposit types.Deposit) (stop bool) {
deposits = append(deposits, deposit)
return false
})

claims := types.Claims{}
k.IterateClaims(ctx, func(claim types.Claim) (stop bool) {
claims = append(claims, claim)
return false
})
return NewGenesisState(params, previousBlockTime, previousDistTimes, deposits, claims)
}
2 changes: 1 addition & 1 deletion x/harvest/keeper/claim_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ func (suite *KeeperTestSuite) TestClaim() {
time.Hour*24,
),
},
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes)
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes, types.DefaultDeposits, types.DefaultClaims)
tApp.InitializeFromGenesisStates(authGS, app.GenesisState{types.ModuleName: types.ModuleCdc.MustMarshalJSON(harvestGS)})
if tc.args.validatorVesting {
ak := tApp.GetAccountKeeper()
Expand Down
4 changes: 2 additions & 2 deletions x/harvest/keeper/deposit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func (suite *KeeperTestSuite) TestDeposit() {
time.Hour*24,
),
},
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes)
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes, types.DefaultDeposits, types.DefaultClaims)
tApp.InitializeFromGenesisStates(authGS, app.GenesisState{types.ModuleName: types.ModuleCdc.MustMarshalJSON(harvestGS)})
keeper := tApp.GetHarvestKeeper()
suite.app = tApp
Expand Down Expand Up @@ -293,7 +293,7 @@ func (suite *KeeperTestSuite) TestWithdraw() {
time.Hour*24,
),
},
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes)
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes, types.DefaultDeposits, types.DefaultClaims)
tApp.InitializeFromGenesisStates(authGS, app.GenesisState{types.ModuleName: types.ModuleCdc.MustMarshalJSON(harvestGS)})
keeper := tApp.GetHarvestKeeper()
suite.app = tApp
Expand Down
3 changes: 2 additions & 1 deletion x/harvest/keeper/rewards_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func (suite *KeeperTestSuite) TestApplyDepositRewards() {
time.Hour*24,
),
},
), tc.args.previousBlockTime, types.DefaultDistributionTimes)
), tc.args.previousBlockTime, types.DefaultDistributionTimes, types.DefaultDeposits, types.DefaultClaims)
tApp.InitializeFromGenesisStates(app.GenesisState{types.ModuleName: types.ModuleCdc.MustMarshalJSON(harvestGS)})
supplyKeeper := tApp.GetSupplyKeeper()
supplyKeeper.MintCoins(ctx, types.ModuleAccountName, cs(tc.args.totalDeposits))
Expand Down Expand Up @@ -439,6 +439,7 @@ func harvestGenesisState(rewardRate sdk.Coin) app.GenesisState {
),
types.DefaultPreviousBlockTime,
types.DefaultDistributionTimes,
types.DefaultDeposits, types.DefaultClaims,
)
return app.GenesisState{
types.ModuleName: types.ModuleCdc.MustMarshalJSON(genState),
Expand Down
2 changes: 1 addition & 1 deletion x/harvest/keeper/timelock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ func (suite *KeeperTestSuite) TestSendTimeLockedCoinsToAccount() {
time.Hour*24,
),
},
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes)
), types.DefaultPreviousBlockTime, types.DefaultDistributionTimes, types.DefaultDeposits, types.DefaultClaims)
tApp.InitializeFromGenesisStates(authGS, app.GenesisState{types.ModuleName: types.ModuleCdc.MustMarshalJSON(harvestGS)})
if tc.args.accArgs.vestingAccountBefore {
ak := tApp.GetAccountKeeper()
Expand Down
2 changes: 2 additions & 0 deletions x/harvest/types/claim.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ func NewClaim(owner sdk.AccAddress, denom string, amount sdk.Coin, dtype Deposit
Type: dtype,
}
}

type Claims []Claim
2 changes: 2 additions & 0 deletions x/harvest/types/deposit.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ func NewDeposit(depositor sdk.AccAddress, amount sdk.Coin, dtype DepositType) De
Type: dtype,
}
}

type Deposits []Deposit
10 changes: 9 additions & 1 deletion x/harvest/types/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,27 @@ import (
var (
DefaultPreviousBlockTime = tmtime.Canonical(time.Unix(0, 0))
DefaultDistributionTimes = GenesisDistributionTimes{}
DefaultDeposits = Deposits{}
DefaultClaims = Claims{}
)

// GenesisState is the state that must be provided at genesis.
type GenesisState struct {
Params Params `json:"params" yaml:"params"`
PreviousBlockTime time.Time `json:"previous_block_time" yaml:"previous_block_time"`
PreviousDistributionTimes GenesisDistributionTimes `json:"previous_distribution_times" yaml:"previous_distribution_times"`
Deposits Deposits `json:"deposits" yaml:"deposits"`
Claims Claims `json:"claims" yaml:"claims"`
}

// NewGenesisState returns a new genesis state
func NewGenesisState(params Params, previousBlockTime time.Time, previousDistTimes GenesisDistributionTimes) GenesisState {
func NewGenesisState(params Params, previousBlockTime time.Time, previousDistTimes GenesisDistributionTimes, deposits Deposits, claims Claims) GenesisState {
return GenesisState{
Params: params,
PreviousBlockTime: previousBlockTime,
PreviousDistributionTimes: previousDistTimes,
Deposits: deposits,
Claims: claims,
}
}

Expand All @@ -38,6 +44,8 @@ func DefaultGenesisState() GenesisState {
Params: DefaultParams(),
PreviousBlockTime: DefaultPreviousBlockTime,
PreviousDistributionTimes: DefaultDistributionTimes,
Deposits: DefaultDeposits,
Claims: DefaultClaims,
}
}

Expand Down
12 changes: 11 additions & 1 deletion x/harvest/types/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ func (suite *GenesisTestSuite) TestGenesisValidation() {
params types.Params
pbt time.Time
pdts types.GenesisDistributionTimes
deps types.Deposits
claims types.Claims
}
testCases := []struct {
name string
Expand All @@ -34,6 +36,8 @@ func (suite *GenesisTestSuite) TestGenesisValidation() {
params: types.DefaultParams(),
pbt: types.DefaultPreviousBlockTime,
pdts: types.DefaultDistributionTimes,
deps: types.DefaultDeposits,
claims: types.DefaultClaims,
},
expectPass: true,
expectedErr: "",
Expand All @@ -56,6 +60,8 @@ func (suite *GenesisTestSuite) TestGenesisValidation() {
pdts: types.GenesisDistributionTimes{
{PreviousDistributionTime: time.Date(2020, 10, 8, 12, 0, 0, 0, time.UTC), Denom: "bnb"},
},
deps: types.DefaultDeposits,
claims: types.DefaultClaims,
},
expectPass: true,
expectedErr: "",
Expand All @@ -78,6 +84,8 @@ func (suite *GenesisTestSuite) TestGenesisValidation() {
pdts: types.GenesisDistributionTimes{
{PreviousDistributionTime: time.Date(2020, 10, 8, 12, 0, 0, 0, time.UTC), Denom: "bnb"},
},
deps: types.DefaultDeposits,
claims: types.DefaultClaims,
},
expectPass: false,
expectedErr: "previous block time not set",
Expand All @@ -100,14 +108,16 @@ func (suite *GenesisTestSuite) TestGenesisValidation() {
pdts: types.GenesisDistributionTimes{
{PreviousDistributionTime: time.Time{}, Denom: "bnb"},
},
deps: types.DefaultDeposits,
claims: types.DefaultClaims,
},
expectPass: false,
expectedErr: "previous distribution time not set",
},
}
for _, tc := range testCases {
suite.Run(tc.name, func() {
gs := types.NewGenesisState(tc.args.params, tc.args.pbt, tc.args.pdts)
gs := types.NewGenesisState(tc.args.params, tc.args.pbt, tc.args.pdts, tc.args.deps, tc.args.claims)
err := gs.Validate()
if tc.expectPass {
suite.NoError(err)
Expand Down

0 comments on commit ec2f9ec

Please sign in to comment.