integration: configure keepalive parameters for server
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
@ -53,6 +53,7 @@ import (
|
|||||||
"github.com/coreos/pkg/capnslog"
|
"github.com/coreos/pkg/capnslog"
|
||||||
"github.com/soheilhy/cmux"
|
"github.com/soheilhy/cmux"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/keepalive"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -98,6 +99,9 @@ type ClusterConfig struct {
|
|||||||
QuotaBackendBytes int64
|
QuotaBackendBytes int64
|
||||||
MaxTxnOps uint
|
MaxTxnOps uint
|
||||||
MaxRequestBytes uint
|
MaxRequestBytes uint
|
||||||
|
GRPCKeepAliveMinTime time.Duration
|
||||||
|
GRPCKeepAliveInterval time.Duration
|
||||||
|
GRPCKeepAliveTimeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
type cluster struct {
|
type cluster struct {
|
||||||
@ -231,6 +235,9 @@ func (c *cluster) mustNewMember(t *testing.T) *member {
|
|||||||
quotaBackendBytes: c.cfg.QuotaBackendBytes,
|
quotaBackendBytes: c.cfg.QuotaBackendBytes,
|
||||||
maxTxnOps: c.cfg.MaxTxnOps,
|
maxTxnOps: c.cfg.MaxTxnOps,
|
||||||
maxRequestBytes: c.cfg.MaxRequestBytes,
|
maxRequestBytes: c.cfg.MaxRequestBytes,
|
||||||
|
grpcKeepAliveMinTime: c.cfg.GRPCKeepAliveMinTime,
|
||||||
|
grpcKeepAliveInterval: c.cfg.GRPCKeepAliveInterval,
|
||||||
|
grpcKeepAliveTimeout: c.cfg.GRPCKeepAliveTimeout,
|
||||||
})
|
})
|
||||||
m.DiscoveryURL = c.cfg.DiscoveryURL
|
m.DiscoveryURL = c.cfg.DiscoveryURL
|
||||||
if c.cfg.UseGRPC {
|
if c.cfg.UseGRPC {
|
||||||
@ -482,6 +489,7 @@ type member struct {
|
|||||||
s *etcdserver.EtcdServer
|
s *etcdserver.EtcdServer
|
||||||
serverClosers []func()
|
serverClosers []func()
|
||||||
|
|
||||||
|
grpcServerOpts []grpc.ServerOption
|
||||||
grpcServer *grpc.Server
|
grpcServer *grpc.Server
|
||||||
grpcServerPeer *grpc.Server
|
grpcServerPeer *grpc.Server
|
||||||
grpcAddr string
|
grpcAddr string
|
||||||
@ -502,6 +510,9 @@ type memberConfig struct {
|
|||||||
quotaBackendBytes int64
|
quotaBackendBytes int64
|
||||||
maxTxnOps uint
|
maxTxnOps uint
|
||||||
maxRequestBytes uint
|
maxRequestBytes uint
|
||||||
|
grpcKeepAliveMinTime time.Duration
|
||||||
|
grpcKeepAliveInterval time.Duration
|
||||||
|
grpcKeepAliveTimeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
// mustNewMember return an inited member with the given name. If peerTLS is
|
// mustNewMember return an inited member with the given name. If peerTLS is
|
||||||
@ -558,6 +569,21 @@ func mustNewMember(t *testing.T, mcfg memberConfig) *member {
|
|||||||
m.MaxRequestBytes = embed.DefaultMaxRequestBytes
|
m.MaxRequestBytes = embed.DefaultMaxRequestBytes
|
||||||
}
|
}
|
||||||
m.AuthToken = "simple" // for the purpose of integration testing, simple token is enough
|
m.AuthToken = "simple" // for the purpose of integration testing, simple token is enough
|
||||||
|
|
||||||
|
m.grpcServerOpts = []grpc.ServerOption{}
|
||||||
|
if mcfg.grpcKeepAliveMinTime > time.Duration(0) {
|
||||||
|
m.grpcServerOpts = append(m.grpcServerOpts, grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{
|
||||||
|
MinTime: mcfg.grpcKeepAliveMinTime,
|
||||||
|
PermitWithoutStream: false,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
if mcfg.grpcKeepAliveInterval > time.Duration(0) &&
|
||||||
|
mcfg.grpcKeepAliveTimeout > time.Duration(0) {
|
||||||
|
m.grpcServerOpts = append(m.grpcServerOpts, grpc.KeepaliveParams(keepalive.ServerParameters{
|
||||||
|
Time: mcfg.grpcKeepAliveInterval,
|
||||||
|
Timeout: mcfg.grpcKeepAliveTimeout,
|
||||||
|
}))
|
||||||
|
}
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,7 +698,7 @@ func (m *member) Launch() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.grpcServer = v3rpc.Server(m.s, tlscfg)
|
m.grpcServer = v3rpc.Server(m.s, tlscfg, m.grpcServerOpts...)
|
||||||
m.grpcServerPeer = v3rpc.Server(m.s, peerTLScfg)
|
m.grpcServerPeer = v3rpc.Server(m.s, peerTLScfg)
|
||||||
m.serverClient = v3client.New(m.s)
|
m.serverClient = v3client.New(m.s)
|
||||||
lockpb.RegisterLockServer(m.grpcServer, v3lock.NewLockServer(m.serverClient))
|
lockpb.RegisterLockServer(m.grpcServer, v3lock.NewLockServer(m.serverClient))
|
||||||
|
Reference in New Issue
Block a user