Browse Source

tools/tm-signer-harness: switch to not use hardcoded bytes for configs in test (#7362)

The current testing for this tool relies on hardcoding a set of configs into the tests. This means that when the config structure changes, the tests break. I'm not sure that this makes sense since we are separately testing our ability to read and validate the configuration file format. Hardcoding bytes into a different file duplicates this. Using the structs themselves should therefore be preferred.
pull/7370/head
William Banfield 3 years ago
committed by GitHub
parent
commit
f6c39126ed
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 56 deletions
  1. +32
    -56
      tools/tm-signer-harness/internal/test_harness_test.go

+ 32
- 56
tools/tm-signer-harness/internal/test_harness_test.go View File

@ -12,64 +12,14 @@ import (
"github.com/tendermint/tendermint/crypto"
"github.com/tendermint/tendermint/crypto/ed25519"
tmjson "github.com/tendermint/tendermint/libs/json"
"github.com/tendermint/tendermint/libs/log"
tmrand "github.com/tendermint/tendermint/libs/rand"
"github.com/tendermint/tendermint/privval"
"github.com/tendermint/tendermint/types"
)
const (
keyFileContents = `{
"address": "D08FCA3BA74CF17CBFC15E64F9505302BB0E2748",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "ZCsuTjaczEyon70nmKxwvwu+jqrbq5OH3yQjcK0SFxc="
},
"priv_key": {
"type": "tendermint/PrivKeyEd25519",
"value": "8O39AkQsoe1sBQwud/Kdul8lg8K9SFsql9aZvwXQSt1kKy5ONpzMTKifvSeYrHC/C76Oqturk4ffJCNwrRIXFw=="
}
}`
stateFileContents = `{
"height": "0",
"round": 0,
"step": 0
}`
genesisFileContents = `{
"genesis_time": "2019-01-15T11:56:34.8963Z",
"chain_id": "test-chain-0XwP5E",
"consensus_params": {
"block": {
"max_bytes": "22020096",
"max_gas": "-1",
"time_iota_ms": "1000"
},
"evidence": {
"max_age_num_blocks": "100000",
"max_age_duration": "172800000000000",
"max_num": 50
},
"validator": {
"pub_key_types": [
"ed25519"
]
}
},
"validators": [
{
"address": "D08FCA3BA74CF17CBFC15E64F9505302BB0E2748",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "ZCsuTjaczEyon70nmKxwvwu+jqrbq5OH3yQjcK0SFxc="
},
"power": "10",
"name": ""
}
],
"app_hash": ""
}`
defaultConnDeadline = 100
)
@ -191,10 +141,36 @@ func harnessTest(
}
func makeConfig(t *testing.T, acceptDeadline, acceptRetries int) TestHarnessConfig {
t.Helper()
const keyFilename = "tm-testharness-keyfile"
const stateFilename = "tm-testharness-statefile"
pvFile, err := privval.GenFilePV(keyFilename, stateFilename, types.ABCIPubKeyTypeEd25519)
if err != nil {
panic(err)
}
pvGenDoc := types.GenesisDoc{
ChainID: fmt.Sprintf("test-chain-%v", tmrand.Str(6)),
GenesisTime: time.Now(),
ConsensusParams: types.DefaultConsensusParams(),
Validators: []types.GenesisValidator{
{
Address: pvFile.Key.Address,
PubKey: pvFile.Key.PubKey,
Power: 10,
},
},
}
keyFileContents, err := tmjson.Marshal(pvFile.Key)
require.NoError(t, err)
stateFileContents, err := tmjson.Marshal(pvFile.LastSignState)
require.NoError(t, err)
genesisFileContents, err := tmjson.Marshal(pvGenDoc)
require.NoError(t, err)
return TestHarnessConfig{
BindAddr: privval.GetFreeLocalhostAddrPort(),
KeyFile: makeTempFile("tm-testharness-keyfile", keyFileContents),
StateFile: makeTempFile("tm-testharness-statefile", stateFileContents),
KeyFile: makeTempFile(keyFilename, keyFileContents),
StateFile: makeTempFile(stateFilename, stateFileContents),
GenesisFile: makeTempFile("tm-testharness-genesisfile", genesisFileContents),
AcceptDeadline: time.Duration(acceptDeadline) * time.Millisecond,
ConnDeadline: time.Duration(defaultConnDeadline) * time.Millisecond,
@ -210,12 +186,12 @@ func cleanup(cfg TestHarnessConfig) {
os.Remove(cfg.GenesisFile)
}
func makeTempFile(name, content string) string {
func makeTempFile(name string, content []byte) string {
tempFile, err := os.CreateTemp("", fmt.Sprintf("%s-*", name))
if err != nil {
panic(err)
}
if _, err := tempFile.Write([]byte(content)); err != nil {
if _, err := tempFile.Write(content); err != nil {
tempFile.Close()
panic(err)
}


Loading…
Cancel
Save