47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
package systemtests
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/cometbft/cometbft/privval"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
|
|
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
|
)
|
|
|
|
// LoadValidatorPubKeyForNode load validator nodes consensus pub key for given node number
|
|
func LoadValidatorPubKeyForNode(t *testing.T, sut *SystemUnderTest, nodeNumber int) cryptotypes.PubKey {
|
|
t.Helper()
|
|
return LoadValidatorPubKey(t, filepath.Join(WorkDir, sut.nodePath(nodeNumber), "config", "priv_validator_key.json"))
|
|
}
|
|
|
|
// LoadValidatorPubKey load validator nodes consensus pub key from disk
|
|
func LoadValidatorPubKey(t *testing.T, keyFile string) cryptotypes.PubKey {
|
|
t.Helper()
|
|
filePV := privval.LoadFilePVEmptyState(keyFile, "")
|
|
pubKey, err := filePV.GetPubKey()
|
|
require.NoError(t, err)
|
|
valPubKey, err := cryptocodec.FromCmtPubKeyInterface(pubKey)
|
|
require.NoError(t, err)
|
|
return valPubKey
|
|
}
|
|
|
|
// QueryCometValidatorPowerForNode returns the validator's power from tendermint RPC endpoint. 0 when not found
|
|
func QueryCometValidatorPowerForNode(t *testing.T, sut *SystemUnderTest, nodeNumber int) int64 {
|
|
t.Helper()
|
|
pubKebBz := LoadValidatorPubKeyForNode(t, sut, nodeNumber).Bytes()
|
|
return QueryCometValidatorPower(sut.RPCClient(t), pubKebBz)
|
|
}
|
|
|
|
func QueryCometValidatorPower(c RPCClient, pubKebBz []byte) int64 {
|
|
for _, v := range c.Validators() {
|
|
if bytes.Equal(v.PubKey.Bytes(), pubKebBz) {
|
|
return v.VotingPower
|
|
}
|
|
}
|
|
return 0
|
|
}
|