Encapsulating and fixing unit tests

This commit is contained in:
Juan Leni
2019-04-03 14:15:50 +02:00
parent 07501137c4
commit d9b3001d13
15 changed files with 122 additions and 103 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ func main() {
os.Exit(1)
}
rs := privval.NewSignerServiceEndpoint(logger, *chainID, pv, dialer)
rs := privval.NewSignerDialerEndpoint(logger, *chainID, pv, dialer)
err := rs.Start()
if err != nil {
panic(err)
+6 -26
View File
@@ -16,12 +16,11 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/rs/cors"
amino "github.com/tendermint/go-amino"
"github.com/tendermint/go-amino"
abci "github.com/tendermint/tendermint/abci/types"
bc "github.com/tendermint/tendermint/blockchain"
cfg "github.com/tendermint/tendermint/config"
cs "github.com/tendermint/tendermint/consensus"
"github.com/tendermint/tendermint/crypto/ed25519"
"github.com/tendermint/tendermint/evidence"
cmn "github.com/tendermint/tendermint/libs/common"
dbm "github.com/tendermint/tendermint/libs/db"
@@ -926,33 +925,14 @@ func saveGenesisDoc(db dbm.DB, genDoc *types.GenesisDoc) {
db.SetSync(genesisDocKey, bytes)
}
func createAndStartPrivValidatorSocketClient(
listenAddr string,
logger log.Logger,
) (types.PrivValidator, error) {
var listener net.Listener
protocol, address := cmn.ProtocolAndAddress(listenAddr)
ln, err := net.Listen(protocol, address)
func createAndStartPrivValidatorSocketClient(listenAddr string, logger log.Logger) (types.PrivValidator, error) {
pve, err := privval.NewSignerListener(listenAddr, logger)
if err != nil {
return nil, err
}
switch protocol {
case "unix":
listener = privval.NewUnixListener(ln)
case "tcp":
// TODO: persist this key so external signer
// can actually authenticate us
listener = privval.NewTCPListener(ln, ed25519.GenPrivKey())
default:
return nil, fmt.Errorf(
"Wrong listen address: expected either 'tcp' or 'unix' protocols, got %s",
protocol,
)
return nil, errors.Wrap(err, "failed to start private validator")
}
pvsc := privval.NewSignerValidatorEndpoint(logger.With("module", "privval"), listener)
if err := pvsc.Start(); err != nil {
pvsc, err := privval.NewSignerRemote(pve)
if err != nil {
return nil, errors.Wrap(err, "failed to start private validator")
}
+2 -2
View File
@@ -132,7 +132,7 @@ func TestNodeSetPrivValTCP(t *testing.T) {
config.BaseConfig.PrivValidatorListenAddr = addr
dialer := privval.DialTCPFn(addr, 100*time.Millisecond, ed25519.GenPrivKey())
pvsc := privval.NewSignerServiceEndpoint(
pvsc := privval.NewSignerDialerEndpoint(
log.TestingLogger(),
config.ChainID(),
types.NewMockPV(),
@@ -174,7 +174,7 @@ func TestNodeSetPrivValIPC(t *testing.T) {
config.BaseConfig.PrivValidatorListenAddr = "unix://" + tmpfile
dialer := privval.DialUnixFn(tmpfile)
pvsc := privval.NewSignerServiceEndpoint(
pvsc := privval.NewSignerDialerEndpoint(
log.TestingLogger(),
config.ChainID(),
types.NewMockPV(),
+6 -6
View File
@@ -6,16 +6,16 @@ FilePV
FilePV is the simplest implementation and developer default. It uses one file for the private key and another to store state.
SignerValidatorEndpoint
SignerListenerEndpoint
SignerValidatorEndpoint establishes a connection to an external process, like a Key Management Server (KMS), using a socket.
SignerValidatorEndpoint listens for the external KMS process to dial in.
SignerValidatorEndpoint takes a listener, which determines the type of connection
SignerListenerEndpoint establishes a connection to an external process, like a Key Management Server (KMS), using a socket.
SignerListenerEndpoint listens for the external KMS process to dial in.
SignerListenerEndpoint takes a listener, which determines the type of connection
(ie. encrypted over tcp, or unencrypted over unix).
SignerServiceEndpoint
SignerDialerEndpoint
SignerServiceEndpoint is a simple wrapper around a net.Conn. It's used by both IPCVal and TCPVal.
SignerDialerEndpoint is a simple wrapper around a net.Conn. It's used by both IPCVal and TCPVal.
*/
package privval
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"github.com/tendermint/tendermint/types"
)
// RemoteSignerMsg is sent between SignerServiceEndpoint and the SignerServiceEndpoint client.
// RemoteSignerMsg is sent between SignerDialerEndpoint and the SignerDialerEndpoint client.
type RemoteSignerMsg interface{}
func RegisterRemoteSignerMsg(cdc *amino.Codec) {
@@ -10,23 +10,25 @@ import (
"github.com/tendermint/tendermint/types"
)
// SignerServiceEndpointOption sets an optional parameter on the SignerServiceEndpoint.
type SignerServiceEndpointOption func(*SignerServiceEndpoint)
// SignerServiceEndpointOption sets an optional parameter on the SignerDialerEndpoint.
type SignerServiceEndpointOption func(*SignerDialerEndpoint)
// SignerServiceEndpointTimeoutReadWrite sets the read and write timeout for connections
// from external signing processes.
func SignerServiceEndpointTimeoutReadWrite(timeout time.Duration) SignerServiceEndpointOption {
return func(ss *SignerServiceEndpoint) { ss.timeoutReadWrite = timeout }
return func(ss *SignerDialerEndpoint) { ss.timeoutReadWrite = timeout }
}
// SignerServiceEndpointConnRetries sets the amount of attempted retries to connect.
func SignerServiceEndpointConnRetries(retries int) SignerServiceEndpointOption {
return func(ss *SignerServiceEndpoint) { ss.connRetries = retries }
return func(ss *SignerDialerEndpoint) { ss.connRetries = retries }
}
// SignerServiceEndpoint dials using its dialer and responds to any
// TODO: Create a type for a signerEndpoint (common for both listener/dialer)
// SignerDialerEndpoint dials using its dialer and responds to any
// signature requests using its privVal.
type SignerServiceEndpoint struct {
type SignerDialerEndpoint struct {
cmn.BaseService
chainID string
@@ -38,16 +40,16 @@ type SignerServiceEndpoint struct {
conn net.Conn
}
// NewSignerServiceEndpoint returns a SignerServiceEndpoint that will dial using the given
// NewSignerDialerEndpoint returns a SignerDialerEndpoint that will dial using the given
// dialer and respond to any signature requests over the connection
// using the given privVal.
func NewSignerServiceEndpoint(
func NewSignerDialerEndpoint(
logger log.Logger,
chainID string,
privVal types.PrivValidator,
dialer SocketDialer,
) *SignerServiceEndpoint {
se := &SignerServiceEndpoint{
) *SignerDialerEndpoint {
se := &SignerDialerEndpoint{
chainID: chainID,
timeoutReadWrite: time.Second * defaultTimeoutReadWriteSeconds,
connRetries: defaultMaxDialRetries,
@@ -55,12 +57,12 @@ func NewSignerServiceEndpoint(
dialer: dialer,
}
se.BaseService = *cmn.NewBaseService(logger, "SignerServiceEndpoint", se)
se.BaseService = *cmn.NewBaseService(logger, "SignerDialerEndpoint", se)
return se
}
// OnStart implements cmn.Service.
func (ss *SignerServiceEndpoint) OnStart() error {
func (ss *SignerDialerEndpoint) OnStart() error {
conn, err := ss.connect()
if err != nil {
ss.Logger.Error("OnStart", "err", err)
@@ -74,7 +76,7 @@ func (ss *SignerServiceEndpoint) OnStart() error {
}
// OnStop implements cmn.Service.
func (ss *SignerServiceEndpoint) OnStop() {
func (ss *SignerDialerEndpoint) OnStop() {
if ss.conn == nil {
return
}
@@ -84,7 +86,7 @@ func (ss *SignerServiceEndpoint) OnStop() {
}
}
func (ss *SignerServiceEndpoint) connect() (net.Conn, error) {
func (ss *SignerDialerEndpoint) connect() (net.Conn, error) {
for retries := 0; retries < ss.connRetries; retries++ {
// Don't sleep if it is the first retry.
if retries > 0 {
@@ -102,7 +104,7 @@ func (ss *SignerServiceEndpoint) connect() (net.Conn, error) {
return nil, ErrDialRetryMax
}
func (ss *SignerServiceEndpoint) readMessage() (msg RemoteSignerMsg, err error) {
func (ss *SignerDialerEndpoint) readMessage() (msg RemoteSignerMsg, err error) {
// TODO: Avoid duplication
// TODO: Check connection status
@@ -115,7 +117,7 @@ func (ss *SignerServiceEndpoint) readMessage() (msg RemoteSignerMsg, err error)
return
}
func (ss *SignerServiceEndpoint) writeMessage(msg RemoteSignerMsg) (err error) {
func (ss *SignerDialerEndpoint) writeMessage(msg RemoteSignerMsg) (err error) {
// TODO: Avoid duplication
// TODO: Check connection status
@@ -130,7 +132,7 @@ func (ss *SignerServiceEndpoint) writeMessage(msg RemoteSignerMsg) (err error) {
return
}
func (ss *SignerServiceEndpoint) handleConnection(conn net.Conn) {
func (ss *SignerDialerEndpoint) handleConnection(conn net.Conn) {
for {
if !ss.IsRunning() {
return // Ignore error from listener closing.
@@ -20,15 +20,14 @@ var (
)
// SignerValidatorEndpointOption sets an optional parameter on the SocketVal.
type SignerValidatorEndpointOption func(*SignerValidatorEndpoint)
type SignerValidatorEndpointOption func(*SignerListenerEndpoint)
// SignerValidatorEndpointSetHeartbeat sets the period on which to check the liveness of the
// connected Signer connections.
func SignerValidatorEndpointSetHeartbeat(period time.Duration) SignerValidatorEndpointOption {
return func(sc *SignerValidatorEndpoint) { sc.heartbeatPeriod = period }
return func(sc *SignerListenerEndpoint) { sc.heartbeatPeriod = period }
}
// TODO: Add a type for SignerEndpoints
// getConnection
// connect
@@ -40,12 +39,12 @@ func SignerValidatorEndpointSetHeartbeat(period time.Duration) SignerValidatorEn
// SocketVal implements PrivValidator.
// It listens for an external process to dial in and uses
// the socket to request signatures.
type SignerValidatorEndpoint struct {
type SignerListenerEndpoint struct {
cmn.BaseService
mtx sync.Mutex
mtx sync.Mutex
listener net.Listener
conn net.Conn
conn net.Conn
// ping
cancelPingCh chan struct{}
@@ -53,20 +52,20 @@ type SignerValidatorEndpoint struct {
heartbeatPeriod time.Duration
}
// NewSignerValidatorEndpoint returns an instance of SignerValidatorEndpoint.
func NewSignerValidatorEndpoint(logger log.Logger, listener net.Listener) *SignerValidatorEndpoint {
sc := &SignerValidatorEndpoint{
// NewSignerListenerEndpoint returns an instance of SignerListenerEndpoint.
func NewSignerListenerEndpoint(logger log.Logger, listener net.Listener) *SignerListenerEndpoint {
sc := &SignerListenerEndpoint{
listener: listener,
heartbeatPeriod: heartbeatPeriod,
}
sc.BaseService = *cmn.NewBaseService(logger, "SignerValidatorEndpoint", sc)
sc.BaseService = *cmn.NewBaseService(logger, "SignerListenerEndpoint", sc)
return sc
}
// OnStart implements cmn.Service.
func (ve *SignerValidatorEndpoint) OnStart() error {
func (ve *SignerListenerEndpoint) OnStart() error {
closed, err := ve.connect()
// TODO: Improve. Connection state should be kept in a variable
@@ -118,7 +117,7 @@ func (ve *SignerValidatorEndpoint) OnStart() error {
}
// OnStop implements cmn.Service.
func (ve *SignerValidatorEndpoint) OnStop() {
func (ve *SignerListenerEndpoint) OnStop() {
if ve.cancelPingCh != nil {
close(ve.cancelPingCh)
}
@@ -126,7 +125,7 @@ func (ve *SignerValidatorEndpoint) OnStop() {
}
// Close closes the underlying net.Conn.
func (ve *SignerValidatorEndpoint) Close() error {
func (ve *SignerListenerEndpoint) Close() error {
ve.mtx.Lock()
defer ve.mtx.Unlock()
@@ -148,7 +147,7 @@ func (ve *SignerValidatorEndpoint) Close() error {
}
// SendRequest sends a request and waits for a response
func (ve *SignerValidatorEndpoint) SendRequest(request RemoteSignerMsg) (RemoteSignerMsg, error) {
func (ve *SignerListenerEndpoint) SendRequest(request RemoteSignerMsg) (RemoteSignerMsg, error) {
ve.mtx.Lock()
defer ve.mtx.Unlock()
@@ -166,7 +165,7 @@ func (ve *SignerValidatorEndpoint) SendRequest(request RemoteSignerMsg) (RemoteS
}
// Ping is used to check connection health.
func (ve *SignerValidatorEndpoint) ping() error {
func (ve *SignerListenerEndpoint) ping() error {
response, err := ve.SendRequest(&PingRequest{})
if err != nil {
@@ -181,7 +180,7 @@ func (ve *SignerValidatorEndpoint) ping() error {
return nil
}
func (ve *SignerValidatorEndpoint) readMessage() (msg RemoteSignerMsg, err error) {
func (ve *SignerListenerEndpoint) readMessage() (msg RemoteSignerMsg, err error) {
// TODO: Check connection status
const maxRemoteSignerMsgSize = 1024 * 10
@@ -193,7 +192,7 @@ func (ve *SignerValidatorEndpoint) readMessage() (msg RemoteSignerMsg, err error
return
}
func (ve *SignerValidatorEndpoint) writeMessage(msg RemoteSignerMsg) (err error) {
func (ve *SignerListenerEndpoint) writeMessage(msg RemoteSignerMsg) (err error) {
// TODO: Check connection status
if ve.conn == nil {
return fmt.Errorf("endpoint is not connected")
@@ -211,7 +210,7 @@ func (ve *SignerValidatorEndpoint) writeMessage(msg RemoteSignerMsg) (err error)
// connection is closed in OnStop.
// returns true if the listener is closed (ie. it returns a nil conn).
// TODO: Improve this
func (ve *SignerValidatorEndpoint) connect() (closed bool, err error) {
func (ve *SignerListenerEndpoint) connect() (closed bool, err error) {
ve.mtx.Lock()
defer ve.mtx.Unlock()
@@ -247,7 +246,7 @@ func (ve *SignerValidatorEndpoint) connect() (closed bool, err error) {
// acceptConnection attempts to accept a connection
// it will timeout after the listener's timeoutAccept
// TODO: There is no reason for this separate accept
func (ve *SignerValidatorEndpoint) acceptConnection() (net.Conn, error) {
func (ve *SignerListenerEndpoint) acceptConnection() (net.Conn, error) {
conn, err := ve.listener.Accept()
if err != nil {
if !ve.IsRunning() {
@@ -31,7 +31,7 @@ type dialerTestCase struct {
// TestSignerRemoteRetryTCPOnly will test connection retry attempts over TCP. We
// don't need this for Unix sockets because the OS instantly knows the state of
// both ends of the socket connection. This basically causes the
// SignerServiceEndpoint.dialer() call inside SignerServiceEndpoint.connect() to return
// SignerDialerEndpoint.dialer() call inside SignerDialerEndpoint.connect() to return
// successfully immediately, putting an instant stop to any retry attempts.
func TestSignerRemoteRetryTCPOnly(t *testing.T) {
var (
@@ -61,7 +61,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
}
}(ln, attemptCh)
serviceEndpoint := NewSignerServiceEndpoint(
serviceEndpoint := NewSignerDialerEndpoint(
log.TestingLogger(),
common.RandStr(12),
types.NewMockPV(),
@@ -91,7 +91,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
// validatorEndpoint = newSignerValidatorEndpoint(log.TestingLogger(), tc.addr, thisConnTimeout)
// )
//
// go func(sc *SignerValidatorEndpoint) {
// go func(sc *SignerListenerEndpoint) {
// defer close(listenc)
//
// // Note: the TCP connection times out at the accept() phase,
@@ -123,7 +123,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
// readyCh = make(chan struct{})
// errCh = make(chan error, 1)
//
// serviceEndpoint = NewSignerServiceEndpoint(
// serviceEndpoint = NewSignerDialerEndpoint(
// logger,
// chainID,
// types.NewMockPV(),
@@ -182,7 +182,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
// chainID = common.RandStr(12)
// readyCh = make(chan struct{})
//
// serviceEndpoint = NewSignerServiceEndpoint(
// serviceEndpoint = NewSignerDialerEndpoint(
// logger,
// chainID,
// types.NewMockPV(),
@@ -206,7 +206,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
// time.Sleep(testTimeoutHeartbeat * 2)
//
// serviceEndpoint.Stop()
// rs2 := NewSignerServiceEndpoint(
// rs2 := NewSignerDialerEndpoint(
// logger,
// chainID,
// types.NewMockPV(),
@@ -230,7 +230,7 @@ func TestSignerRemoteRetryTCPOnly(t *testing.T) {
///////////////////////////////////
func newSignerValidatorEndpoint(logger log.Logger, addr string, timeoutReadWrite time.Duration) *SignerValidatorEndpoint {
func newSignerValidatorEndpoint(logger log.Logger, addr string, timeoutReadWrite time.Duration) *SignerListenerEndpoint {
proto, address := common.ProtocolAndAddress(addr)
ln, err := net.Listen(proto, address)
@@ -253,11 +253,11 @@ func newSignerValidatorEndpoint(logger log.Logger, addr string, timeoutReadWrite
listener = tcpLn
}
return NewSignerValidatorEndpoint(logger, listener)
return NewSignerListenerEndpoint(logger, listener)
}
func getStartEndpoint(t *testing.T, readyCh chan struct{}, sv *SignerValidatorEndpoint) {
go func(sv *SignerValidatorEndpoint) {
func getStartEndpoint(t *testing.T, readyCh chan struct{}, sv *SignerListenerEndpoint) {
go func(sv *SignerListenerEndpoint) {
require.NoError(t, sv.Start())
assert.True(t, sv.IsRunning())
readyCh <- struct{}{}
@@ -270,13 +270,13 @@ func getMockEndpoints(
privValidator types.PrivValidator,
addr string,
socketDialer SocketDialer,
) (*SignerValidatorEndpoint, *SignerServiceEndpoint) {
) (*SignerListenerEndpoint, *SignerDialerEndpoint) {
var (
logger = log.TestingLogger()
privVal = privValidator
readyCh = make(chan struct{})
serviceEndpoint = NewSignerServiceEndpoint(
serviceEndpoint = NewSignerDialerEndpoint(
logger,
chainID,
privVal,
+9 -3
View File
@@ -3,14 +3,15 @@ package privval
import (
"fmt"
"github.com/pkg/errors"
"github.com/tendermint/tendermint/crypto"
"github.com/tendermint/tendermint/types"
)
// SignerRemote implements PrivValidator.
// It uses a net.Conn to request signatures from an external process.
// It uses a validator endpoint to request signatures from an external process.
type SignerRemote struct {
endpoint *SignerValidatorEndpoint
endpoint *SignerListenerEndpoint
// memoized
consensusPubKey crypto.PubKey
@@ -20,7 +21,12 @@ type SignerRemote struct {
var _ types.PrivValidator = (*SignerRemote)(nil)
// NewSignerRemote returns an instance of SignerRemote.
func NewSignerRemote(endpoint *SignerValidatorEndpoint) (*SignerRemote, error) {
func NewSignerRemote(endpoint *SignerListenerEndpoint) (*SignerRemote, error) {
if !endpoint.IsRunning() {
if err := endpoint.Start(); err != nil {
return nil, errors.Wrap(err, "failed to start private validator")
}
}
// TODO: Fix this
//// retrieve and memoize the consensus public key once.
+6 -5
View File
@@ -1,19 +1,20 @@
package privval
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tendermint/tendermint/libs/common"
"github.com/tendermint/tendermint/types"
"testing"
"time"
)
type signerTestCase struct {
chainID string
mockPV types.PrivValidator
signer *SignerRemote
signerService *SignerServiceEndpoint // TODO: Replace once it is encapsulated
signerService *SignerDialerEndpoint // TODO: Replace once it is encapsulated
}
func getSignerTestCases(t *testing.T) []signerTestCase {
@@ -51,8 +52,8 @@ func TestSignerClose(t *testing.T) {
assert.NoError(t, err)
//// FIXME: An error is logged but OnStop hides it
//err = tc.signerService.Stop()
//assert.NoError(t, err)
err = tc.signerService.Stop()
assert.NoError(t, err)
}()
}
}
+1 -1
View File
@@ -2,11 +2,11 @@ package privval
import (
"fmt"
"github.com/stretchr/testify/require"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tendermint/tendermint/crypto/ed25519"
cmn "github.com/tendermint/tendermint/libs/common"
)
+31
View File
@@ -1,7 +1,12 @@
package privval
import (
"fmt"
"net"
"github.com/tendermint/tendermint/crypto/ed25519"
cmn "github.com/tendermint/tendermint/libs/common"
"github.com/tendermint/tendermint/libs/log"
)
// IsConnTimeout returns a boolean indicating whether the error is known to
@@ -18,3 +23,29 @@ func IsConnTimeout(err error) bool {
}
return false
}
func NewSignerListener(listenAddr string, logger log.Logger) (*SignerListenerEndpoint, error) {
var listener net.Listener
protocol, address := cmn.ProtocolAndAddress(listenAddr)
ln, err := net.Listen(protocol, address)
if err != nil {
return nil, err
}
switch protocol {
case "unix":
listener = NewUnixListener(ln)
case "tcp":
// TODO: persist this key so external signer can actually authenticate us
listener = NewTCPListener(ln, ed25519.GenPrivKey())
default:
return nil, fmt.Errorf(
"wrong listen address: expected either 'tcp' or 'unix' protocols, got %s",
protocol,
)
}
pve := NewSignerListenerEndpoint(logger.With("module", "privval"), listener)
return pve, nil
}
+1 -1
View File
@@ -2,11 +2,11 @@ package privval
import (
"fmt"
"github.com/stretchr/testify/require"
"net"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
cmn "github.com/tendermint/tendermint/libs/common"
)
@@ -313,7 +313,7 @@ func (th *TestHarness) Shutdown(err error) {
}
// newTestHarnessSignerRemote creates our client instance which we will use for testing.
func newTestHarnessSignerRemote(logger log.Logger, cfg TestHarnessConfig) (*privval.SignerValidatorEndpoint, error) {
func newTestHarnessSignerRemote(logger log.Logger, cfg TestHarnessConfig) (*privval.SignerListenerEndpoint, error) {
proto, addr := cmn.ProtocolAndAddress(cfg.BindAddr)
if proto == "unix" {
// make sure the socket doesn't exist - if so, try to delete it
@@ -346,7 +346,7 @@ func newTestHarnessSignerRemote(logger log.Logger, cfg TestHarnessConfig) (*priv
logger.Error("Unsupported protocol (must be unix:// or tcp://)", "proto", proto)
return nil, newTestHarnessError(ErrInvalidParameters, nil, fmt.Sprintf("Unsupported protocol: %s", proto))
}
return privval.NewSignerValidatorEndpoint(logger, svln), nil
return privval.NewSignerListenerEndpoint(logger, svln), nil
}
func newTestHarnessError(code int, err error, info string) *TestHarnessError {
@@ -85,7 +85,7 @@ func TestRemoteSignerTestHarnessMaxAcceptRetriesReached(t *testing.T) {
func TestRemoteSignerTestHarnessSuccessfulRun(t *testing.T) {
harnessTest(
t,
func(th *TestHarness) *privval.SignerServiceEndpoint {
func(th *TestHarness) *privval.SignerDialerEndpoint {
return newMockRemoteSigner(t, th, th.fpv.Key.PrivKey, false, false)
},
NoError,
@@ -95,7 +95,7 @@ func TestRemoteSignerTestHarnessSuccessfulRun(t *testing.T) {
func TestRemoteSignerPublicKeyCheckFailed(t *testing.T) {
harnessTest(
t,
func(th *TestHarness) *privval.SignerServiceEndpoint {
func(th *TestHarness) *privval.SignerDialerEndpoint {
return newMockRemoteSigner(t, th, ed25519.GenPrivKey(), false, false)
},
ErrTestPublicKeyFailed,
@@ -105,7 +105,7 @@ func TestRemoteSignerPublicKeyCheckFailed(t *testing.T) {
func TestRemoteSignerProposalSigningFailed(t *testing.T) {
harnessTest(
t,
func(th *TestHarness) *privval.SignerServiceEndpoint {
func(th *TestHarness) *privval.SignerDialerEndpoint {
return newMockRemoteSigner(t, th, th.fpv.Key.PrivKey, true, false)
},
ErrTestSignProposalFailed,
@@ -115,15 +115,15 @@ func TestRemoteSignerProposalSigningFailed(t *testing.T) {
func TestRemoteSignerVoteSigningFailed(t *testing.T) {
harnessTest(
t,
func(th *TestHarness) *privval.SignerServiceEndpoint {
func(th *TestHarness) *privval.SignerDialerEndpoint {
return newMockRemoteSigner(t, th, th.fpv.Key.PrivKey, false, true)
},
ErrTestSignVoteFailed,
)
}
func newMockRemoteSigner(t *testing.T, th *TestHarness, privKey crypto.PrivKey, breakProposalSigning bool, breakVoteSigning bool) *privval.SignerServiceEndpoint {
return privval.NewSignerServiceEndpoint(
func newMockRemoteSigner(t *testing.T, th *TestHarness, privKey crypto.PrivKey, breakProposalSigning bool, breakVoteSigning bool) *privval.SignerDialerEndpoint {
return privval.NewSignerDialerEndpoint(
th.logger,
th.chainID,
types.NewMockPVWithParams(privKey, breakProposalSigning, breakVoteSigning),
@@ -136,7 +136,7 @@ func newMockRemoteSigner(t *testing.T, th *TestHarness, privKey crypto.PrivKey,
}
// For running relatively standard tests.
func harnessTest(t *testing.T, rsMaker func(th *TestHarness) *privval.SignerServiceEndpoint, expectedExitCode int) {
func harnessTest(t *testing.T, rsMaker func(th *TestHarness) *privval.SignerDialerEndpoint, expectedExitCode int) {
cfg := makeConfig(t, 100, 3)
defer cleanup(cfg)