mirror of
https://github.com/tendermint/tendermint.git
synced 2026-02-11 06:11:07 +00:00
* Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
126 lines
3.0 KiB
Go
126 lines
3.0 KiB
Go
package evidence
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/tendermint/tendermint/types"
|
|
dbm "github.com/tendermint/tm-db"
|
|
)
|
|
|
|
//-------------------------------------------
|
|
|
|
func TestStoreAddDuplicate(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
db := dbm.NewMemDB()
|
|
store := NewStore(db)
|
|
|
|
priority := int64(10)
|
|
ev := types.NewMockGoodEvidence(2, 1, []byte("val1"))
|
|
|
|
added := store.AddNewEvidence(ev, priority)
|
|
assert.True(added)
|
|
|
|
// cant add twice
|
|
added = store.AddNewEvidence(ev, priority)
|
|
assert.False(added)
|
|
}
|
|
|
|
func TestStoreCommitDuplicate(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
db := dbm.NewMemDB()
|
|
store := NewStore(db)
|
|
|
|
priority := int64(10)
|
|
ev := types.NewMockGoodEvidence(2, 1, []byte("val1"))
|
|
|
|
store.MarkEvidenceAsCommitted(ev)
|
|
|
|
added := store.AddNewEvidence(ev, priority)
|
|
assert.False(added)
|
|
}
|
|
|
|
func TestStoreMark(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
db := dbm.NewMemDB()
|
|
store := NewStore(db)
|
|
|
|
// before we do anything, priority/pending are empty
|
|
priorityEv := store.PriorityEvidence()
|
|
pendingEv := store.PendingEvidence(-1)
|
|
assert.Equal(0, len(priorityEv))
|
|
assert.Equal(0, len(pendingEv))
|
|
|
|
priority := int64(10)
|
|
ev := types.NewMockGoodEvidence(2, 1, []byte("val1"))
|
|
|
|
added := store.AddNewEvidence(ev, priority)
|
|
assert.True(added)
|
|
|
|
// get the evidence. verify. should be uncommitted
|
|
ei := store.GetInfo(ev.Height(), ev.Hash())
|
|
assert.Equal(ev, ei.Evidence)
|
|
assert.Equal(priority, ei.Priority)
|
|
assert.False(ei.Committed)
|
|
|
|
// new evidence should be returns in priority/pending
|
|
priorityEv = store.PriorityEvidence()
|
|
pendingEv = store.PendingEvidence(-1)
|
|
assert.Equal(1, len(priorityEv))
|
|
assert.Equal(1, len(pendingEv))
|
|
|
|
// priority is now empty
|
|
store.MarkEvidenceAsBroadcasted(ev)
|
|
priorityEv = store.PriorityEvidence()
|
|
pendingEv = store.PendingEvidence(-1)
|
|
assert.Equal(0, len(priorityEv))
|
|
assert.Equal(1, len(pendingEv))
|
|
|
|
// priority and pending are now empty
|
|
store.MarkEvidenceAsCommitted(ev)
|
|
priorityEv = store.PriorityEvidence()
|
|
pendingEv = store.PendingEvidence(-1)
|
|
assert.Equal(0, len(priorityEv))
|
|
assert.Equal(0, len(pendingEv))
|
|
|
|
// evidence should show committed
|
|
newPriority := int64(0)
|
|
ei = store.GetInfo(ev.Height(), ev.Hash())
|
|
assert.Equal(ev, ei.Evidence)
|
|
assert.Equal(newPriority, ei.Priority)
|
|
assert.True(ei.Committed)
|
|
}
|
|
|
|
func TestStorePriority(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
db := dbm.NewMemDB()
|
|
store := NewStore(db)
|
|
|
|
// sorted by priority and then height
|
|
cases := []struct {
|
|
ev types.MockGoodEvidence
|
|
priority int64
|
|
}{
|
|
{types.NewMockGoodEvidence(2, 1, []byte("val1")), 17},
|
|
{types.NewMockGoodEvidence(5, 2, []byte("val2")), 15},
|
|
{types.NewMockGoodEvidence(10, 2, []byte("val2")), 13},
|
|
{types.NewMockGoodEvidence(100, 2, []byte("val2")), 11},
|
|
{types.NewMockGoodEvidence(90, 2, []byte("val2")), 11},
|
|
{types.NewMockGoodEvidence(80, 2, []byte("val2")), 11},
|
|
}
|
|
|
|
for _, c := range cases {
|
|
added := store.AddNewEvidence(c.ev, c.priority)
|
|
assert.True(added)
|
|
}
|
|
|
|
evList := store.PriorityEvidence()
|
|
for i, ev := range evList {
|
|
assert.Equal(ev, cases[i].ev)
|
|
}
|
|
}
|