-
Notifications
You must be signed in to change notification settings - Fork 0
/
genesis_mutators.go
96 lines (86 loc) · 3.07 KB
/
genesis_mutators.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package testing
import (
"encoding/json"
"fmt"
"testing"
"time"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/require"
"github.com/tidwall/gjson"
"github.com/tidwall/sjson"
poetypes "github.com/furyanrasta/furya/x/poe/types"
)
// SetPoEParamsMutator set params in genesis
func SetPoEParamsMutator(t *testing.T, params poetypes.Params) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
val, err := json.Marshal(params)
require.NoError(t, err)
state, err := sjson.SetRawBytes(genesis, "app_state.poe.params", val)
require.NoError(t, err)
return state
}
}
// SetGlobalMinFee set the passed coins to the global minimum fee
func SetGlobalMinFee(t *testing.T, fees ...sdk.DecCoin) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
coins := sdk.NewDecCoins(fees...)
require.NoError(t, coins.Validate())
val, err := json.Marshal(coins)
require.NoError(t, err)
state, err := sjson.SetRawBytes(genesis, "app_state.globalfee.params.minimum_gas_prices", val)
require.NoError(t, err)
return state
}
}
// SetAllEngagementPoints set the given value for all members of the engagement group (default = validators)
func SetAllEngagementPoints(t *testing.T, points int) GenesisMutator {
return func(raw []byte) []byte {
group := gjson.GetBytes(raw, "app_state.poe.seed_contracts.engagement").Array()
for i := range group {
var err error
raw, err = sjson.SetRawBytes(raw, fmt.Sprintf("app_state.poe.seed_contracts.engagement.%d.points", i), []byte(fmt.Sprintf(`"%d"`, points)))
require.NoError(t, err)
}
return raw
}
}
// SetEpochLength set the valset contract config to given epoch length
func SetEpochLength(t *testing.T, epoch time.Duration) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
state, err := sjson.SetRawBytes(genesis, "app_state.poe.seed_contracts.valset_contract_config.epoch_length", []byte(fmt.Sprintf("%q", epoch)))
require.NoError(t, err)
return state
}
}
// SetUnbondingPeriod set the stake contract config unbonding period
func SetUnbondingPeriod(t *testing.T, unbonding time.Duration) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
state, err := sjson.SetRawBytes(genesis, "app_state.poe.seed_contracts.stake_contract_config.unbonding_period", []byte(fmt.Sprintf("%q", unbonding)))
require.NoError(t, err)
return state
}
}
// SetBlockRewards set the valset contract config unbonding period
func SetBlockRewards(t *testing.T, amount sdk.Coin) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
bz, err := json.Marshal(amount)
require.NoError(t, err)
state, err := sjson.SetRawBytes(genesis, "app_state.poe.seed_contracts.valset_contract_config.epoch_reward", bz)
require.NoError(t, err)
return state
}
}
// SetConsensusMaxGas max gas that can be consumed in a block
func SetConsensusMaxGas(t *testing.T, max int) GenesisMutator {
return func(genesis []byte) []byte {
t.Helper()
state, err := sjson.SetRawBytes(genesis, "consensus_params.block.max_gas", []byte(fmt.Sprintf(`"%d"`, max)))
require.NoError(t, err)
return state
}
}