package client
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/tendermint/tendermint/abci/example/kvstore"
|
|
rpcclient "github.com/tendermint/tendermint/rpc/client"
|
|
rpctest "github.com/tendermint/tendermint/rpc/test"
|
|
"github.com/tendermint/tendermint/types"
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
app := kvstore.NewApplication()
|
|
node := rpctest.StartTendermint(app)
|
|
|
|
code := m.Run()
|
|
|
|
rpctest.StopTendermint(node)
|
|
os.Exit(code)
|
|
}
|
|
|
|
func TestProvider(t *testing.T) {
|
|
assert, require := assert.New(t), require.New(t)
|
|
|
|
cfg := rpctest.GetConfig()
|
|
defer os.RemoveAll(cfg.RootDir)
|
|
rpcAddr := cfg.RPC.ListenAddress
|
|
genDoc, err := types.GenesisDocFromFile(cfg.GenesisFile())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
chainID := genDoc.ChainID
|
|
t.Log("chainID:", chainID)
|
|
p := NewHTTPProvider(chainID, rpcAddr)
|
|
require.NotNil(t, p)
|
|
|
|
// let it produce some blocks
|
|
err = rpcclient.WaitForHeight(p.(*provider).client, 6, nil)
|
|
require.Nil(err)
|
|
|
|
// let's get the highest block
|
|
fc, err := p.LatestFullCommit(chainID, 1, 1<<63-1)
|
|
|
|
require.Nil(err, "%+v", err)
|
|
sh := fc.Height()
|
|
assert.True(sh < 5000)
|
|
|
|
// let's check this is valid somehow
|
|
assert.Nil(fc.ValidateFull(chainID))
|
|
|
|
// historical queries now work :)
|
|
lower := sh - 5
|
|
fc, err = p.LatestFullCommit(chainID, lower, lower)
|
|
assert.Nil(err, "%+v", err)
|
|
assert.Equal(lower, fc.Height())
|
|
|
|
}
|