@@ -8,68 +8,43 @@ import (
8
8
9
9
"cosmossdk.io/core/comet"
10
10
coreheader "cosmossdk.io/core/header"
11
- "cosmossdk.io/depinject"
12
- "cosmossdk.io/log"
13
- bankkeeper "cosmossdk.io/x/bank/keeper"
11
+ "cosmossdk.io/runtime/v2/services"
14
12
"cosmossdk.io/x/slashing"
15
- slashingkeeper "cosmossdk.io/x/slashing/keeper"
16
13
"cosmossdk.io/x/slashing/testutil"
17
- stakingkeeper "cosmossdk.io/x/staking/keeper"
18
14
stakingtestutil "cosmossdk.io/x/staking/testutil"
19
15
20
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
21
- "github.com/cosmos/cosmos-sdk/runtime"
16
+ "github.com/cosmos/cosmos-sdk/tests/integration/v2"
22
17
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
23
18
sdk "github.com/cosmos/cosmos-sdk/types"
24
- authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
25
19
)
26
20
27
21
// TestBeginBlocker is a unit test function that tests the behavior of the BeginBlocker function.
28
22
// It sets up the necessary dependencies and context, creates a validator, and performs various operations
29
23
// to test the slashing logic. It checks if the validator is correctly jailed after a certain number of blocks.
30
24
func TestBeginBlocker (t * testing.T ) {
31
- var (
32
- interfaceRegistry codectypes.InterfaceRegistry
33
- accountKeeper authkeeper.AccountKeeper
34
- bankKeeper bankkeeper.Keeper
35
- stakingKeeper * stakingkeeper.Keeper
36
- slashingKeeper slashingkeeper.Keeper
37
- )
38
-
39
- app , err := simtestutil .Setup (
40
- depinject .Configs (
41
- AppConfig ,
42
- depinject .Supply (log .NewNopLogger ()),
43
- ),
44
- & interfaceRegistry ,
45
- & accountKeeper ,
46
- & bankKeeper ,
47
- & stakingKeeper ,
48
- & slashingKeeper ,
49
- )
50
- require .NoError (t , err )
25
+ f := initFixture (t )
51
26
52
- ctx := app . BaseApp . NewContext ( false )
27
+ ctx := f . ctx
53
28
54
29
pks := simtestutil .CreateTestPubKeys (1 )
55
- simtestutil .AddTestAddrsFromPubKeys (bankKeeper , stakingKeeper , ctx , pks , stakingKeeper .TokensFromConsensusPower (ctx , 200 ))
30
+ simtestutil .AddTestAddrsFromPubKeys (f . bankKeeper , f . stakingKeeper , ctx , pks , f . stakingKeeper .TokensFromConsensusPower (ctx , 200 ))
56
31
addr , pk := sdk .ValAddress (pks [0 ].Address ()), pks [0 ]
57
- tstaking := stakingtestutil .NewHelper (t , ctx , stakingKeeper )
32
+ tstaking := stakingtestutil .NewHelper (t , ctx , f . stakingKeeper )
58
33
59
34
// bond the validator
60
35
power := int64 (100 )
61
- acc := accountKeeper .NewAccountWithAddress (ctx , sdk .AccAddress (addr ))
62
- accountKeeper .SetAccount (ctx , acc )
36
+ acc := f . accountKeeper .NewAccountWithAddress (ctx , sdk .AccAddress (addr ))
37
+ f . accountKeeper .SetAccount (ctx , acc )
63
38
amt := tstaking .CreateValidatorWithValPower (addr , pk , power , true )
64
- _ , err = stakingKeeper .EndBlocker (ctx )
39
+ _ , err := f . stakingKeeper .EndBlocker (ctx )
65
40
require .NoError (t , err )
66
- bondDenom , err := stakingKeeper .BondDenom (ctx )
41
+ bondDenom , err := f . stakingKeeper .BondDenom (ctx )
67
42
require .NoError (t , err )
68
43
require .Equal (
69
- t , bankKeeper .GetAllBalances (ctx , sdk .AccAddress (addr )),
44
+ t , f . bankKeeper .GetAllBalances (ctx , sdk .AccAddress (addr )),
70
45
sdk .NewCoins (sdk .NewCoin (bondDenom , testutil .InitTokens .Sub (amt ))),
71
46
)
72
- val , err := stakingKeeper .Validator (ctx , addr )
47
+ val , err := f . stakingKeeper .Validator (ctx , addr )
73
48
require .NoError (t , err )
74
49
require .Equal (t , amt , val .GetBondedTokens ())
75
50
@@ -78,57 +53,58 @@ func TestBeginBlocker(t *testing.T) {
78
53
Power : power ,
79
54
}
80
55
81
- ctx = ctx . WithCometInfo ( comet.Info {
56
+ ctx = integration . SetCometInfo ( ctx , comet.Info {
82
57
LastCommit : comet.CommitInfo {Votes : []comet.VoteInfo {{
83
58
Validator : abciVal ,
84
59
BlockIDFlag : comet .BlockIDFlagCommit ,
85
60
}}},
86
61
})
87
- cometInfoService := runtime . NewContextAwareCometInfoService ()
62
+ cometInfoService := & services. ContextAwareCometInfoService {}
88
63
89
- err = slashing .BeginBlocker (ctx , slashingKeeper , cometInfoService )
64
+ err = slashing .BeginBlocker (ctx , f . slashingKeeper , cometInfoService )
90
65
require .NoError (t , err )
91
66
92
- info , err := slashingKeeper .ValidatorSigningInfo .Get (ctx , sdk .ConsAddress (pk .Address ()))
67
+ info , err := f . slashingKeeper .ValidatorSigningInfo .Get (ctx , sdk .ConsAddress (pk .Address ()))
93
68
require .NoError (t , err )
94
- require .Equal (t , ctx . HeaderInfo ( ).Height , info .StartHeight )
69
+ require .Equal (t , integration . HeaderInfoFromContext ( ctx ).Height , info .StartHeight )
95
70
require .Equal (t , int64 (0 ), info .IndexOffset )
96
71
require .Equal (t , time .Unix (0 , 0 ).UTC (), info .JailedUntil )
97
72
require .Equal (t , int64 (0 ), info .MissedBlocksCounter )
98
73
99
74
height := int64 (0 )
100
75
101
- signedBlocksWindow , err := slashingKeeper .SignedBlocksWindow (ctx )
76
+ signedBlocksWindow , err := f . slashingKeeper .SignedBlocksWindow (ctx )
102
77
require .NoError (t , err )
103
78
// for 100 blocks, mark the validator as having signed
104
79
for ; height < signedBlocksWindow ; height ++ {
105
- ctx = ctx . WithHeaderInfo ( coreheader.Info {Height : height })
80
+ ctx = integration . SetHeaderInfo ( ctx , coreheader.Info {Height : height })
106
81
107
- err = slashing .BeginBlocker (ctx , slashingKeeper , cometInfoService )
82
+ err = slashing .BeginBlocker (ctx , f . slashingKeeper , cometInfoService )
108
83
require .NoError (t , err )
109
84
}
110
85
111
- minSignedPerWindow , err := slashingKeeper .MinSignedPerWindow (ctx )
86
+ minSignedPerWindow , err := f . slashingKeeper .MinSignedPerWindow (ctx )
112
87
require .NoError (t , err )
113
88
// for 50 blocks, mark the validator as having not signed
114
89
for ; height < ((signedBlocksWindow * 2 ) - minSignedPerWindow + 1 ); height ++ {
115
- ctx = ctx .WithHeaderInfo (coreheader.Info {Height : height }).WithCometInfo (comet.Info {
90
+ ctx = integration .SetHeaderInfo (ctx , coreheader.Info {Height : height })
91
+ ctx = integration .SetCometInfo (ctx , comet.Info {
116
92
LastCommit : comet.CommitInfo {Votes : []comet.VoteInfo {{
117
93
Validator : abciVal ,
118
94
BlockIDFlag : comet .BlockIDFlagAbsent ,
119
95
}}},
120
96
})
121
97
122
- err = slashing .BeginBlocker (ctx , slashingKeeper , cometInfoService )
98
+ err = slashing .BeginBlocker (ctx , f . slashingKeeper , cometInfoService )
123
99
require .NoError (t , err )
124
100
}
125
101
126
102
// end block
127
- _ , err = stakingKeeper .EndBlocker (ctx )
103
+ _ , err = f . stakingKeeper .EndBlocker (ctx )
128
104
require .NoError (t , err )
129
105
130
106
// validator should be jailed
131
- validator , err := stakingKeeper .GetValidatorByConsAddr (ctx , sdk .GetConsAddress (pk ))
107
+ validator , err := f . stakingKeeper .GetValidatorByConsAddr (ctx , sdk .GetConsAddress (pk ))
132
108
require .NoError (t , err )
133
109
require .Equal (t , sdk .Unbonding , validator .GetStatus ())
134
110
}
0 commit comments