tendermint/evidence/pool_test.go

49 lines
960 B
Go
Raw Normal View History

2017-11-19 20:22:25 -08:00
package evidence
import (
"sync"
"testing"
"github.com/stretchr/testify/assert"
2017-12-27 19:39:58 -08:00
sm "github.com/tendermint/tendermint/state"
2017-11-19 20:22:25 -08:00
"github.com/tendermint/tendermint/types"
dbm "github.com/tendermint/tmlibs/db"
)
2017-12-27 19:39:58 -08:00
var mockState = sm.State{}
2017-11-19 20:22:25 -08:00
func TestEvidencePool(t *testing.T) {
assert := assert.New(t)
2017-12-26 17:34:57 -08:00
params := types.EvidenceParams{}
2017-11-19 20:22:25 -08:00
store := NewEvidenceStore(dbm.NewMemDB())
2017-12-27 19:39:58 -08:00
pool := NewEvidencePool(params, store, mockState)
2017-11-19 20:22:25 -08:00
goodEvidence := newMockGoodEvidence(5, 1, []byte("val1"))
badEvidence := MockBadEvidence{goodEvidence}
err := pool.AddEvidence(badEvidence)
assert.NotNil(err)
var wg sync.WaitGroup
wg.Add(1)
go func() {
<-pool.EvidenceChan()
wg.Done()
}()
err = pool.AddEvidence(goodEvidence)
assert.Nil(err)
wg.Wait()
// if we send it again it wont fire on the chan
err = pool.AddEvidence(goodEvidence)
assert.Nil(err)
select {
case <-pool.EvidenceChan():
t.Fatal("unexpected read on EvidenceChan")
default:
}
}