Skip to content

Commit 27cf4cd

Browse files
authored
test(x/evmstaking): reenable tests (piplabs#324)
add back evmstaking tests disabled in piplabs#267 issue: none
1 parent d7f9160 commit 27cf4cd

File tree

11 files changed

+271
-863
lines changed

11 files changed

+271
-863
lines changed

client/x/evmengine/keeper/upgrades_internal_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ var (
3030
)
3131

3232
func TestKeeper_ProcessSoftwareUpgrade(t *testing.T) {
33-
t.Parallel()
3433
keeper, ctx, ctrl, uk := setupTestEnvironment(t)
3534
t.Cleanup(ctrl.Finish)
3635

@@ -88,7 +87,6 @@ func TestKeeper_ProcessSoftwareUpgrade(t *testing.T) {
8887

8988
for _, tc := range tcs {
9089
t.Run(tc.name, func(t *testing.T) {
91-
t.Parallel()
9290
tc.setupMock()
9391
err := keeper.ProcessSoftwareUpgrade(ctx, tc.ev())
9492
if tc.expectedErr != "" {
@@ -102,7 +100,6 @@ func TestKeeper_ProcessSoftwareUpgrade(t *testing.T) {
102100
}
103101

104102
func TestKeeper_ProcessUpgradeEvents(t *testing.T) {
105-
t.Parallel()
106103
keeper, ctx, ctrl, uk := setupTestEnvironment(t)
107104
t.Cleanup(ctrl.Finish)
108105

@@ -241,7 +238,6 @@ func TestKeeper_ProcessUpgradeEvents(t *testing.T) {
241238

242239
for _, tc := range tcs {
243240
t.Run(tc.name, func(t *testing.T) {
244-
t.Parallel()
245241
if tc.setupMock != nil {
246242
tc.setupMock()
247243
}
Lines changed: 12 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package keeper_test
22

3-
/*
43
import (
54
"context"
65
"math/big"
7-
"time"
86

9-
"cosmossdk.io/math"
107
sdkmath "cosmossdk.io/math"
118

129
"github.com/cometbft/cometbft/crypto"
@@ -19,17 +16,14 @@ import (
1916

2017
"github.com/piplabs/story/client/x/evmstaking/types"
2118
"github.com/piplabs/story/contracts/bindings"
22-
"github.com/piplabs/story/lib/errors"
2319
"github.com/piplabs/story/lib/k1util"
24-
25-
"go.uber.org/mock/gomock"
2620
)
2721

2822
// createValidator creates a validator.
2923
func (s *TestSuite) createValidator(ctx context.Context, valPubKey crypto.PubKey, valAddr sdk.ValAddress) {
3024
sdkCtx := sdk.UnwrapSDKContext(ctx)
3125
require := s.Require()
32-
bankKeeper, stakingKeeper := s.BankKeeper, s.StakingKeeper
26+
stakingKeeper := s.StakingKeeper
3327

3428
// Convert public key to cosmos format
3529
valCosmosPubKey, err := k1util.PubKeyToCosmos(valPubKey)
@@ -39,13 +33,15 @@ func (s *TestSuite) createValidator(ctx context.Context, valPubKey crypto.PubKey
3933
val := testutil.NewValidator(s.T(), valAddr, valCosmosPubKey)
4034
valTokens := stakingKeeper.TokensFromConsensusPower(ctx, 10)
4135
validator, _, _ := val.AddTokensFromDel(valTokens, sdkmath.LegacyOneDec())
42-
bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stypes.NotBondedPoolName, stypes.BondedPoolName, gomock.Any())
36+
// bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stypes.NotBondedPoolName, stypes.BondedPoolName, gomock.Any())
37+
require.NoError(s.BankKeeper.MintCoins(ctx, types.ModuleName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, valTokens))))
38+
require.NoError(s.BankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, stypes.NotBondedPoolName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, valTokens))))
4339
_ = skeeper.TestingUpdateValidator(stakingKeeper, sdkCtx, validator, true)
4440
}
4541

4642
func (s *TestSuite) TestProcessDeposit() {
4743
require := s.Require()
48-
ctx, keeper, accountKeeper, bankKeeper, stakingKeeper := s.Ctx, s.EVMStakingKeeper, s.AccountKeeper, s.BankKeeper, s.StakingKeeper
44+
ctx, keeper, stakingKeeper := s.Ctx, s.EVMStakingKeeper, s.StakingKeeper
4945

5046
pubKeys, accAddrs, valAddrs := createAddresses(2)
5147
// delegator
@@ -66,15 +62,6 @@ func (s *TestSuite) TestProcessDeposit() {
6662
OperatorAddress: cmpToEVM(delPubKey),
6763
}
6864
}
69-
expectAccountMock := func(isNewAccount bool) {
70-
if isNewAccount {
71-
accountKeeper.EXPECT().HasAccount(gomock.Any(), delAddr).Return(false)
72-
accountKeeper.EXPECT().NewAccountWithAddress(gomock.Any(), delAddr).Return(nil)
73-
accountKeeper.EXPECT().SetAccount(gomock.Any(), gomock.Any())
74-
} else {
75-
accountKeeper.EXPECT().HasAccount(gomock.Any(), delAddr).Return(true)
76-
}
77-
}
7865

7966
tcs := []struct {
8067
name string
@@ -107,129 +94,25 @@ func (s *TestSuite) TestProcessDeposit() {
10794
},
10895
expectedErr: "invalid uncompressed public key length or format",
10996
},
97+
// TODO: corrupted delegator and validator pubkey
11098
{
111-
name: "fail: corrupted delegator pubkey",
112-
deposit: &bindings.IPTokenStakingDeposit{
113-
DelegatorUncmpPubkey: createCorruptedPubKey(cmpToUncmp(delPubKey.Bytes())),
114-
ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()),
115-
StakeAmount: new(big.Int).SetUint64(1),
116-
StakingPeriod: big.NewInt(0),
117-
DelegationId: big.NewInt(0),
118-
OperatorAddress: cmpToEVM(delPubKey.Bytes()),
119-
},
120-
expectedErr: "invalid uncompressed public key length or format",
121-
},
122-
// {
123-
// name: "fail: corrupted validator pubkey",
124-
// deposit: createDeposit(delPubKey.Bytes(), createCorruptedPubKey(valPubKey.Bytes()), new(big.Int).SetUint64(1)),
125-
// expectedErr: "validator pubkey to evm address",
126-
// },
127-
{
128-
name: "fail: mint coins to existing delegator",
129-
settingMock: func() {
130-
accountKeeper.EXPECT().HasAccount(gomock.Any(), delAddr).Return(true)
131-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(errors.New(""))
132-
},
133-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
134-
expectedErr: "create stake coin for depositor: mint coins",
135-
},
136-
{
137-
name: "fail: mint coins to new delegator",
138-
settingMock: func() {
139-
expectAccountMock(true)
140-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(errors.New(""))
141-
},
142-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
143-
expectedErr: "create stake coin for depositor: mint coins",
144-
},
145-
{
146-
name: "fail: send coins from module to existing delegator",
147-
settingMock: func() {
148-
expectAccountMock(false)
149-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
150-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(errors.New(""))
151-
},
152-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
153-
expectedErr: "create stake coin for depositor: send coins",
154-
},
155-
{
156-
name: "fail: send coins from module to new delegator",
157-
settingMock: func() {
158-
expectAccountMock(true)
159-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
160-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(errors.New(""))
161-
},
162-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
163-
expectedErr: "create stake coin for depositor: send coins",
164-
},
165-
{
166-
name: "fail: delegate to existing delegator",
167-
settingMock: func() {
168-
expectAccountMock(false)
169-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
170-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(nil)
171-
bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), delAddr, stypes.BondedPoolName, gomock.Any()).Return(errors.New("failed to delegate"))
172-
},
173-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
174-
expectedErr: "failed to delegate",
175-
},
176-
{
177-
name: "fail: delegate to new delegator",
178-
settingMock: func() {
179-
expectAccountMock(true)
180-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
181-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(nil)
182-
bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), delAddr, stypes.BondedPoolName, gomock.Any()).Return(errors.New("failed to delegate"))
183-
},
184-
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
185-
expectedErr: "failed to delegate",
186-
},
187-
{
188-
name: "pass: existing delegator",
189-
settingMock: func() {
190-
expectAccountMock(false)
191-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
192-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(nil)
193-
bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), delAddr, stypes.BondedPoolName, gomock.Any()).Return(nil)
194-
},
99+
name: "pass: existing delegator",
195100
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
196101
expectedResult: stypes.Delegation{
197102
DelegatorAddress: delAddr.String(),
198103
ValidatorAddress: valAddr.String(),
199-
Shares: math.LegacyNewDecFromInt(math.NewInt(1)),
200-
RewardsShares: math.LegacyNewDecFromInt(math.NewInt(1)),
201-
PeriodDelegations: map[string]*stypes.PeriodDelegation{
202-
stypes.FlexibleDelegationID: {
203-
PeriodDelegationId: stypes.FlexibleDelegationID,
204-
Shares: math.LegacyNewDecFromInt(math.NewInt(1)),
205-
RewardsShares: math.LegacyNewDecFromInt(math.NewInt(1)),
206-
EndTime: time.Time{},
207-
},
208-
},
104+
Shares: sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(1)),
105+
RewardsShares: sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(1)).Quo(sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(2))),
209106
},
210107
},
211108
{
212-
name: "pass: new delegator",
213-
settingMock: func() {
214-
expectAccountMock(true)
215-
bankKeeper.EXPECT().MintCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
216-
bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.ModuleName, delAddr, gomock.Any()).Return(nil)
217-
bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), delAddr, stypes.BondedPoolName, gomock.Any()).Return(nil)
218-
},
109+
name: "pass: new delegator",
219110
deposit: createDeposit(delPubKey.Bytes(), valPubKey.Bytes(), new(big.Int).SetUint64(1)),
220111
expectedResult: stypes.Delegation{
221112
DelegatorAddress: delAddr.String(),
222113
ValidatorAddress: valAddr.String(),
223-
Shares: math.LegacyNewDecFromInt(math.NewInt(1)),
224-
RewardsShares: math.LegacyNewDecFromInt(math.NewInt(1)),
225-
PeriodDelegations: map[string]*stypes.PeriodDelegation{
226-
stypes.FlexibleDelegationID: {
227-
PeriodDelegationId: stypes.FlexibleDelegationID,
228-
Shares: math.LegacyNewDecFromInt(math.NewInt(1)),
229-
RewardsShares: math.LegacyNewDecFromInt(math.NewInt(1)),
230-
EndTime: time.Time{},
231-
},
232-
},
114+
Shares: sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(1)),
115+
RewardsShares: sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(1)).Quo(sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(2))),
233116
},
234117
},
235118
}
@@ -248,7 +131,6 @@ func (s *TestSuite) TestProcessDeposit() {
248131
// check delegation
249132
delegation, err := stakingKeeper.GetDelegation(cachedCtx, delAddr, valAddr)
250133
require.NoError(err)
251-
delegation.PeriodDelegations[stypes.FlexibleDelegationID].EndTime = time.Time{}
252134
require.Equal(tc.expectedResult, delegation)
253135
}
254136
})
@@ -291,4 +173,3 @@ func (s *TestSuite) TestParseDepositLog() {
291173
})
292174
}
293175
}
294-
*/

client/x/evmstaking/keeper/keeper.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (k Keeper) ValidatorAddressCodec() addresscodec.Codec {
109109
return k.validatorAddressCodec
110110
}
111111

112-
//nolint:gocyclo // TODO
112+
//nolint:gocyclo // a lot of switch cases, could be refactored
113113
func (k Keeper) ProcessStakingEvents(ctx context.Context, height uint64, logs []*evmenginetypes.EVMEvent) error {
114114
gwei, exp := big.NewInt(10), big.NewInt(9)
115115
gwei.Exp(gwei, exp, nil)
@@ -123,11 +123,6 @@ func (k Keeper) ProcessStakingEvents(ctx context.Context, height uint64, logs []
123123
return err
124124
}
125125

126-
// TODO: handle when each event processing fails.
127-
128-
// Convert the amount from wei to gwei (Eth2 spec withdrawal is specified in gwei) by dividing by 10^9.
129-
// TODO: consider rounding and decimal precision when dividing bigint.
130-
131126
switch ethlog.Topics[0] {
132127
case types.UpdateValidatorCommission.ID:
133128
ev, err := k.ipTokenStakingContract.ParseUpdateValidatorCommssion(ethlog)

0 commit comments

Comments
 (0)