mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-16 20:26:12 +00:00
Fix/improve unit tests
This commit is contained in:
@@ -49,7 +49,7 @@ var _ error = (*TestHarnessError)(nil)
|
||||
// with this version of Tendermint.
|
||||
type TestHarness struct {
|
||||
addr string
|
||||
spv *privval.SignerClient
|
||||
signerClient *privval.SignerClient
|
||||
fpv *privval.FilePV
|
||||
chainID string
|
||||
acceptRetries int
|
||||
@@ -106,9 +106,14 @@ func NewTestHarness(logger log.Logger, cfg TestHarnessConfig) (*TestHarness, err
|
||||
return nil, newTestHarnessError(ErrFailedToCreateListener, err, "")
|
||||
}
|
||||
|
||||
signerClient, err:= privval.NewSignerClient(spv)
|
||||
if err!=nil {
|
||||
return nil, newTestHarnessError(ErrFailedToCreateListener, err, "")
|
||||
}
|
||||
|
||||
return &TestHarness{
|
||||
addr: cfg.BindAddr,
|
||||
spv: spv,
|
||||
signerClient: signerClient,
|
||||
fpv: fpv,
|
||||
chainID: st.ChainID,
|
||||
acceptRetries: cfg.AcceptRetries,
|
||||
@@ -135,9 +140,11 @@ func (th *TestHarness) Run() {
|
||||
th.logger.Info("Starting test harness")
|
||||
accepted := false
|
||||
var startErr error
|
||||
|
||||
for acceptRetries := th.acceptRetries; acceptRetries > 0; acceptRetries-- {
|
||||
th.logger.Info("Attempting to accept incoming connection", "acceptRetries", acceptRetries)
|
||||
if err := th.spv.Start(); err != nil {
|
||||
|
||||
if err := th.signerClient.WaitForConnection(5 * time.Second); err != nil {
|
||||
// if it wasn't a timeout error
|
||||
if _, ok := err.(timeoutError); !ok {
|
||||
th.logger.Error("Failed to start listener", "err", err)
|
||||
@@ -182,8 +189,8 @@ func (th *TestHarness) Run() {
|
||||
func (th *TestHarness) TestPublicKey() error {
|
||||
th.logger.Info("TEST: Public key of remote signer")
|
||||
th.logger.Info("Local", "pubKey", th.fpv.GetPubKey())
|
||||
th.logger.Info("Remote", "pubKey", th.spv.GetPubKey())
|
||||
if th.fpv.GetPubKey() != th.spv.GetPubKey() {
|
||||
th.logger.Info("Remote", "pubKey", th.signerClient.GetPubKey())
|
||||
if th.fpv.GetPubKey() != th.signerClient.GetPubKey() {
|
||||
th.logger.Error("FAILED: Local and remote public keys do not match")
|
||||
return newTestHarnessError(ErrTestPublicKeyFailed, nil, "")
|
||||
}
|
||||
@@ -211,7 +218,7 @@ func (th *TestHarness) TestSignProposal() error {
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
propBytes := prop.SignBytes(th.chainID)
|
||||
if err := th.spv.SignProposal(th.chainID, prop); err != nil {
|
||||
if err := th.signerClient.SignProposal(th.chainID, prop); err != nil {
|
||||
th.logger.Error("FAILED: Signing of proposal", "err", err)
|
||||
return newTestHarnessError(ErrTestSignProposalFailed, err, "")
|
||||
}
|
||||
@@ -222,7 +229,7 @@ func (th *TestHarness) TestSignProposal() error {
|
||||
return newTestHarnessError(ErrTestSignProposalFailed, err, "")
|
||||
}
|
||||
// now validate the signature on the proposal
|
||||
if th.spv.GetPubKey().VerifyBytes(propBytes, prop.Signature) {
|
||||
if th.signerClient.GetPubKey().VerifyBytes(propBytes, prop.Signature) {
|
||||
th.logger.Info("Successfully validated proposal signature")
|
||||
} else {
|
||||
th.logger.Error("FAILED: Proposal signature validation failed")
|
||||
@@ -255,7 +262,7 @@ func (th *TestHarness) TestSignVote() error {
|
||||
}
|
||||
voteBytes := vote.SignBytes(th.chainID)
|
||||
// sign the vote
|
||||
if err := th.spv.SignVote(th.chainID, vote); err != nil {
|
||||
if err := th.signerClient.SignVote(th.chainID, vote); err != nil {
|
||||
th.logger.Error("FAILED: Signing of vote", "err", err)
|
||||
return newTestHarnessError(ErrTestSignVoteFailed, err, fmt.Sprintf("voteType=%d", voteType))
|
||||
}
|
||||
@@ -266,7 +273,7 @@ func (th *TestHarness) TestSignVote() error {
|
||||
return newTestHarnessError(ErrTestSignVoteFailed, err, fmt.Sprintf("voteType=%d", voteType))
|
||||
}
|
||||
// now validate the signature on the proposal
|
||||
if th.spv.GetPubKey().VerifyBytes(voteBytes, vote.Signature) {
|
||||
if th.signerClient.GetPubKey().VerifyBytes(voteBytes, vote.Signature) {
|
||||
th.logger.Info("Successfully validated vote signature", "type", voteType)
|
||||
} else {
|
||||
th.logger.Error("FAILED: Vote signature validation failed", "type", voteType)
|
||||
@@ -301,10 +308,9 @@ func (th *TestHarness) Shutdown(err error) {
|
||||
}()
|
||||
}
|
||||
|
||||
if th.spv.IsRunning() {
|
||||
if err := th.spv.Stop(); err != nil {
|
||||
th.logger.Error("Failed to cleanly stop listener: %s", err.Error())
|
||||
}
|
||||
err = th.signerClient.Close()
|
||||
if err != nil {
|
||||
th.logger.Error("Failed to cleanly stop listener: %s", err.Error())
|
||||
}
|
||||
|
||||
if th.exitWhenComplete {
|
||||
|
||||
Reference in New Issue
Block a user