functional/tester: add sendOpWithResp for SnapshotInfo

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyuho Lee
2018-04-11 14:08:57 -07:00
parent e859883e78
commit e2bb03b39b

View File

@ -393,6 +393,11 @@ func (clus *Cluster) broadcast(op rpcpb.Operation) error {
} }
func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error { func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
_, err := clus.sendOpWithResp(idx, op)
return err
}
func (clus *Cluster) sendOpWithResp(idx int, op rpcpb.Operation) (*rpcpb.Response, error) {
// maintain the initial member object // maintain the initial member object
// throughout the test time // throughout the test time
clus.agentRequests[idx] = &rpcpb.Request{ clus.agentRequests[idx] = &rpcpb.Request{
@ -409,7 +414,7 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
zap.Error(err), zap.Error(err),
) )
if err != nil { if err != nil {
return err return nil, err
} }
resp, err := clus.agentStreams[idx].Recv() resp, err := clus.agentStreams[idx].Recv()
@ -431,18 +436,18 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
) )
} }
if err != nil { if err != nil {
return err return nil, err
} }
if !resp.Success { if !resp.Success {
return errors.New(resp.Status) return nil, errors.New(resp.Status)
} }
m, secure := clus.Members[idx], false m, secure := clus.Members[idx], false
for _, cu := range m.Etcd.AdvertiseClientURLs { for _, cu := range m.Etcd.AdvertiseClientURLs {
u, err := url.Parse(cu) u, err := url.Parse(cu)
if err != nil { if err != nil {
return err return nil, err
} }
if u.Scheme == "https" { // TODO: handle unix if u.Scheme == "https" { // TODO: handle unix
secure = true secure = true
@ -458,16 +463,16 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
"client", "client",
) )
if err = fileutil.TouchDirAll(dirClient); err != nil { if err = fileutil.TouchDirAll(dirClient); err != nil {
return err return nil, err
} }
clientCertData := []byte(resp.Member.ClientCertData) clientCertData := []byte(resp.Member.ClientCertData)
if len(clientCertData) == 0 { if len(clientCertData) == 0 {
return fmt.Errorf("got empty client cert from %q", m.EtcdClientEndpoint) return nil, fmt.Errorf("got empty client cert from %q", m.EtcdClientEndpoint)
} }
clientCertPath := filepath.Join(dirClient, "cert.pem") clientCertPath := filepath.Join(dirClient, "cert.pem")
if err = ioutil.WriteFile(clientCertPath, clientCertData, 0644); err != nil { // overwrite if exists if err = ioutil.WriteFile(clientCertPath, clientCertData, 0644); err != nil { // overwrite if exists
return err return nil, err
} }
resp.Member.ClientCertPath = clientCertPath resp.Member.ClientCertPath = clientCertPath
clus.lg.Info( clus.lg.Info(
@ -477,11 +482,11 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
clientKeyData := []byte(resp.Member.ClientKeyData) clientKeyData := []byte(resp.Member.ClientKeyData)
if len(clientKeyData) == 0 { if len(clientKeyData) == 0 {
return fmt.Errorf("got empty client key from %q", m.EtcdClientEndpoint) return nil, fmt.Errorf("got empty client key from %q", m.EtcdClientEndpoint)
} }
clientKeyPath := filepath.Join(dirClient, "key.pem") clientKeyPath := filepath.Join(dirClient, "key.pem")
if err = ioutil.WriteFile(clientKeyPath, clientKeyData, 0644); err != nil { // overwrite if exists if err = ioutil.WriteFile(clientKeyPath, clientKeyData, 0644); err != nil { // overwrite if exists
return err return nil, err
} }
resp.Member.ClientKeyPath = clientKeyPath resp.Member.ClientKeyPath = clientKeyPath
clus.lg.Info( clus.lg.Info(
@ -494,7 +499,7 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
// TODO: disable this when auto TLS is deprecated // TODO: disable this when auto TLS is deprecated
clientTrustedCAPath := filepath.Join(dirClient, "ca.pem") clientTrustedCAPath := filepath.Join(dirClient, "ca.pem")
if err = ioutil.WriteFile(clientTrustedCAPath, clientTrustedCAData, 0644); err != nil { // overwrite if exists if err = ioutil.WriteFile(clientTrustedCAPath, clientTrustedCAData, 0644); err != nil { // overwrite if exists
return err return nil, err
} }
resp.Member.ClientTrustedCAPath = clientTrustedCAPath resp.Member.ClientTrustedCAPath = clientTrustedCAPath
clus.lg.Info( clus.lg.Info(
@ -507,7 +512,8 @@ func (clus *Cluster) sendOp(idx int, op rpcpb.Operation) error {
clus.Members[idx] = resp.Member clus.Members[idx] = resp.Member
} }
return nil
return resp, nil
} }
// Send_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT terminates all tester connections to agents and etcd servers. // Send_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT terminates all tester connections to agents and etcd servers.