Browse Source

JSON tests related changes (#4461)

* test functions take time.Now and other minor changes

* updated remaining test files

* Update validation_test.go

* fix typo

* go fmt

* import time

Co-authored-by: Marko <marbar3778@yahoo.com>
pull/4485/head
Shivani Joshi 5 years ago
committed by GitHub
parent
commit
78144306dd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 52 additions and 38 deletions
  1. +3
    -1
      blockchain/v0/reactor_test.go
  2. +4
    -1
      blockchain/v2/reactor_test.go
  3. +1
    -1
      consensus/byzantine_test.go
  4. +2
    -1
      consensus/replay_test.go
  5. +2
    -2
      libs/math/fraction.go
  6. +1
    -1
      state/helpers_test.go
  7. +8
    -1
      state/validation_test.go
  8. +0
    -1
      types/block.go
  9. +10
    -10
      types/block_test.go
  10. +16
    -15
      types/priv_validator.go
  11. +5
    -4
      types/test_util.go

+ 3
- 1
blockchain/v0/reactor_test.go View File

@ -97,7 +97,9 @@ func newBlockchainReactor(
lastBlockMeta.BlockID, lastBlockMeta.BlockID,
state.Validators, state.Validators,
privVals[0], privVals[0],
lastBlock.Header.ChainID)
lastBlock.Header.ChainID,
time.Now(),
)
if err != nil { if err != nil {
panic(err) panic(err)
} }


+ 4
- 1
blockchain/v2/reactor_test.go View File

@ -6,6 +6,7 @@ import (
"sort" "sort"
"sync" "sync"
"testing" "testing"
"time"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -494,7 +495,9 @@ func newReactorStore(
lastBlockMeta.BlockID, lastBlockMeta.BlockID,
state.Validators, state.Validators,
privVals[0], privVals[0],
lastBlock.Header.ChainID)
lastBlock.Header.ChainID,
time.Now(),
)
if err != nil { if err != nil {
panic(err) panic(err)
} }


+ 1
- 1
consensus/byzantine_test.go View File

@ -54,7 +54,7 @@ func TestByzantine(t *testing.T) {
if i == 0 { if i == 0 {
// NOTE: Now, test validators are MockPV, which by default doesn't // NOTE: Now, test validators are MockPV, which by default doesn't
// do any safety checks. // do any safety checks.
css[i].privValidator.(*types.MockPV).DisableChecks()
css[i].privValidator.(types.MockPV).DisableChecks()
css[i].decideProposal = func(j int) func(int64, int) { css[i].decideProposal = func(j int) func(int64, int) {
return func(height int64, round int) { return func(height int64, round int) {
byzantineDecideProposalFunc(t, height, round, css[j], switches[j]) byzantineDecideProposalFunc(t, height, round, css[j], switches[j])


+ 2
- 1
consensus/replay_test.go View File

@ -892,7 +892,8 @@ func makeBlock(state sm.State, lastBlock *types.Block, lastBlockMeta *types.Bloc
lastBlockMeta.BlockID, lastBlockMeta.BlockID,
state.Validators, state.Validators,
privVal, privVal,
lastBlock.Header.ChainID)
lastBlock.Header.ChainID,
time.Now())
lastCommit = types.NewCommit(vote.Height, vote.Round, lastCommit = types.NewCommit(vote.Height, vote.Round,
lastBlockMeta.BlockID, []types.CommitSig{vote.CommitSig()}) lastBlockMeta.BlockID, []types.CommitSig{vote.CommitSig()})
} }


+ 2
- 2
libs/math/fraction.go View File

@ -6,10 +6,10 @@ import "fmt"
// format. // format.
type Fraction struct { type Fraction struct {
// The portion of the denominator in the faction, e.g. 2 in 2/3. // The portion of the denominator in the faction, e.g. 2 in 2/3.
Numerator int64
Numerator int64 `json:"numerator"`
// The value by which the numerator is divided, e.g. 3 in 2/3. Must be // The value by which the numerator is divided, e.g. 3 in 2/3. Must be
// positive. // positive.
Denominator int64
Denominator int64 `json:"denominator"`
} }
func (fr Fraction) String() string { func (fr Fraction) String() string {


+ 1
- 1
state/helpers_test.go View File

@ -82,7 +82,7 @@ func makeValidCommit(
sigs := make([]types.CommitSig, 0) sigs := make([]types.CommitSig, 0)
for i := 0; i < vals.Size(); i++ { for i := 0; i < vals.Size(); i++ {
_, val := vals.GetByIndex(i) _, val := vals.GetByIndex(i)
vote, err := types.MakeVote(height, blockID, vals, privVals[val.Address.String()], chainID)
vote, err := types.MakeVote(height, blockID, vals, privVals[val.Address.String()], chainID, time.Now())
if err != nil { if err != nil {
return nil, err return nil, err
} }


+ 8
- 1
state/validation_test.go View File

@ -117,6 +117,7 @@ func TestValidateBlockCommit(t *testing.T) {
state.Validators, state.Validators,
privVals[proposerAddr.String()], privVals[proposerAddr.String()],
chainID, chainID,
time.Now(),
) )
require.NoError(t, err, "height %d", height) require.NoError(t, err, "height %d", height)
wrongHeightCommit := types.NewCommit( wrongHeightCommit := types.NewCommit(
@ -162,7 +163,13 @@ func TestValidateBlockCommit(t *testing.T) {
/* /*
wrongSigsCommit is fine except for the extra bad precommit wrongSigsCommit is fine except for the extra bad precommit
*/ */
goodVote, err := types.MakeVote(height, blockID, state.Validators, privVals[proposerAddr.String()], chainID)
goodVote, err := types.MakeVote(height,
blockID,
state.Validators,
privVals[proposerAddr.String()],
chainID,
time.Now(),
)
require.NoError(t, err, "height %d", height) require.NoError(t, err, "height %d", height)
badVote := &types.Vote{ badVote := &types.Vote{
ValidatorAddress: badPrivVal.GetPubKey().Address(), ValidatorAddress: badPrivVal.GetPubKey().Address(),


+ 0
- 1
types/block.go View File

@ -752,7 +752,6 @@ type SignedHeader struct {
// ValidateBasic does basic consistency checks and makes sure the header // ValidateBasic does basic consistency checks and makes sure the header
// and commit are consistent. // and commit are consistent.
//
// NOTE: This does not actually check the cryptographic signatures. Make // NOTE: This does not actually check the cryptographic signatures. Make
// sure to use a Verifier to validate the signatures actually provide a // sure to use a Verifier to validate the signatures actually provide a
// significantly strong proof for this header's validity. // significantly strong proof for this header's validity.


+ 10
- 10
types/block_test.go View File

@ -37,7 +37,7 @@ func TestBlockAddEvidence(t *testing.T) {
h := int64(3) h := int64(3)
voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
require.NoError(t, err) require.NoError(t, err)
ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address) ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address)
@ -57,7 +57,7 @@ func TestBlockValidateBasic(t *testing.T) {
h := int64(3) h := int64(3)
voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
require.NoError(t, err) require.NoError(t, err)
ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address) ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address)
@ -120,7 +120,7 @@ func TestBlockMakePartSetWithEvidence(t *testing.T) {
h := int64(3) h := int64(3)
voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
require.NoError(t, err) require.NoError(t, err)
ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address) ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address)
@ -137,7 +137,7 @@ func TestBlockHashesTo(t *testing.T) {
lastID := makeBlockIDRandom() lastID := makeBlockIDRandom()
h := int64(3) h := int64(3)
voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
require.NoError(t, err) require.NoError(t, err)
ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address) ev := NewMockEvidence(h, time.Now(), 0, valSet.Validators[0].Address)
@ -210,7 +210,7 @@ func TestCommit(t *testing.T) {
lastID := makeBlockIDRandom() lastID := makeBlockIDRandom()
h := int64(3) h := int64(3)
voteSet, _, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, _, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, h-1, commit.Height) assert.Equal(t, h-1, commit.Height)
@ -241,7 +241,7 @@ func TestCommitValidateBasic(t *testing.T) {
for _, tc := range testCases { for _, tc := range testCases {
tc := tc tc := tc
t.Run(tc.testName, func(t *testing.T) { t.Run(tc.testName, func(t *testing.T) {
com := randCommit()
com := randCommit(time.Now())
tc.malleateCommit(com) tc.malleateCommit(com)
assert.Equal(t, tc.expectErr, com.ValidateBasic() != nil, "Validate Basic had an unexpected result") assert.Equal(t, tc.expectErr, com.ValidateBasic() != nil, "Validate Basic had an unexpected result")
}) })
@ -348,11 +348,11 @@ func TestMaxHeaderBytes(t *testing.T) {
assert.EqualValues(t, MaxHeaderBytes, int64(len(bz))) assert.EqualValues(t, MaxHeaderBytes, int64(len(bz)))
} }
func randCommit() *Commit {
func randCommit(now time.Time) *Commit {
lastID := makeBlockIDRandom() lastID := makeBlockIDRandom()
h := int64(3) h := int64(3)
voteSet, _, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, _, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, now)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -431,7 +431,7 @@ func TestCommitToVoteSet(t *testing.T) {
h := int64(3) h := int64(3)
voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1) voteSet, valSet, vals := randVoteSet(h-1, 1, PrecommitType, 10, 1)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals)
commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals, time.Now())
assert.NoError(t, err) assert.NoError(t, err)
chainID := voteSet.ChainID() chainID := voteSet.ChainID()
@ -506,7 +506,7 @@ func TestCommitToVoteSetWithVotesForNilBlock(t *testing.T) {
} }
func TestSignedHeaderValidateBasic(t *testing.T) { func TestSignedHeaderValidateBasic(t *testing.T) {
commit := randCommit()
commit := randCommit(time.Now())
chainID := "𠜎" chainID := "𠜎"
timestamp := time.Date(math.MaxInt64, 0, 0, 0, 0, 0, math.MaxInt64, time.UTC) timestamp := time.Date(math.MaxInt64, 0, 0, 0, 0, 0, math.MaxInt64, time.UTC)
h := Header{ h := Header{


+ 16
- 15
types/priv_validator.go View File

@ -44,35 +44,35 @@ func (pvs PrivValidatorsByAddress) Swap(i, j int) {
// MockPV implements PrivValidator without any safety or persistence. // MockPV implements PrivValidator without any safety or persistence.
// Only use it for testing. // Only use it for testing.
type MockPV struct { type MockPV struct {
privKey crypto.PrivKey
PrivKey crypto.PrivKey
breakProposalSigning bool breakProposalSigning bool
breakVoteSigning bool breakVoteSigning bool
} }
func NewMockPV() *MockPV {
return &MockPV{ed25519.GenPrivKey(), false, false}
func NewMockPV() MockPV {
return MockPV{ed25519.GenPrivKey(), false, false}
} }
// NewMockPVWithParams allows one to create a MockPV instance, but with finer // NewMockPVWithParams allows one to create a MockPV instance, but with finer
// grained control over the operation of the mock validator. This is useful for // grained control over the operation of the mock validator. This is useful for
// mocking test failures. // mocking test failures.
func NewMockPVWithParams(privKey crypto.PrivKey, breakProposalSigning, breakVoteSigning bool) *MockPV {
return &MockPV{privKey, breakProposalSigning, breakVoteSigning}
func NewMockPVWithParams(privKey crypto.PrivKey, breakProposalSigning, breakVoteSigning bool) MockPV {
return MockPV{privKey, breakProposalSigning, breakVoteSigning}
} }
// Implements PrivValidator. // Implements PrivValidator.
func (pv *MockPV) GetPubKey() crypto.PubKey {
return pv.privKey.PubKey()
func (pv MockPV) GetPubKey() crypto.PubKey {
return pv.PrivKey.PubKey()
} }
// Implements PrivValidator. // Implements PrivValidator.
func (pv *MockPV) SignVote(chainID string, vote *Vote) error {
func (pv MockPV) SignVote(chainID string, vote *Vote) error {
useChainID := chainID useChainID := chainID
if pv.breakVoteSigning { if pv.breakVoteSigning {
useChainID = "incorrect-chain-id" useChainID = "incorrect-chain-id"
} }
signBytes := vote.SignBytes(useChainID) signBytes := vote.SignBytes(useChainID)
sig, err := pv.privKey.Sign(signBytes)
sig, err := pv.PrivKey.Sign(signBytes)
if err != nil { if err != nil {
return err return err
} }
@ -81,13 +81,13 @@ func (pv *MockPV) SignVote(chainID string, vote *Vote) error {
} }
// Implements PrivValidator. // Implements PrivValidator.
func (pv *MockPV) SignProposal(chainID string, proposal *Proposal) error {
func (pv MockPV) SignProposal(chainID string, proposal *Proposal) error {
useChainID := chainID useChainID := chainID
if pv.breakProposalSigning { if pv.breakProposalSigning {
useChainID = "incorrect-chain-id" useChainID = "incorrect-chain-id"
} }
signBytes := proposal.SignBytes(useChainID) signBytes := proposal.SignBytes(useChainID)
sig, err := pv.privKey.Sign(signBytes)
sig, err := pv.PrivKey.Sign(signBytes)
if err != nil { if err != nil {
return err return err
} }
@ -96,19 +96,19 @@ func (pv *MockPV) SignProposal(chainID string, proposal *Proposal) error {
} }
// String returns a string representation of the MockPV. // String returns a string representation of the MockPV.
func (pv *MockPV) String() string {
func (pv MockPV) String() string {
addr := pv.GetPubKey().Address() addr := pv.GetPubKey().Address()
return fmt.Sprintf("MockPV{%v}", addr) return fmt.Sprintf("MockPV{%v}", addr)
} }
// XXX: Implement. // XXX: Implement.
func (pv *MockPV) DisableChecks() {
func (pv MockPV) DisableChecks() {
// Currently this does nothing, // Currently this does nothing,
// as MockPV has no safety checks at all. // as MockPV has no safety checks at all.
} }
type ErroringMockPV struct { type ErroringMockPV struct {
*MockPV
MockPV
} }
var ErroringMockPVErr = errors.New("erroringMockPV always returns an error") var ErroringMockPVErr = errors.New("erroringMockPV always returns an error")
@ -124,6 +124,7 @@ func (pv *ErroringMockPV) SignProposal(chainID string, proposal *Proposal) error
} }
// NewErroringMockPV returns a MockPV that fails on each signing request. Again, for testing only. // NewErroringMockPV returns a MockPV that fails on each signing request. Again, for testing only.
func NewErroringMockPV() *ErroringMockPV { func NewErroringMockPV() *ErroringMockPV {
return &ErroringMockPV{&MockPV{ed25519.GenPrivKey(), false, false}}
return &ErroringMockPV{MockPV{ed25519.GenPrivKey(), false, false}}
} }

+ 5
- 4
types/test_util.go View File

@ -1,11 +1,11 @@
package types package types
import ( import (
tmtime "github.com/tendermint/tendermint/types/time"
"time"
) )
func MakeCommit(blockID BlockID, height int64, round int, func MakeCommit(blockID BlockID, height int64, round int,
voteSet *VoteSet, validators []PrivValidator) (*Commit, error) {
voteSet *VoteSet, validators []PrivValidator, now time.Time) (*Commit, error) {
// all sign // all sign
for i := 0; i < len(validators); i++ { for i := 0; i < len(validators); i++ {
@ -17,7 +17,7 @@ func MakeCommit(blockID BlockID, height int64, round int,
Round: round, Round: round,
Type: PrecommitType, Type: PrecommitType,
BlockID: blockID, BlockID: blockID,
Timestamp: tmtime.Now(),
Timestamp: now,
} }
_, err := signAddVote(validators[i], vote, voteSet) _, err := signAddVote(validators[i], vote, voteSet)
@ -43,6 +43,7 @@ func MakeVote(
valSet *ValidatorSet, valSet *ValidatorSet,
privVal PrivValidator, privVal PrivValidator,
chainID string, chainID string,
now time.Time,
) (*Vote, error) { ) (*Vote, error) {
addr := privVal.GetPubKey().Address() addr := privVal.GetPubKey().Address()
idx, _ := valSet.GetByAddress(addr) idx, _ := valSet.GetByAddress(addr)
@ -51,7 +52,7 @@ func MakeVote(
ValidatorIndex: idx, ValidatorIndex: idx,
Height: height, Height: height,
Round: 0, Round: 0,
Timestamp: tmtime.Now(),
Timestamp: now,
Type: PrecommitType, Type: PrecommitType,
BlockID: blockID, BlockID: blockID,
} }


Loading…
Cancel
Save