tendermint/types/priv_validator/socket_test.go

123 lines
2.6 KiB
Go
Raw Normal View History

2018-01-25 07:25:42 -08:00
package types
import (
"testing"
2018-02-06 08:39:10 -08:00
"time"
2018-01-25 07:25:42 -08:00
2018-01-29 06:39:26 -08:00
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
2018-01-25 07:25:42 -08:00
crypto "github.com/tendermint/go-crypto"
2018-02-06 08:39:10 -08:00
data "github.com/tendermint/go-wire/data"
2018-01-25 07:25:42 -08:00
"github.com/tendermint/tendermint/types"
"github.com/tendermint/tmlibs/log"
)
func TestPrivValidatorSocketServer(t *testing.T) {
var (
2018-01-29 06:39:26 -08:00
assert, require = assert.New(t), require.New(t)
2018-02-06 08:39:10 -08:00
chainID = "test-chain-secret"
2018-01-29 06:39:26 -08:00
logger = log.TestingLogger()
signer = types.GenSigner()
clientPrivKey = crypto.GenPrivKeyEd25519()
serverPrivKey = crypto.GenPrivKeyEd25519()
privVal = NewTestPrivValidator(signer)
pvss = NewPrivValidatorSocketServer(
2018-01-25 07:25:42 -08:00
logger,
chainID,
2018-01-31 05:48:56 -08:00
"127.0.0.1:0",
1,
2018-01-25 07:25:42 -08:00
privVal,
2018-01-29 06:39:26 -08:00
&serverPrivKey,
2018-01-25 07:25:42 -08:00
)
)
err := pvss.Start()
2018-01-29 06:39:26 -08:00
require.Nil(err)
defer pvss.Stop()
2018-01-25 07:25:42 -08:00
2018-01-29 06:39:26 -08:00
assert.True(pvss.IsRunning())
2018-01-25 07:25:42 -08:00
2018-01-29 06:39:26 -08:00
pvsc := NewPrivValidatorSocketClient(
logger,
pvss.listener.Addr().String(),
&clientPrivKey,
)
err = pvsc.Start()
require.Nil(err)
defer pvsc.Stop()
assert.True(pvsc.IsRunning())
2018-01-25 07:25:42 -08:00
2018-02-06 08:39:10 -08:00
assert.Equal(pvsc.Address(), data.Bytes(pvss.privVal.PubKey().Address()))
assert.Equal(pvsc.PubKey(), pvss.privVal.PubKey())
err = pvsc.SignProposal(chainID, &types.Proposal{
Timestamp: time.Now(),
})
require.Nil(err)
err = pvsc.SignVote(chainID, &types.Vote{
Timestamp: time.Now(),
Type: types.VoteTypePrecommit,
})
require.Nil(err)
err = pvsc.SignHeartbeat(chainID, &types.Heartbeat{})
require.Nil(err)
}
func TestPrivValidatorSocketServerWithoutSecret(t *testing.T) {
var (
assert, require = assert.New(t), require.New(t)
chainID = "test-chain-secret"
logger = log.TestingLogger()
signer = types.GenSigner()
privVal = NewTestPrivValidator(signer)
pvss = NewPrivValidatorSocketServer(
logger,
chainID,
"127.0.0.1:0",
1,
privVal,
nil,
)
)
err := pvss.Start()
require.Nil(err)
defer pvss.Stop()
assert.True(pvss.IsRunning())
pvsc := NewPrivValidatorSocketClient(
logger,
pvss.listener.Addr().String(),
nil,
)
err = pvsc.Start()
require.Nil(err)
defer pvsc.Stop()
assert.True(pvsc.IsRunning())
assert.Equal(pvsc.Address(), data.Bytes(pvss.privVal.PubKey().Address()))
assert.Equal(pvsc.PubKey(), pvss.privVal.PubKey())
err = pvsc.SignProposal(chainID, &types.Proposal{
Timestamp: time.Now(),
})
require.Nil(err)
err = pvsc.SignVote(chainID, &types.Vote{
Timestamp: time.Now(),
Type: types.VoteTypePrecommit,
})
require.Nil(err)
err = pvsc.SignHeartbeat(chainID, &types.Heartbeat{})
require.Nil(err)
2018-01-25 07:25:42 -08:00
}