diff --git a/.travis.yml b/.travis.yml index 885d677b5..3f17f95dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ env: matrix: - TARGET=linux-amd64-integration-1-cpu - TARGET=linux-amd64-integration-4-cpu + - TARGET=linux-amd64-functional - TARGET=linux-amd64-unit - TARGET=linux-amd64-e2e - TARGET=all-build @@ -43,6 +44,9 @@ script: linux-amd64-integration-4-cpu) GOARCH=amd64 CPU=4 PASSES='integration' ./test ;; + linux-amd64-functional) + GOARCH=amd64 PASSES='functional' ./test + ;; linux-amd64-unit) GOARCH=amd64 PASSES='unit' ./test ;; diff --git a/functional.yaml b/functional.yaml old mode 100644 new mode 100755 index c55d3136b..2029a0165 --- a/functional.yaml +++ b/functional.yaml @@ -1,8 +1,9 @@ agent-configs: -- etcd-exec: ./bin/etcd +- etcd-exec-path: ./bin/etcd agent-addr: 127.0.0.1:19027 failpoint-http-addr: http://127.0.0.1:7381 base-dir: /tmp/etcd-functional-1 + etcd-log-path: /tmp/etcd-functional-1/etcd.log etcd-client-proxy: false etcd-peer-proxy: true etcd-client-endpoint: 127.0.0.1:1379 @@ -29,7 +30,7 @@ agent-configs: initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381 initial-cluster-state: new initial-cluster-token: tkn - snapshot-count: 2000 + snapshot-count: 10000 quota-backend-bytes: 10740000000 # 10 GiB pre-vote: true initial-corrupt-check: true @@ -47,10 +48,11 @@ agent-configs: peer-trusted-ca-path: "" snapshot-path: /tmp/etcd-functional-1.snapshot.db -- etcd-exec: ./bin/etcd +- etcd-exec-path: ./bin/etcd agent-addr: 127.0.0.1:29027 failpoint-http-addr: http://127.0.0.1:7382 base-dir: /tmp/etcd-functional-2 + etcd-log-path: /tmp/etcd-functional-2/etcd.log etcd-client-proxy: false etcd-peer-proxy: true etcd-client-endpoint: 127.0.0.1:2379 @@ -77,7 +79,7 @@ agent-configs: initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381 initial-cluster-state: new initial-cluster-token: tkn - snapshot-count: 2000 + snapshot-count: 10000 quota-backend-bytes: 10740000000 # 10 GiB pre-vote: true initial-corrupt-check: true @@ -95,10 +97,11 @@ agent-configs: peer-trusted-ca-path: "" snapshot-path: /tmp/etcd-functional-2.snapshot.db -- etcd-exec: ./bin/etcd +- etcd-exec-path: ./bin/etcd agent-addr: 127.0.0.1:39027 failpoint-http-addr: http://127.0.0.1:7383 base-dir: /tmp/etcd-functional-3 + etcd-log-path: /tmp/etcd-functional-3/etcd.log etcd-client-proxy: false etcd-peer-proxy: true etcd-client-endpoint: 127.0.0.1:3379 @@ -125,7 +128,7 @@ agent-configs: initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381 initial-cluster-state: new initial-cluster-token: tkn - snapshot-count: 2000 + snapshot-count: 10000 quota-backend-bytes: 10740000000 # 10 GiB pre-vote: true initial-corrupt-check: true @@ -160,7 +163,7 @@ tester-config: case-shuffle: true # For full descriptions, - # https://godoc.org/github.com/etcd-io/etcd/functional/rpcpb#Case + # https://godoc.org/github.com/coreos/etcd/functional/rpcpb#Case cases: - SIGTERM_ONE_FOLLOWER - SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT @@ -170,62 +173,24 @@ tester-config: - SIGTERM_ALL - SIGQUIT_AND_REMOVE_ONE_FOLLOWER - SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT + - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER + - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT - BLACKHOLE_PEER_PORT_TX_RX_LEADER - BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT - BLACKHOLE_PEER_PORT_TX_RX_QUORUM - - BLACKHOLE_PEER_PORT_TX_RX_ALL + - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER - DELAY_PEER_PORT_TX_RX_LEADER - - RANDOM_DELAY_PEER_PORT_TX_RX_LEADER - - DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT - - RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT - DELAY_PEER_PORT_TX_RX_QUORUM - - RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM - - DELAY_PEER_PORT_TX_RX_ALL - - RANDOM_DELAY_PEER_PORT_TX_RX_ALL - - NO_FAIL_WITH_STRESS - - NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS - - # TODO: use iptables for discarding outbound rafthttp traffic to peer port - # - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER - # - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT - # - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER - # - RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER - # - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT - # - RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT - # - SIGQUIT_AND_REMOVE_LEADER - # - SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT - # - SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH failpoint-commands: - panic("etcd-tester") - # - panic("etcd-tester"),1*sleep(1000) runner-exec-path: ./bin/etcd-runner external-exec-path: "" - # make up ±70% of workloads with writes stressers: - - type: KV_WRITE_SMALL - weight: 0.35 - - type: KV_WRITE_LARGE - weight: 0.002 - - type: KV_READ_ONE_KEY - weight: 0.07 - - type: KV_READ_RANGE - weight: 0.07 - - type: KV_DELETE_ONE_KEY - weight: 0.07 - - type: KV_DELETE_RANGE - weight: 0.07 - - type: KV_TXN_WRITE_DELETE - weight: 0.35 - - type: LEASE - weight: 0.0 - - # - ELECTION_RUNNER - # - WATCH_RUNNER - # - LOCK_RACER_RUNNER - # - LEASE_RUNNER + - KV + - LEASE checkers: - KV_HASH diff --git a/functional/Dockerfile b/functional/Dockerfile old mode 100644 new mode 100755 index dac9ca754..fbcc34ec2 --- a/functional/Dockerfile +++ b/functional/Dockerfile @@ -39,4 +39,4 @@ RUN go get -v github.com/coreos/gofail \ && cp ./bin/etcd-tester /bin/etcd-tester \ && go build -v -o /bin/benchmark ./tools/benchmark \ && popd \ - && rm -rf ${GOPATH}/src/github.com/coreos/etcd + && rm -rf ${GOPATH}/src/github.com/coreos/etcd \ No newline at end of file diff --git a/functional/Procfile-proxy b/functional/Procfile-proxy old mode 100644 new mode 100755 diff --git a/functional/README.md b/functional/README.md old mode 100644 new mode 100755 index 547f84275..f4b8cb1d7 --- a/functional/README.md +++ b/functional/README.md @@ -4,7 +4,7 @@ See [`rpcpb.Case`](https://godoc.org/github.com/coreos/etcd/functional/rpcpb#Case) for all failure cases. -See [functional.yaml](https://github.com/etcd-io/etcd/blob/master/functional.yaml) for an example configuration. +See [functional.yaml](https://github.com/coreos/etcd/blob/master/functional.yaml) for an example configuration. ### Run locally @@ -16,7 +16,7 @@ PASSES=functional ./test ```bash pushd .. -make build-docker-functional push-docker-functional pull-docker-functional +make build-docker-functional popd ``` @@ -24,12 +24,12 @@ And run [example scripts](./scripts). ```bash # run 3 agents for 3-node local etcd cluster -./functional/scripts/docker-local-agent.sh 1 -./functional/scripts/docker-local-agent.sh 2 -./functional/scripts/docker-local-agent.sh 3 +./scripts/docker-local-agent.sh 1 +./scripts/docker-local-agent.sh 2 +./scripts/docker-local-agent.sh 3 # to run only 1 tester round -./functional/scripts/docker-local-tester.sh +./scripts/docker-local-tester.sh ``` ## etcd Proxy diff --git a/functional/agent/doc.go b/functional/agent/doc.go old mode 100644 new mode 100755 diff --git a/functional/agent/handler.go b/functional/agent/handler.go old mode 100644 new mode 100755 index 691f89632..7cd8e6cec --- a/functional/agent/handler.go +++ b/functional/agent/handler.go @@ -70,13 +70,13 @@ func (srv *Server) handleTesterRequest(req *rpcpb.Request) (resp *rpcpb.Response return srv.handle_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT() case rpcpb.Operation_BLACKHOLE_PEER_PORT_TX_RX: - return srv.handle_BLACKHOLE_PEER_PORT_TX_RX(), nil + return srv.handle_BLACKHOLE_PEER_PORT_TX_RX() case rpcpb.Operation_UNBLACKHOLE_PEER_PORT_TX_RX: - return srv.handle_UNBLACKHOLE_PEER_PORT_TX_RX(), nil + return srv.handle_UNBLACKHOLE_PEER_PORT_TX_RX() case rpcpb.Operation_DELAY_PEER_PORT_TX_RX: - return srv.handle_DELAY_PEER_PORT_TX_RX(), nil + return srv.handle_DELAY_PEER_PORT_TX_RX() case rpcpb.Operation_UNDELAY_PEER_PORT_TX_RX: - return srv.handle_UNDELAY_PEER_PORT_TX_RX(), nil + return srv.handle_UNDELAY_PEER_PORT_TX_RX() default: msg := fmt.Sprintf("operation not found (%v)", req.Operation) @@ -84,125 +84,50 @@ func (srv *Server) handleTesterRequest(req *rpcpb.Request) (resp *rpcpb.Response } } -// just archive the first file -func (srv *Server) createEtcdLogFile() error { - var err error - srv.etcdLogFile, err = os.Create(srv.Member.Etcd.LogOutputs[0]) +func (srv *Server) handle_INITIAL_START_ETCD(req *rpcpb.Request) (*rpcpb.Response, error) { + if srv.last != rpcpb.Operation_NOT_STARTED { + return &rpcpb.Response{ + Success: false, + Status: fmt.Sprintf("%q is not valid; last server operation was %q", rpcpb.Operation_INITIAL_START_ETCD.String(), srv.last.String()), + Member: req.Member, + }, nil + } + + err := fileutil.TouchDirAll(srv.Member.BaseDir) if err != nil { - return err + return nil, err } - srv.lg.Info("created etcd log file", zap.String("path", srv.Member.Etcd.LogOutputs[0])) - return nil -} + srv.lg.Info("created base directory", zap.String("path", srv.Member.BaseDir)) -func (srv *Server) creatEtcd(fromSnapshot bool) error { - if !fileutil.Exist(srv.Member.EtcdExec) { - return fmt.Errorf("unknown etcd exec path %q does not exist", srv.Member.EtcdExec) + if err = srv.createEtcdLogFile(); err != nil { + return nil, err } - etcdPath, etcdFlags := srv.Member.EtcdExec, srv.Member.Etcd.Flags() - if fromSnapshot { - etcdFlags = srv.Member.EtcdOnSnapshotRestore.Flags() + srv.creatEtcdCmd(false) + + if err = srv.saveTLSAssets(); err != nil { + return nil, err } - u, _ := url.Parse(srv.Member.FailpointHTTPAddr) - srv.lg.Info( - "creating etcd command", - zap.String("etcd-exec", etcdPath), - zap.Strings("etcd-flags", etcdFlags), - zap.String("failpoint-http-addr", srv.Member.FailpointHTTPAddr), - zap.String("failpoint-addr", u.Host), - ) - srv.etcdCmd = exec.Command(etcdPath, etcdFlags...) - srv.etcdCmd.Env = []string{"GOFAIL_HTTP=" + u.Host} - srv.etcdCmd.Stdout = srv.etcdLogFile - srv.etcdCmd.Stderr = srv.etcdLogFile - return nil -} - -// start but do not wait for it to complete -func (srv *Server) runEtcd() error { - errc := make(chan error) - go func() { - time.Sleep(5 * time.Second) - // server advertise client/peer listener had to start first - // before setting up proxy listener - errc <- srv.startProxy() - }() - - if srv.etcdCmd != nil { - srv.lg.Info( - "starting etcd command", - zap.String("command-path", srv.etcdCmd.Path), - ) - err := srv.etcdCmd.Start() - perr := <-errc - srv.lg.Info( - "started etcd command", - zap.String("command-path", srv.etcdCmd.Path), - zap.Errors("errors", []error{err, perr}), - ) - if err != nil { - return err - } - return perr + if err = srv.startEtcdCmd(); err != nil { + return nil, err + } + srv.lg.Info("started etcd", zap.String("command-path", srv.etcdCmd.Path)) + if err = srv.loadAutoTLSAssets(); err != nil { + return nil, err } - select { - case <-srv.etcdServer.Server.ReadyNotify(): - srv.lg.Info("embedded etcd is ready") - case <-time.After(time.Minute): - srv.etcdServer.Close() - return fmt.Errorf("took too long to start %v", <-srv.etcdServer.Err()) - } - return <-errc -} - -// SIGQUIT to exit with stackstrace -func (srv *Server) stopEtcd(sig os.Signal) error { - srv.stopProxy() - - if srv.etcdCmd != nil { - srv.lg.Info( - "stopping etcd command", - zap.String("command-path", srv.etcdCmd.Path), - zap.String("signal", sig.String()), - ) - - err := srv.etcdCmd.Process.Signal(sig) - if err != nil { - return err - } - - errc := make(chan error) - go func() { - _, ew := srv.etcdCmd.Process.Wait() - errc <- ew - close(errc) - }() - - select { - case <-time.After(5 * time.Second): - srv.etcdCmd.Process.Kill() - case e := <-errc: - return e - } - - err = <-errc - - srv.lg.Info( - "stopped etcd command", - zap.String("command-path", srv.etcdCmd.Path), - zap.String("signal", sig.String()), - zap.Error(err), - ) - return err + // wait some time for etcd listener start + // before setting up proxy + time.Sleep(time.Second) + if err = srv.startProxy(); err != nil { + return nil, err } - srv.lg.Info("stopping embedded etcd") - srv.etcdServer.Server.HardStop() - srv.etcdServer.Close() - srv.lg.Info("stopped embedded etcd") - return nil + return &rpcpb.Response{ + Success: true, + Status: "start etcd PASS", + Member: srv.Member, + }, nil } func (srv *Server) startProxy() error { @@ -216,7 +141,6 @@ func (srv *Server) startProxy() error { return err } - srv.lg.Info("starting proxy on client traffic", zap.String("url", advertiseClientURL.String())) srv.advertiseClientPortToProxy[advertiseClientURLPort] = proxy.NewServer(proxy.ServerConfig{ Logger: srv.lg, From: *advertiseClientURL, @@ -240,7 +164,6 @@ func (srv *Server) startProxy() error { return err } - srv.lg.Info("starting proxy on peer traffic", zap.String("url", advertisePeerURL.String())) srv.advertisePeerPortToProxy[advertisePeerURLPort] = proxy.NewServer(proxy.ServerConfig{ Logger: srv.lg, From: *advertisePeerURL, @@ -299,6 +222,34 @@ func (srv *Server) stopProxy() { } } +func (srv *Server) createEtcdLogFile() error { + var err error + srv.etcdLogFile, err = os.Create(srv.Member.EtcdLogPath) + if err != nil { + return err + } + srv.lg.Info("created etcd log file", zap.String("path", srv.Member.EtcdLogPath)) + return nil +} + +func (srv *Server) creatEtcdCmd(fromSnapshot bool) { + etcdPath, etcdFlags := srv.Member.EtcdExecPath, srv.Member.Etcd.Flags() + if fromSnapshot { + etcdFlags = srv.Member.EtcdOnSnapshotRestore.Flags() + } + u, _ := url.Parse(srv.Member.FailpointHTTPAddr) + srv.lg.Info("creating etcd command", + zap.String("etcd-exec-path", etcdPath), + zap.Strings("etcd-flags", etcdFlags), + zap.String("failpoint-http-addr", srv.Member.FailpointHTTPAddr), + zap.String("failpoint-addr", u.Host), + ) + srv.etcdCmd = exec.Command(etcdPath, etcdFlags...) + srv.etcdCmd.Env = []string{"GOFAIL_HTTP=" + u.Host} + srv.etcdCmd.Stdout = srv.etcdLogFile + srv.etcdCmd.Stderr = srv.etcdLogFile +} + // if started with manual TLS, stores TLS assets // from tester/client to disk before starting etcd process func (srv *Server) saveTLSAssets() error { @@ -371,6 +322,7 @@ func (srv *Server) saveTLSAssets() error { zap.String("client-trusted-ca", srv.Member.ClientTrustedCAPath), ) } + return nil } @@ -460,45 +412,9 @@ func (srv *Server) loadAutoTLSAssets() error { return nil } -func (srv *Server) handle_INITIAL_START_ETCD(req *rpcpb.Request) (*rpcpb.Response, error) { - if srv.last != rpcpb.Operation_NOT_STARTED { - return &rpcpb.Response{ - Success: false, - Status: fmt.Sprintf("%q is not valid; last server operation was %q", rpcpb.Operation_INITIAL_START_ETCD.String(), srv.last.String()), - Member: req.Member, - }, nil - } - - err := fileutil.TouchDirAll(srv.Member.BaseDir) - if err != nil { - return nil, err - } - srv.lg.Info("created base directory", zap.String("path", srv.Member.BaseDir)) - - if srv.etcdServer == nil { - if err = srv.createEtcdLogFile(); err != nil { - return nil, err - } - } - - if err = srv.saveTLSAssets(); err != nil { - return nil, err - } - if err = srv.creatEtcd(false); err != nil { - return nil, err - } - if err = srv.runEtcd(); err != nil { - return nil, err - } - if err = srv.loadAutoTLSAssets(); err != nil { - return nil, err - } - - return &rpcpb.Response{ - Success: true, - Status: "start etcd PASS", - Member: srv.Member, - }, nil +// start but do not wait for it to complete +func (srv *Server) startEtcdCmd() error { + return srv.etcdCmd.Start() } func (srv *Server) handle_RESTART_ETCD() (*rpcpb.Response, error) { @@ -510,19 +426,28 @@ func (srv *Server) handle_RESTART_ETCD() (*rpcpb.Response, error) { } } + srv.creatEtcdCmd(false) + if err = srv.saveTLSAssets(); err != nil { return nil, err } - if err = srv.creatEtcd(false); err != nil { - return nil, err - } - if err = srv.runEtcd(); err != nil { + if err = srv.startEtcdCmd(); err != nil { return nil, err } + srv.lg.Info("restarted etcd", zap.String("command-path", srv.etcdCmd.Path)) if err = srv.loadAutoTLSAssets(); err != nil { return nil, err } + // wait some time for etcd listener start + // before setting up proxy + // TODO: local tests should handle port conflicts + // with clients on restart + time.Sleep(time.Second) + if err = srv.startProxy(); err != nil { + return nil, err + } + return &rpcpb.Response{ Success: true, Status: "restart etcd PASS", @@ -531,15 +456,13 @@ func (srv *Server) handle_RESTART_ETCD() (*rpcpb.Response, error) { } func (srv *Server) handle_SIGTERM_ETCD() (*rpcpb.Response, error) { - if err := srv.stopEtcd(syscall.SIGTERM); err != nil { + srv.stopProxy() + + err := stopWithSig(srv.etcdCmd, syscall.SIGTERM) + if err != nil { return nil, err } - - if srv.etcdServer != nil { - // srv.etcdServer.GetLogger().Sync() - } else { - srv.etcdLogFile.Sync() - } + srv.lg.Info("killed etcd", zap.String("signal", syscall.SIGTERM.String())) return &rpcpb.Response{ Success: true, @@ -548,17 +471,16 @@ func (srv *Server) handle_SIGTERM_ETCD() (*rpcpb.Response, error) { } func (srv *Server) handle_SIGQUIT_ETCD_AND_REMOVE_DATA() (*rpcpb.Response, error) { - err := srv.stopEtcd(syscall.SIGQUIT) + srv.stopProxy() + + err := stopWithSig(srv.etcdCmd, syscall.SIGQUIT) if err != nil { return nil, err } + srv.lg.Info("killed etcd", zap.String("signal", syscall.SIGQUIT.String())) - if srv.etcdServer != nil { - // srv.etcdServer.GetLogger().Sync() - } else { - srv.etcdLogFile.Sync() - srv.etcdLogFile.Close() - } + srv.etcdLogFile.Sync() + srv.etcdLogFile.Close() // for debugging purposes, rename instead of removing if err = os.RemoveAll(srv.Member.BaseDir + ".backup"); err != nil { @@ -580,6 +502,9 @@ func (srv *Server) handle_SIGQUIT_ETCD_AND_REMOVE_DATA() (*rpcpb.Response, error return nil, err } } + if err = srv.createEtcdLogFile(); err != nil { + return nil, err + } return &rpcpb.Response{ Success: true, @@ -612,19 +537,28 @@ func (srv *Server) handle_RESTORE_RESTART_FROM_SNAPSHOT() (resp *rpcpb.Response, } func (srv *Server) handle_RESTART_FROM_SNAPSHOT() (resp *rpcpb.Response, err error) { + srv.creatEtcdCmd(true) + if err = srv.saveTLSAssets(); err != nil { return nil, err } - if err = srv.creatEtcd(true); err != nil { - return nil, err - } - if err = srv.runEtcd(); err != nil { + if err = srv.startEtcdCmd(); err != nil { return nil, err } + srv.lg.Info("restarted etcd", zap.String("command-path", srv.etcdCmd.Path)) if err = srv.loadAutoTLSAssets(); err != nil { return nil, err } + // wait some time for etcd listener start + // before setting up proxy + // TODO: local tests should handle port conflicts + // with clients on restart + time.Sleep(time.Second) + if err = srv.startProxy(); err != nil { + return nil, err + } + return &rpcpb.Response{ Success: true, Status: "restarted etcd from snapshot", @@ -633,32 +567,30 @@ func (srv *Server) handle_RESTART_FROM_SNAPSHOT() (resp *rpcpb.Response, err err } func (srv *Server) handle_SIGQUIT_ETCD_AND_ARCHIVE_DATA() (*rpcpb.Response, error) { - err := srv.stopEtcd(syscall.SIGQUIT) + srv.stopProxy() + + // exit with stackstrace + err := stopWithSig(srv.etcdCmd, syscall.SIGQUIT) if err != nil { return nil, err } + srv.lg.Info("killed etcd", zap.String("signal", syscall.SIGQUIT.String())) - if srv.etcdServer != nil { - // srv.etcdServer.GetLogger().Sync() - } else { - srv.etcdLogFile.Sync() - srv.etcdLogFile.Close() - } + srv.etcdLogFile.Sync() + srv.etcdLogFile.Close() // TODO: support separate WAL directory if err = archive( srv.Member.BaseDir, - srv.Member.Etcd.LogOutputs[0], + srv.Member.EtcdLogPath, srv.Member.Etcd.DataDir, ); err != nil { return nil, err } srv.lg.Info("archived data", zap.String("base-dir", srv.Member.BaseDir)) - if srv.etcdServer == nil { - if err = srv.createEtcdLogFile(); err != nil { - return nil, err - } + if err = srv.createEtcdLogFile(); err != nil { + return nil, err } srv.lg.Info("cleaning up page cache") @@ -675,17 +607,16 @@ func (srv *Server) handle_SIGQUIT_ETCD_AND_ARCHIVE_DATA() (*rpcpb.Response, erro // stop proxy, etcd, delete data directory func (srv *Server) handle_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT() (*rpcpb.Response, error) { - err := srv.stopEtcd(syscall.SIGQUIT) + srv.stopProxy() + + err := stopWithSig(srv.etcdCmd, syscall.SIGQUIT) if err != nil { return nil, err } + srv.lg.Info("killed etcd", zap.String("signal", syscall.SIGQUIT.String())) - if srv.etcdServer != nil { - // srv.etcdServer.GetLogger().Sync() - } else { - srv.etcdLogFile.Sync() - srv.etcdLogFile.Close() - } + srv.etcdLogFile.Sync() + srv.etcdLogFile.Close() err = os.RemoveAll(srv.Member.BaseDir) if err != nil { @@ -702,7 +633,7 @@ func (srv *Server) handle_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT() (*rpcpb. }, nil } -func (srv *Server) handle_BLACKHOLE_PEER_PORT_TX_RX() *rpcpb.Response { +func (srv *Server) handle_BLACKHOLE_PEER_PORT_TX_RX() (*rpcpb.Response, error) { for port, px := range srv.advertisePeerPortToProxy { srv.lg.Info("blackholing", zap.Int("peer-port", port)) px.BlackholeTx() @@ -712,10 +643,10 @@ func (srv *Server) handle_BLACKHOLE_PEER_PORT_TX_RX() *rpcpb.Response { return &rpcpb.Response{ Success: true, Status: "blackholed peer port tx/rx", - } + }, nil } -func (srv *Server) handle_UNBLACKHOLE_PEER_PORT_TX_RX() *rpcpb.Response { +func (srv *Server) handle_UNBLACKHOLE_PEER_PORT_TX_RX() (*rpcpb.Response, error) { for port, px := range srv.advertisePeerPortToProxy { srv.lg.Info("unblackholing", zap.Int("peer-port", port)) px.UnblackholeTx() @@ -725,10 +656,10 @@ func (srv *Server) handle_UNBLACKHOLE_PEER_PORT_TX_RX() *rpcpb.Response { return &rpcpb.Response{ Success: true, Status: "unblackholed peer port tx/rx", - } + }, nil } -func (srv *Server) handle_DELAY_PEER_PORT_TX_RX() *rpcpb.Response { +func (srv *Server) handle_DELAY_PEER_PORT_TX_RX() (*rpcpb.Response, error) { lat := time.Duration(srv.Tester.UpdatedDelayLatencyMs) * time.Millisecond rv := time.Duration(srv.Tester.DelayLatencyMsRv) * time.Millisecond @@ -750,10 +681,10 @@ func (srv *Server) handle_DELAY_PEER_PORT_TX_RX() *rpcpb.Response { return &rpcpb.Response{ Success: true, Status: "delayed peer port tx/rx", - } + }, nil } -func (srv *Server) handle_UNDELAY_PEER_PORT_TX_RX() *rpcpb.Response { +func (srv *Server) handle_UNDELAY_PEER_PORT_TX_RX() (*rpcpb.Response, error) { for port, px := range srv.advertisePeerPortToProxy { srv.lg.Info("undelaying", zap.Int("peer-port", port)) px.UndelayTx() @@ -763,5 +694,5 @@ func (srv *Server) handle_UNDELAY_PEER_PORT_TX_RX() *rpcpb.Response { return &rpcpb.Response{ Success: true, Status: "undelayed peer port tx/rx", - } + }, nil } diff --git a/functional/agent/server.go b/functional/agent/server.go old mode 100644 new mode 100755 index 2347c1402..d6313d955 --- a/functional/agent/server.go +++ b/functional/agent/server.go @@ -21,7 +21,6 @@ import ( "os/exec" "strings" - "github.com/coreos/etcd/embed" "github.com/coreos/etcd/functional/rpcpb" "github.com/coreos/etcd/pkg/proxy" @@ -34,9 +33,8 @@ import ( // no need to lock fields since request operations are // serialized in tester-side type Server struct { - lg *zap.Logger - grpcServer *grpc.Server + lg *zap.Logger network string address string @@ -48,7 +46,6 @@ type Server struct { *rpcpb.Member *rpcpb.Tester - etcdServer *embed.Etcd etcdCmd *exec.Cmd etcdLogFile *os.File @@ -64,10 +61,10 @@ func NewServer( address string, ) *Server { return &Server{ - lg: lg, - network: network, - address: address, - last: rpcpb.Operation_NOT_STARTED, + lg: lg, + network: network, + address: address, + last: rpcpb.Operation_NOT_STARTED, advertiseClientPortToProxy: make(map[int]proxy.Server), advertisePeerPortToProxy: make(map[int]proxy.Server), } @@ -126,12 +123,11 @@ func (srv *Server) Stop() { } // Transport communicates with etcd tester. -func (srv *Server) Transport(stream rpcpb.Transport_TransportServer) (reterr error) { - errc := make(chan error, 1) +func (srv *Server) Transport(stream rpcpb.Transport_TransportServer) (err error) { + errc := make(chan error) go func() { for { var req *rpcpb.Request - var err error req, err = stream.Recv() if err != nil { errc <- err @@ -162,9 +158,9 @@ func (srv *Server) Transport(stream rpcpb.Transport_TransportServer) (reterr err }() select { - case reterr = <-errc: + case err = <-errc: case <-stream.Context().Done(): - reterr = stream.Context().Err() + err = stream.Context().Err() } - return reterr + return err } diff --git a/functional/agent/utils.go b/functional/agent/utils.go old mode 100644 new mode 100755 index a71383ecf..437ffa961 --- a/functional/agent/utils.go +++ b/functional/agent/utils.go @@ -15,7 +15,6 @@ package agent import ( - "io" "net" "net/url" "os" @@ -37,8 +36,7 @@ func archive(baseDir, etcdLogPath, dataDir string) error { return err } - dst := filepath.Join(dir, "etcd.log") - if err := copyFile(etcdLogPath, dst); err != nil { + if err := os.Rename(etcdLogPath, filepath.Join(dir, "etcd.log")); err != nil { if !os.IsNotExist(err) { return err } @@ -81,23 +79,27 @@ func getURLAndPort(addr string) (urlAddr *url.URL, port int, err error) { return urlAddr, port, err } -func copyFile(src, dst string) error { - f, err := os.Open(src) +func stopWithSig(cmd *exec.Cmd, sig os.Signal) error { + err := cmd.Process.Signal(sig) if err != nil { return err } - defer f.Close() - w, err := os.Create(dst) - if err != nil { - return err - } - defer w.Close() + errc := make(chan error) + go func() { + _, ew := cmd.Process.Wait() + errc <- ew + close(errc) + }() - if _, err = io.Copy(w, f); err != nil { - return err + select { + case <-time.After(5 * time.Second): + cmd.Process.Kill() + case e := <-errc: + return e } - return w.Sync() + err = <-errc + return err } func cleanPageCache() error { diff --git a/functional/agent/utils_test.go b/functional/agent/utils_test.go old mode 100644 new mode 100755 diff --git a/functional/cmd/etcd-agent/main.go b/functional/cmd/etcd-agent/main.go old mode 100644 new mode 100755 diff --git a/functional/cmd/etcd-proxy/main.go b/functional/cmd/etcd-proxy/main.go old mode 100644 new mode 100755 index 80074d7a4..24c275e8e --- a/functional/cmd/etcd-proxy/main.go +++ b/functional/cmd/etcd-proxy/main.go @@ -19,8 +19,6 @@ import ( "context" "flag" "fmt" - "io/ioutil" - "log" "net/http" "net/url" "os" @@ -64,8 +62,8 @@ $ make build-etcd-proxy $ ./bin/etcd-proxy --help $ ./bin/etcd-proxy --from localhost:23790 --to localhost:2379 --http-port 2378 --verbose -$ ./bin/etcdctl --endpoints localhost:2379 put foo bar -$ ./bin/etcdctl --endpoints localhost:23790 put foo bar`) +$ ETCDCTL_API=3 ./bin/etcdctl --endpoints localhost:2379 put foo bar +$ ETCDCTL_API=3 ./bin/etcdctl --endpoints localhost:23790 put foo bar`) flag.PrintDefaults() } @@ -193,9 +191,8 @@ $ ./bin/etcdctl --endpoints localhost:23790 put foo bar`) } }) srv := &http.Server{ - Addr: fmt.Sprintf(":%d", httpPort), - Handler: mux, - ErrorLog: log.New(ioutil.Discard, "net/http", 0), + Addr: fmt.Sprintf(":%d", httpPort), + Handler: mux, } defer srv.Close() diff --git a/functional/cmd/etcd-runner/main.go b/functional/cmd/etcd-runner/main.go old mode 100644 new mode 100755 diff --git a/functional/cmd/etcd-tester/main.go b/functional/cmd/etcd-tester/main.go old mode 100644 new mode 100755 diff --git a/functional/rpcpb/etcd_config.go b/functional/rpcpb/etcd_config.go old mode 100644 new mode 100755 index 349a4c69c..9d3d8c235 --- a/functional/rpcpb/etcd_config.go +++ b/functional/rpcpb/etcd_config.go @@ -50,12 +50,15 @@ var etcdFields = []string{ "SnapshotCount", "QuotaBackendBytes", + + // "PreVote", + // "InitialCorruptCheck", } // Flags returns etcd flags in string slice. -func (e *Etcd) Flags() (fs []string) { - tp := reflect.TypeOf(*e) - vo := reflect.ValueOf(*e) +func (cfg *Etcd) Flags() (fs []string) { + tp := reflect.TypeOf(*cfg) + vo := reflect.ValueOf(*cfg) for _, name := range etcdFields { field, ok := tp.FieldByName(name) if !ok { @@ -83,6 +86,11 @@ func (e *Etcd) Flags() (fs []string) { fname := field.Tag.Get("yaml") + // not supported in old etcd + if fname == "pre-vote" || fname == "initial-corrupt-check" { + continue + } + if sv != "" { fs = append(fs, fmt.Sprintf("--%s=%s", fname, sv)) } diff --git a/functional/rpcpb/etcd_config_test.go b/functional/rpcpb/etcd_config_test.go old mode 100644 new mode 100755 index abd6df9d4..fce236244 --- a/functional/rpcpb/etcd_config_test.go +++ b/functional/rpcpb/etcd_config_test.go @@ -19,11 +19,11 @@ import ( "testing" ) -func TestEtcd(t *testing.T) { - e := &Etcd{ +func TestEtcdFlags(t *testing.T) { + cfg := &Etcd{ Name: "s1", - DataDir: "/tmp/etcd-functionl-1/etcd.data", - WALDir: "/tmp/etcd-functionl-1/etcd.data/member/wal", + DataDir: "/tmp/etcd-agent-data-1/etcd.data", + WALDir: "/tmp/etcd-agent-data-1/etcd.data/member/wal", HeartbeatIntervalMs: 100, ElectionTimeoutMs: 1000, @@ -53,16 +53,12 @@ func TestEtcd(t *testing.T) { PreVote: true, InitialCorruptCheck: true, - - Logger: "zap", - LogOutputs: []string{"/tmp/etcd-functional-1/etcd.log"}, - LogLevel: "info", } - exps := []string{ + exp := []string{ "--name=s1", - "--data-dir=/tmp/etcd-functionl-1/etcd.data", - "--wal-dir=/tmp/etcd-functionl-1/etcd.data/member/wal", + "--data-dir=/tmp/etcd-agent-data-1/etcd.data", + "--wal-dir=/tmp/etcd-agent-data-1/etcd.data/member/wal", "--heartbeat-interval=100", "--election-timeout=1000", "--listen-client-urls=https://127.0.0.1:1379", @@ -80,12 +76,9 @@ func TestEtcd(t *testing.T) { "--quota-backend-bytes=10740000000", "--pre-vote=true", "--experimental-initial-corrupt-check=true", - "--logger=zap", - "--log-outputs=/tmp/etcd-functional-1/etcd.log", - "--log-level=info", } - fs := e.Flags() - if !reflect.DeepEqual(exps, fs) { - t.Fatalf("expected %q, got %q", exps, fs) + fs := cfg.Flags() + if !reflect.DeepEqual(exp, fs) { + t.Fatalf("expected %q, got %q", exp, fs) } } diff --git a/functional/rpcpb/member.go b/functional/rpcpb/member.go old mode 100644 new mode 100755 index f0d11a5e6..01f684113 --- a/functional/rpcpb/member.go +++ b/functional/rpcpb/member.go @@ -23,10 +23,9 @@ import ( "time" "github.com/coreos/etcd/clientv3" - "github.com/coreos/etcd/clientv3/snapshot" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" - "github.com/coreos/etcd/pkg/logutil" "github.com/coreos/etcd/pkg/transport" + "github.com/coreos/etcd/snapshot" "github.com/dustin/go-humanize" "go.uber.org/zap" @@ -95,19 +94,10 @@ func (m *Member) CreateEtcdClientConfig(opts ...grpc.DialOption) (cfg *clientv3. } } - // TODO: make this configurable - level := "error" - if os.Getenv("ETCD_CLIENT_DEBUG") != "" { - level = "debug" - } - lcfg := logutil.DefaultZapLoggerConfig - lcfg.Level = zap.NewAtomicLevelAt(logutil.ConvertToZapLevel(level)) - cfg = &clientv3.Config{ Endpoints: []string{m.EtcdClientEndpoint}, DialTimeout: 10 * time.Second, DialOptions: opts, - LogConfig: &lcfg, } if secure { // assume save TLS assets are already stord on disk diff --git a/functional/rpcpb/rpc.pb.go b/functional/rpcpb/rpc.pb.go old mode 100644 new mode 100755 index 12be4d2bb..1c488dc47 --- a/functional/rpcpb/rpc.pb.go +++ b/functional/rpcpb/rpc.pb.go @@ -1,21 +1,31 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: rpcpb/rpc.proto +/* + Package rpcpb is a generated protocol buffer package. + + It is generated from these files: + rpcpb/rpc.proto + + It has these top-level messages: + Request + SnapshotInfo + Response + Member + Tester + Etcd +*/ package rpcpb -import ( - context "context" - encoding_binary "encoding/binary" - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/golang/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import context "golang.org/x/net/context" +import grpc "google.golang.org/grpc" + +import io "io" // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -28,92 +38,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -type StresserType int32 - -const ( - StresserType_KV_WRITE_SMALL StresserType = 0 - StresserType_KV_WRITE_LARGE StresserType = 1 - StresserType_KV_READ_ONE_KEY StresserType = 2 - StresserType_KV_READ_RANGE StresserType = 3 - StresserType_KV_DELETE_ONE_KEY StresserType = 4 - StresserType_KV_DELETE_RANGE StresserType = 5 - StresserType_KV_TXN_WRITE_DELETE StresserType = 6 - StresserType_LEASE StresserType = 10 - StresserType_ELECTION_RUNNER StresserType = 20 - StresserType_WATCH_RUNNER StresserType = 31 - StresserType_LOCK_RACER_RUNNER StresserType = 41 - StresserType_LEASE_RUNNER StresserType = 51 -) - -var StresserType_name = map[int32]string{ - 0: "KV_WRITE_SMALL", - 1: "KV_WRITE_LARGE", - 2: "KV_READ_ONE_KEY", - 3: "KV_READ_RANGE", - 4: "KV_DELETE_ONE_KEY", - 5: "KV_DELETE_RANGE", - 6: "KV_TXN_WRITE_DELETE", - 10: "LEASE", - 20: "ELECTION_RUNNER", - 31: "WATCH_RUNNER", - 41: "LOCK_RACER_RUNNER", - 51: "LEASE_RUNNER", -} - -var StresserType_value = map[string]int32{ - "KV_WRITE_SMALL": 0, - "KV_WRITE_LARGE": 1, - "KV_READ_ONE_KEY": 2, - "KV_READ_RANGE": 3, - "KV_DELETE_ONE_KEY": 4, - "KV_DELETE_RANGE": 5, - "KV_TXN_WRITE_DELETE": 6, - "LEASE": 10, - "ELECTION_RUNNER": 20, - "WATCH_RUNNER": 31, - "LOCK_RACER_RUNNER": 41, - "LEASE_RUNNER": 51, -} - -func (x StresserType) String() string { - return proto.EnumName(StresserType_name, int32(x)) -} - -func (StresserType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{0} -} - -type Checker int32 - -const ( - Checker_KV_HASH Checker = 0 - Checker_LEASE_EXPIRE Checker = 1 - Checker_RUNNER Checker = 2 - Checker_NO_CHECK Checker = 3 -) - -var Checker_name = map[int32]string{ - 0: "KV_HASH", - 1: "LEASE_EXPIRE", - 2: "RUNNER", - 3: "NO_CHECK", -} - -var Checker_value = map[string]int32{ - "KV_HASH": 0, - "LEASE_EXPIRE": 1, - "RUNNER": 2, - "NO_CHECK": 3, -} - -func (x Checker) String() string { - return proto.EnumName(Checker_name, int32(x)) -} - -func (Checker) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{1} -} - type Operation int32 const ( @@ -174,7 +98,6 @@ var Operation_name = map[int32]string{ 200: "DELAY_PEER_PORT_TX_RX", 201: "UNDELAY_PEER_PORT_TX_RX", } - var Operation_value = map[string]int32{ "NOT_STARTED": 0, "INITIAL_START_ETCD": 10, @@ -195,10 +118,7 @@ var Operation_value = map[string]int32{ func (x Operation) String() string { return proto.EnumName(Operation_name, int32(x)) } - -func (Operation) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{2} -} +func (Operation) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{0} } // Case defines various system faults or test case in distributed systems, // in order to verify correct behavior of etcd servers and clients. @@ -546,7 +466,6 @@ var Case_name = map[int32]string{ 400: "FAILPOINTS", 500: "EXTERNAL", } - var Case_value = map[string]int32{ "SIGTERM_ONE_FOLLOWER": 0, "SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT": 1, @@ -586,158 +505,124 @@ var Case_value = map[string]int32{ func (x Case) String() string { return proto.EnumName(Case_name, int32(x)) } +func (Case) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{1} } -func (Case) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{3} +type Stresser int32 + +const ( + Stresser_KV Stresser = 0 + Stresser_LEASE Stresser = 1 + Stresser_ELECTION_RUNNER Stresser = 2 + Stresser_WATCH_RUNNER Stresser = 3 + Stresser_LOCK_RACER_RUNNER Stresser = 4 + Stresser_LEASE_RUNNER Stresser = 5 +) + +var Stresser_name = map[int32]string{ + 0: "KV", + 1: "LEASE", + 2: "ELECTION_RUNNER", + 3: "WATCH_RUNNER", + 4: "LOCK_RACER_RUNNER", + 5: "LEASE_RUNNER", } +var Stresser_value = map[string]int32{ + "KV": 0, + "LEASE": 1, + "ELECTION_RUNNER": 2, + "WATCH_RUNNER": 3, + "LOCK_RACER_RUNNER": 4, + "LEASE_RUNNER": 5, +} + +func (x Stresser) String() string { + return proto.EnumName(Stresser_name, int32(x)) +} +func (Stresser) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{2} } + +type Checker int32 + +const ( + Checker_KV_HASH Checker = 0 + Checker_LEASE_EXPIRE Checker = 1 + Checker_RUNNER Checker = 2 + Checker_NO_CHECK Checker = 3 +) + +var Checker_name = map[int32]string{ + 0: "KV_HASH", + 1: "LEASE_EXPIRE", + 2: "RUNNER", + 3: "NO_CHECK", +} +var Checker_value = map[string]int32{ + "KV_HASH": 0, + "LEASE_EXPIRE": 1, + "RUNNER": 2, + "NO_CHECK": 3, +} + +func (x Checker) String() string { + return proto.EnumName(Checker_name, int32(x)) +} +func (Checker) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{3} } type Request struct { Operation Operation `protobuf:"varint,1,opt,name=Operation,proto3,enum=rpcpb.Operation" json:"Operation,omitempty"` // Member contains the same Member object from tester configuration. - Member *Member `protobuf:"bytes,2,opt,name=Member,proto3" json:"Member,omitempty"` + Member *Member `protobuf:"bytes,2,opt,name=Member" json:"Member,omitempty"` // Tester contains tester configuration. - Tester *Tester `protobuf:"bytes,3,opt,name=Tester,proto3" json:"Tester,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Tester *Tester `protobuf:"bytes,3,opt,name=Tester" json:"Tester,omitempty"` } -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{0} -} -func (m *Request) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Request.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_Request.Merge(m, src) -} -func (m *Request) XXX_Size() int { - return m.Size() -} -func (m *Request) XXX_DiscardUnknown() { - xxx_messageInfo_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_Request proto.InternalMessageInfo +func (m *Request) Reset() { *m = Request{} } +func (m *Request) String() string { return proto.CompactTextString(m) } +func (*Request) ProtoMessage() {} +func (*Request) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{0} } // SnapshotInfo contains SAVE_SNAPSHOT request results. type SnapshotInfo struct { - MemberName string `protobuf:"bytes,1,opt,name=MemberName,proto3" json:"MemberName,omitempty"` - MemberClientURLs []string `protobuf:"bytes,2,rep,name=MemberClientURLs,proto3" json:"MemberClientURLs,omitempty"` - SnapshotPath string `protobuf:"bytes,3,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty"` - SnapshotFileSize string `protobuf:"bytes,4,opt,name=SnapshotFileSize,proto3" json:"SnapshotFileSize,omitempty"` - SnapshotTotalSize string `protobuf:"bytes,5,opt,name=SnapshotTotalSize,proto3" json:"SnapshotTotalSize,omitempty"` - SnapshotTotalKey int64 `protobuf:"varint,6,opt,name=SnapshotTotalKey,proto3" json:"SnapshotTotalKey,omitempty"` - SnapshotHash int64 `protobuf:"varint,7,opt,name=SnapshotHash,proto3" json:"SnapshotHash,omitempty"` - SnapshotRevision int64 `protobuf:"varint,8,opt,name=SnapshotRevision,proto3" json:"SnapshotRevision,omitempty"` - Took string `protobuf:"bytes,9,opt,name=Took,proto3" json:"Took,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MemberName string `protobuf:"bytes,1,opt,name=MemberName,proto3" json:"MemberName,omitempty"` + MemberClientURLs []string `protobuf:"bytes,2,rep,name=MemberClientURLs" json:"MemberClientURLs,omitempty"` + SnapshotPath string `protobuf:"bytes,3,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty"` + SnapshotFileSize string `protobuf:"bytes,4,opt,name=SnapshotFileSize,proto3" json:"SnapshotFileSize,omitempty"` + SnapshotTotalSize string `protobuf:"bytes,5,opt,name=SnapshotTotalSize,proto3" json:"SnapshotTotalSize,omitempty"` + SnapshotTotalKey int64 `protobuf:"varint,6,opt,name=SnapshotTotalKey,proto3" json:"SnapshotTotalKey,omitempty"` + SnapshotHash int64 `protobuf:"varint,7,opt,name=SnapshotHash,proto3" json:"SnapshotHash,omitempty"` + SnapshotRevision int64 `protobuf:"varint,8,opt,name=SnapshotRevision,proto3" json:"SnapshotRevision,omitempty"` + Took string `protobuf:"bytes,9,opt,name=Took,proto3" json:"Took,omitempty"` } -func (m *SnapshotInfo) Reset() { *m = SnapshotInfo{} } -func (m *SnapshotInfo) String() string { return proto.CompactTextString(m) } -func (*SnapshotInfo) ProtoMessage() {} -func (*SnapshotInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{1} -} -func (m *SnapshotInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_SnapshotInfo.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *SnapshotInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotInfo.Merge(m, src) -} -func (m *SnapshotInfo) XXX_Size() int { - return m.Size() -} -func (m *SnapshotInfo) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_SnapshotInfo proto.InternalMessageInfo +func (m *SnapshotInfo) Reset() { *m = SnapshotInfo{} } +func (m *SnapshotInfo) String() string { return proto.CompactTextString(m) } +func (*SnapshotInfo) ProtoMessage() {} +func (*SnapshotInfo) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{1} } type Response struct { Success bool `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"` Status string `protobuf:"bytes,2,opt,name=Status,proto3" json:"Status,omitempty"` // Member contains the same Member object from tester request. - Member *Member `protobuf:"bytes,3,opt,name=Member,proto3" json:"Member,omitempty"` + Member *Member `protobuf:"bytes,3,opt,name=Member" json:"Member,omitempty"` // SnapshotInfo contains SAVE_SNAPSHOT request results. - SnapshotInfo *SnapshotInfo `protobuf:"bytes,4,opt,name=SnapshotInfo,proto3" json:"SnapshotInfo,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SnapshotInfo *SnapshotInfo `protobuf:"bytes,4,opt,name=SnapshotInfo" json:"SnapshotInfo,omitempty"` } -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{2} -} -func (m *Response) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Response.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Response) XXX_Merge(src proto.Message) { - xxx_messageInfo_Response.Merge(m, src) -} -func (m *Response) XXX_Size() int { - return m.Size() -} -func (m *Response) XXX_DiscardUnknown() { - xxx_messageInfo_Response.DiscardUnknown(m) -} - -var xxx_messageInfo_Response proto.InternalMessageInfo +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} +func (*Response) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{2} } type Member struct { - // EtcdExec is the executable etcd binary path in agent server. - EtcdExec string `protobuf:"bytes,1,opt,name=EtcdExec,proto3" json:"EtcdExec,omitempty" yaml:"etcd-exec"` + // EtcdExecPath is the executable etcd binary path in agent server. + EtcdExecPath string `protobuf:"bytes,1,opt,name=EtcdExecPath,proto3" json:"EtcdExecPath,omitempty" yaml:"etcd-exec-path"` // AgentAddr is the agent HTTP server address. AgentAddr string `protobuf:"bytes,11,opt,name=AgentAddr,proto3" json:"AgentAddr,omitempty" yaml:"agent-addr"` // FailpointHTTPAddr is the agent's failpoints HTTP server address. FailpointHTTPAddr string `protobuf:"bytes,12,opt,name=FailpointHTTPAddr,proto3" json:"FailpointHTTPAddr,omitempty" yaml:"failpoint-http-addr"` // BaseDir is the base directory where all logs and etcd data are stored. BaseDir string `protobuf:"bytes,101,opt,name=BaseDir,proto3" json:"BaseDir,omitempty" yaml:"base-dir"` + // EtcdLogPath is the log file to store current etcd server logs. + EtcdLogPath string `protobuf:"bytes,102,opt,name=EtcdLogPath,proto3" json:"EtcdLogPath,omitempty" yaml:"etcd-log-path"` // EtcdClientProxy is true when client traffic needs to be proxied. // If true, listen client URL port must be different than advertise client URL port. EtcdClientProxy bool `protobuf:"varint,201,opt,name=EtcdClientProxy,proto3" json:"EtcdClientProxy,omitempty" yaml:"etcd-client-proxy"` @@ -747,10 +632,10 @@ type Member struct { // EtcdClientEndpoint is the etcd client endpoint. EtcdClientEndpoint string `protobuf:"bytes,301,opt,name=EtcdClientEndpoint,proto3" json:"EtcdClientEndpoint,omitempty" yaml:"etcd-client-endpoint"` // Etcd defines etcd binary configuration flags. - Etcd *Etcd `protobuf:"bytes,302,opt,name=Etcd,proto3" json:"Etcd,omitempty" yaml:"etcd"` + Etcd *Etcd `protobuf:"bytes,302,opt,name=Etcd" json:"Etcd,omitempty" yaml:"etcd"` // EtcdOnSnapshotRestore defines one-time use configuration during etcd // snapshot recovery process. - EtcdOnSnapshotRestore *Etcd `protobuf:"bytes,303,opt,name=EtcdOnSnapshotRestore,proto3" json:"EtcdOnSnapshotRestore,omitempty"` + EtcdOnSnapshotRestore *Etcd `protobuf:"bytes,303,opt,name=EtcdOnSnapshotRestore" json:"EtcdOnSnapshotRestore,omitempty"` // ClientCertData contains cert file contents from this member's etcd server. ClientCertData string `protobuf:"bytes,401,opt,name=ClientCertData,proto3" json:"ClientCertData,omitempty" yaml:"client-cert-data"` ClientCertPath string `protobuf:"bytes,402,opt,name=ClientCertPath,proto3" json:"ClientCertPath,omitempty" yaml:"client-cert-path"` @@ -772,44 +657,13 @@ type Member struct { // SnapshotPath is the snapshot file path to store or restore from. SnapshotPath string `protobuf:"bytes,601,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty" yaml:"snapshot-path"` // SnapshotInfo contains last SAVE_SNAPSHOT request results. - SnapshotInfo *SnapshotInfo `protobuf:"bytes,602,opt,name=SnapshotInfo,proto3" json:"SnapshotInfo,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SnapshotInfo *SnapshotInfo `protobuf:"bytes,602,opt,name=SnapshotInfo" json:"SnapshotInfo,omitempty"` } -func (m *Member) Reset() { *m = Member{} } -func (m *Member) String() string { return proto.CompactTextString(m) } -func (*Member) ProtoMessage() {} -func (*Member) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{3} -} -func (m *Member) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Member.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Member) XXX_Merge(src proto.Message) { - xxx_messageInfo_Member.Merge(m, src) -} -func (m *Member) XXX_Size() int { - return m.Size() -} -func (m *Member) XXX_DiscardUnknown() { - xxx_messageInfo_Member.DiscardUnknown(m) -} - -var xxx_messageInfo_Member proto.InternalMessageInfo +func (m *Member) Reset() { *m = Member{} } +func (m *Member) String() string { return proto.CompactTextString(m) } +func (*Member) ProtoMessage() {} +func (*Member) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{3} } type Tester struct { DataDir string `protobuf:"bytes,1,opt,name=DataDir,proto3" json:"DataDir,omitempty" yaml:"data-dir"` @@ -837,21 +691,21 @@ type Tester struct { CaseShuffle bool `protobuf:"varint,32,opt,name=CaseShuffle,proto3" json:"CaseShuffle,omitempty" yaml:"case-shuffle"` // Cases is the selected test cases to schedule. // If empty, run all failure cases. - Cases []string `protobuf:"bytes,33,rep,name=Cases,proto3" json:"Cases,omitempty" yaml:"cases"` + Cases []string `protobuf:"bytes,33,rep,name=Cases" json:"Cases,omitempty" yaml:"cases"` // FailpointCommands is the list of "gofail" commands // (e.g. panic("etcd-tester"),1*sleep(1000). - FailpointCommands []string `protobuf:"bytes,34,rep,name=FailpointCommands,proto3" json:"FailpointCommands,omitempty" yaml:"failpoint-commands"` + FailpointCommands []string `protobuf:"bytes,34,rep,name=FailpointCommands" json:"FailpointCommands,omitempty" yaml:"failpoint-commands"` // RunnerExecPath is a path of etcd-runner binary. RunnerExecPath string `protobuf:"bytes,41,opt,name=RunnerExecPath,proto3" json:"RunnerExecPath,omitempty" yaml:"runner-exec-path"` // ExternalExecPath is a path of script for enabling/disabling an external fault injector. ExternalExecPath string `protobuf:"bytes,42,opt,name=ExternalExecPath,proto3" json:"ExternalExecPath,omitempty" yaml:"external-exec-path"` // Stressers is the list of stresser types: // KV, LEASE, ELECTION_RUNNER, WATCH_RUNNER, LOCK_RACER_RUNNER, LEASE_RUNNER. - Stressers []*Stresser `protobuf:"bytes,101,rep,name=Stressers,proto3" json:"Stressers,omitempty" yaml:"stressers"` + Stressers []string `protobuf:"bytes,101,rep,name=Stressers" json:"Stressers,omitempty" yaml:"stressers"` // Checkers is the list of consistency checker types: // KV_HASH, LEASE_EXPIRE, NO_CHECK, RUNNER. // Leave empty to skip consistency checks. - Checkers []string `protobuf:"bytes,102,rep,name=Checkers,proto3" json:"Checkers,omitempty" yaml:"checkers"` + Checkers []string `protobuf:"bytes,102,rep,name=Checkers" json:"Checkers,omitempty" yaml:"checkers"` // StressKeySize is the size of each small key written into etcd. StressKeySize int32 `protobuf:"varint,201,opt,name=StressKeySize,proto3" json:"StressKeySize,omitempty" yaml:"stress-key-size"` // StressKeySizeLarge is the size of each large key written into etcd. @@ -868,85 +722,13 @@ type Tester struct { // with "one" shared TCP connection. StressClients int32 `protobuf:"varint,301,opt,name=StressClients,proto3" json:"StressClients,omitempty" yaml:"stress-clients"` // StressQPS is the maximum number of stresser requests per second. - StressQPS int32 `protobuf:"varint,302,opt,name=StressQPS,proto3" json:"StressQPS,omitempty" yaml:"stress-qps"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + StressQPS int32 `protobuf:"varint,302,opt,name=StressQPS,proto3" json:"StressQPS,omitempty" yaml:"stress-qps"` } -func (m *Tester) Reset() { *m = Tester{} } -func (m *Tester) String() string { return proto.CompactTextString(m) } -func (*Tester) ProtoMessage() {} -func (*Tester) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{4} -} -func (m *Tester) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Tester) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Tester.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Tester) XXX_Merge(src proto.Message) { - xxx_messageInfo_Tester.Merge(m, src) -} -func (m *Tester) XXX_Size() int { - return m.Size() -} -func (m *Tester) XXX_DiscardUnknown() { - xxx_messageInfo_Tester.DiscardUnknown(m) -} - -var xxx_messageInfo_Tester proto.InternalMessageInfo - -type Stresser struct { - Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty" yaml:"type"` - Weight float64 `protobuf:"fixed64,2,opt,name=Weight,proto3" json:"Weight,omitempty" yaml:"weight"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Stresser) Reset() { *m = Stresser{} } -func (m *Stresser) String() string { return proto.CompactTextString(m) } -func (*Stresser) ProtoMessage() {} -func (*Stresser) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{5} -} -func (m *Stresser) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Stresser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Stresser.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Stresser) XXX_Merge(src proto.Message) { - xxx_messageInfo_Stresser.Merge(m, src) -} -func (m *Stresser) XXX_Size() int { - return m.Size() -} -func (m *Stresser) XXX_DiscardUnknown() { - xxx_messageInfo_Stresser.DiscardUnknown(m) -} - -var xxx_messageInfo_Stresser proto.InternalMessageInfo +func (m *Tester) Reset() { *m = Tester{} } +func (m *Tester) String() string { return proto.CompactTextString(m) } +func (*Tester) ProtoMessage() {} +func (*Tester) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{4} } type Etcd struct { Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty" yaml:"name"` @@ -958,15 +740,15 @@ type Etcd struct { // ElectionTimeoutMs is the time (in milliseconds) for an election to timeout. // Default value is 1000, which is 1s. ElectionTimeoutMs int64 `protobuf:"varint,12,opt,name=ElectionTimeoutMs,proto3" json:"ElectionTimeoutMs,omitempty" yaml:"election-timeout"` - ListenClientURLs []string `protobuf:"bytes,21,rep,name=ListenClientURLs,proto3" json:"ListenClientURLs,omitempty" yaml:"listen-client-urls"` - AdvertiseClientURLs []string `protobuf:"bytes,22,rep,name=AdvertiseClientURLs,proto3" json:"AdvertiseClientURLs,omitempty" yaml:"advertise-client-urls"` + ListenClientURLs []string `protobuf:"bytes,21,rep,name=ListenClientURLs" json:"ListenClientURLs,omitempty" yaml:"listen-client-urls"` + AdvertiseClientURLs []string `protobuf:"bytes,22,rep,name=AdvertiseClientURLs" json:"AdvertiseClientURLs,omitempty" yaml:"advertise-client-urls"` ClientAutoTLS bool `protobuf:"varint,23,opt,name=ClientAutoTLS,proto3" json:"ClientAutoTLS,omitempty" yaml:"auto-tls"` ClientCertAuth bool `protobuf:"varint,24,opt,name=ClientCertAuth,proto3" json:"ClientCertAuth,omitempty" yaml:"client-cert-auth"` ClientCertFile string `protobuf:"bytes,25,opt,name=ClientCertFile,proto3" json:"ClientCertFile,omitempty" yaml:"cert-file"` ClientKeyFile string `protobuf:"bytes,26,opt,name=ClientKeyFile,proto3" json:"ClientKeyFile,omitempty" yaml:"key-file"` ClientTrustedCAFile string `protobuf:"bytes,27,opt,name=ClientTrustedCAFile,proto3" json:"ClientTrustedCAFile,omitempty" yaml:"trusted-ca-file"` - ListenPeerURLs []string `protobuf:"bytes,31,rep,name=ListenPeerURLs,proto3" json:"ListenPeerURLs,omitempty" yaml:"listen-peer-urls"` - AdvertisePeerURLs []string `protobuf:"bytes,32,rep,name=AdvertisePeerURLs,proto3" json:"AdvertisePeerURLs,omitempty" yaml:"initial-advertise-peer-urls"` + ListenPeerURLs []string `protobuf:"bytes,31,rep,name=ListenPeerURLs" json:"ListenPeerURLs,omitempty" yaml:"listen-peer-urls"` + AdvertisePeerURLs []string `protobuf:"bytes,32,rep,name=AdvertisePeerURLs" json:"AdvertisePeerURLs,omitempty" yaml:"initial-advertise-peer-urls"` PeerAutoTLS bool `protobuf:"varint,33,opt,name=PeerAutoTLS,proto3" json:"PeerAutoTLS,omitempty" yaml:"peer-auto-tls"` PeerClientCertAuth bool `protobuf:"varint,34,opt,name=PeerClientCertAuth,proto3" json:"PeerClientCertAuth,omitempty" yaml:"peer-client-cert-auth"` PeerCertFile string `protobuf:"bytes,35,opt,name=PeerCertFile,proto3" json:"PeerCertFile,omitempty" yaml:"peer-cert-file"` @@ -979,253 +761,24 @@ type Etcd struct { QuotaBackendBytes int64 `protobuf:"varint,52,opt,name=QuotaBackendBytes,proto3" json:"QuotaBackendBytes,omitempty" yaml:"quota-backend-bytes"` PreVote bool `protobuf:"varint,63,opt,name=PreVote,proto3" json:"PreVote,omitempty" yaml:"pre-vote"` InitialCorruptCheck bool `protobuf:"varint,64,opt,name=InitialCorruptCheck,proto3" json:"InitialCorruptCheck,omitempty" yaml:"initial-corrupt-check"` - Logger string `protobuf:"bytes,71,opt,name=Logger,proto3" json:"Logger,omitempty" yaml:"logger"` - // LogOutputs is the log file to store current etcd server logs. - LogOutputs []string `protobuf:"bytes,72,rep,name=LogOutputs,proto3" json:"LogOutputs,omitempty" yaml:"log-outputs"` - LogLevel string `protobuf:"bytes,73,opt,name=LogLevel,proto3" json:"LogLevel,omitempty" yaml:"log-level"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Etcd) Reset() { *m = Etcd{} } -func (m *Etcd) String() string { return proto.CompactTextString(m) } -func (*Etcd) ProtoMessage() {} -func (*Etcd) Descriptor() ([]byte, []int) { - return fileDescriptor_4fbc93a8dcc3881e, []int{6} -} -func (m *Etcd) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Etcd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Etcd.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Etcd) XXX_Merge(src proto.Message) { - xxx_messageInfo_Etcd.Merge(m, src) -} -func (m *Etcd) XXX_Size() int { - return m.Size() -} -func (m *Etcd) XXX_DiscardUnknown() { - xxx_messageInfo_Etcd.DiscardUnknown(m) -} - -var xxx_messageInfo_Etcd proto.InternalMessageInfo +func (m *Etcd) Reset() { *m = Etcd{} } +func (m *Etcd) String() string { return proto.CompactTextString(m) } +func (*Etcd) ProtoMessage() {} +func (*Etcd) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{5} } func init() { - proto.RegisterEnum("rpcpb.StresserType", StresserType_name, StresserType_value) - proto.RegisterEnum("rpcpb.Checker", Checker_name, Checker_value) - proto.RegisterEnum("rpcpb.Operation", Operation_name, Operation_value) - proto.RegisterEnum("rpcpb.Case", Case_name, Case_value) proto.RegisterType((*Request)(nil), "rpcpb.Request") proto.RegisterType((*SnapshotInfo)(nil), "rpcpb.SnapshotInfo") proto.RegisterType((*Response)(nil), "rpcpb.Response") proto.RegisterType((*Member)(nil), "rpcpb.Member") proto.RegisterType((*Tester)(nil), "rpcpb.Tester") - proto.RegisterType((*Stresser)(nil), "rpcpb.Stresser") proto.RegisterType((*Etcd)(nil), "rpcpb.Etcd") -} - -func init() { proto.RegisterFile("rpcpb/rpc.proto", fileDescriptor_4fbc93a8dcc3881e) } - -var fileDescriptor_4fbc93a8dcc3881e = []byte{ - // 2985 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x59, 0x5b, 0x73, 0xdb, 0xc6, - 0xf5, 0x37, 0x44, 0x49, 0x96, 0x56, 0x37, 0x68, 0x65, 0xd9, 0xf0, 0x4d, 0x90, 0xe1, 0x38, 0x7f, - 0x59, 0x09, 0x6c, 0xff, 0xed, 0x4c, 0x2e, 0x4e, 0x13, 0x07, 0xa4, 0x20, 0x89, 0x25, 0x44, 0xd2, - 0x4b, 0x48, 0x76, 0xfa, 0x82, 0x81, 0xc8, 0x95, 0xc4, 0x31, 0x05, 0x30, 0xc0, 0xd2, 0x91, 0xf2, - 0x05, 0xfa, 0xd6, 0x69, 0xd3, 0xcb, 0xb4, 0x33, 0xfd, 0x08, 0x4d, 0xfb, 0xd0, 0x2f, 0xe1, 0xdc, - 0xda, 0xb4, 0x7d, 0x6a, 0x1f, 0x38, 0x6d, 0xfa, 0xd2, 0xa7, 0x3e, 0x70, 0x7a, 0x7f, 0xe8, 0x74, - 0x76, 0x17, 0x10, 0x17, 0x00, 0x29, 0xfb, 0xc9, 0xc2, 0x39, 0xbf, 0xdf, 0x6f, 0xcf, 0xee, 0xd9, - 0xdd, 0x73, 0xd6, 0x04, 0x73, 0x41, 0xbb, 0xde, 0xde, 0xbd, 0x1d, 0xb4, 0xeb, 0xb7, 0xda, 0x81, - 0x4f, 0x7c, 0x38, 0xc6, 0x0c, 0x97, 0xf4, 0xfd, 0x26, 0x39, 0xe8, 0xec, 0xde, 0xaa, 0xfb, 0x87, - 0xb7, 0xf7, 0xfd, 0x7d, 0xff, 0x36, 0xf3, 0xee, 0x76, 0xf6, 0xd8, 0x17, 0xfb, 0x60, 0x7f, 0x71, - 0x96, 0xf6, 0x6d, 0x09, 0x9c, 0x45, 0xf8, 0x83, 0x0e, 0x0e, 0x09, 0xbc, 0x05, 0x26, 0x2b, 0x6d, - 0x1c, 0xb8, 0xa4, 0xe9, 0x7b, 0x8a, 0xb4, 0x2c, 0xad, 0xcc, 0xde, 0x95, 0x6f, 0x31, 0xd5, 0x5b, - 0x27, 0x76, 0xd4, 0x87, 0xc0, 0x1b, 0x60, 0x7c, 0x0b, 0x1f, 0xee, 0xe2, 0x40, 0x19, 0x59, 0x96, - 0x56, 0xa6, 0xee, 0xce, 0x44, 0x60, 0x6e, 0x44, 0x91, 0x93, 0xc2, 0x6c, 0x1c, 0x12, 0x1c, 0x28, - 0xb9, 0x04, 0x8c, 0x1b, 0x51, 0xe4, 0xd4, 0xfe, 0x32, 0x02, 0xa6, 0x6b, 0x9e, 0xdb, 0x0e, 0x0f, - 0x7c, 0x52, 0xf4, 0xf6, 0x7c, 0xb8, 0x04, 0x00, 0x57, 0x28, 0xbb, 0x87, 0x98, 0xc5, 0x33, 0x89, - 0x04, 0x0b, 0x5c, 0x05, 0x32, 0xff, 0x2a, 0xb4, 0x9a, 0xd8, 0x23, 0xdb, 0xc8, 0x0a, 0x95, 0x91, - 0xe5, 0xdc, 0xca, 0x24, 0xca, 0xd8, 0xa1, 0xd6, 0xd7, 0xae, 0xba, 0xe4, 0x80, 0x45, 0x32, 0x89, - 0x12, 0x36, 0xaa, 0x17, 0x7f, 0xaf, 0x37, 0x5b, 0xb8, 0xd6, 0xfc, 0x08, 0x2b, 0xa3, 0x0c, 0x97, - 0xb1, 0xc3, 0x57, 0xc1, 0x7c, 0x6c, 0xb3, 0x7d, 0xe2, 0xb6, 0x18, 0x78, 0x8c, 0x81, 0xb3, 0x0e, - 0x51, 0x99, 0x19, 0x4b, 0xf8, 0x58, 0x19, 0x5f, 0x96, 0x56, 0x72, 0x28, 0x63, 0x17, 0x23, 0xdd, - 0x74, 0xc3, 0x03, 0xe5, 0x2c, 0xc3, 0x25, 0x6c, 0xa2, 0x1e, 0xc2, 0x4f, 0x9b, 0x21, 0xcd, 0xd7, - 0x44, 0x52, 0x2f, 0xb6, 0x43, 0x08, 0x46, 0x6d, 0xdf, 0x7f, 0xa2, 0x4c, 0xb2, 0xe0, 0xd8, 0xdf, - 0xda, 0x4f, 0x25, 0x30, 0x81, 0x70, 0xd8, 0xf6, 0xbd, 0x10, 0x43, 0x05, 0x9c, 0xad, 0x75, 0xea, - 0x75, 0x1c, 0x86, 0x6c, 0x8d, 0x27, 0x50, 0xfc, 0x09, 0xcf, 0x83, 0xf1, 0x1a, 0x71, 0x49, 0x27, - 0x64, 0xf9, 0x9d, 0x44, 0xd1, 0x97, 0x90, 0xf7, 0xdc, 0x69, 0x79, 0x7f, 0x23, 0x99, 0x4f, 0xb6, - 0x96, 0x53, 0x77, 0x17, 0x22, 0xb0, 0xe8, 0x42, 0x09, 0xa0, 0xf6, 0xf1, 0x74, 0x3c, 0x00, 0xbc, - 0x03, 0x26, 0x4c, 0x52, 0x6f, 0x98, 0x47, 0xb8, 0xce, 0x77, 0x40, 0xfe, 0x5c, 0xaf, 0xab, 0xca, - 0xc7, 0xee, 0x61, 0xeb, 0xbe, 0x86, 0x49, 0xbd, 0xa1, 0xe3, 0x23, 0x5c, 0xd7, 0xd0, 0x09, 0x0a, - 0xde, 0x03, 0x93, 0xc6, 0x3e, 0xf6, 0x88, 0xd1, 0x68, 0x04, 0xca, 0x14, 0xa3, 0x2c, 0xf6, 0xba, - 0xea, 0x3c, 0xa7, 0xb8, 0xd4, 0xa5, 0xbb, 0x8d, 0x46, 0xa0, 0xa1, 0x3e, 0x0e, 0x5a, 0x60, 0x7e, - 0xdd, 0x6d, 0xb6, 0xda, 0x7e, 0xd3, 0x23, 0x9b, 0xb6, 0x5d, 0x65, 0xe4, 0x69, 0x46, 0x5e, 0xea, - 0x75, 0xd5, 0x4b, 0x9c, 0xbc, 0x17, 0x43, 0xf4, 0x03, 0x42, 0xda, 0x91, 0x4a, 0x96, 0x08, 0x75, - 0x70, 0x36, 0xef, 0x86, 0x78, 0xad, 0x19, 0x28, 0x98, 0x69, 0x2c, 0xf4, 0xba, 0xea, 0x1c, 0xd7, - 0xd8, 0x75, 0x43, 0xac, 0x37, 0x9a, 0x81, 0x86, 0x62, 0x0c, 0xdc, 0x00, 0x73, 0x34, 0x7a, 0xbe, - 0x5b, 0xab, 0x81, 0x7f, 0x74, 0xac, 0x7c, 0xca, 0x32, 0x91, 0xbf, 0xd2, 0xeb, 0xaa, 0x8a, 0x30, - 0xd7, 0x3a, 0x83, 0xe8, 0x6d, 0x8a, 0xd1, 0x50, 0x9a, 0x05, 0x0d, 0x30, 0x43, 0x4d, 0x55, 0x8c, - 0x03, 0x2e, 0xf3, 0x19, 0x97, 0xb9, 0xd4, 0xeb, 0xaa, 0xe7, 0x05, 0x99, 0x36, 0xc6, 0x41, 0x2c, - 0x92, 0x64, 0xc0, 0x2a, 0x80, 0x7d, 0x55, 0xd3, 0x6b, 0xb0, 0x89, 0x29, 0x9f, 0xb0, 0xfc, 0xe7, - 0xd5, 0x5e, 0x57, 0xbd, 0x9c, 0x0d, 0x07, 0x47, 0x30, 0x0d, 0x0d, 0xe0, 0xc2, 0xff, 0x07, 0xa3, - 0xd4, 0xaa, 0xfc, 0x9c, 0xdf, 0x11, 0x53, 0x51, 0xfa, 0xa9, 0x2d, 0x3f, 0xd7, 0xeb, 0xaa, 0x53, - 0x7d, 0x41, 0x0d, 0x31, 0x28, 0xcc, 0x83, 0x45, 0xfa, 0x6f, 0xc5, 0xeb, 0x6f, 0xe6, 0x90, 0xf8, - 0x01, 0x56, 0x7e, 0x91, 0xd5, 0x40, 0x83, 0xa1, 0x70, 0x0d, 0xcc, 0xf2, 0x40, 0x0a, 0x38, 0x20, - 0x6b, 0x2e, 0x71, 0x95, 0xef, 0xb1, 0x33, 0x9f, 0xbf, 0xdc, 0xeb, 0xaa, 0x17, 0xf8, 0x98, 0x51, - 0xfc, 0x75, 0x1c, 0x10, 0xbd, 0xe1, 0x12, 0x57, 0x43, 0x29, 0x4e, 0x52, 0x85, 0x5d, 0x1c, 0x1f, - 0x9f, 0xaa, 0xd2, 0x76, 0xc9, 0x41, 0x42, 0x85, 0x5d, 0x2c, 0x06, 0x98, 0xe1, 0x96, 0x12, 0x3e, - 0x66, 0xa1, 0x7c, 0x9f, 0x8b, 0x08, 0x79, 0x89, 0x44, 0x9e, 0xe0, 0xe3, 0x28, 0x92, 0x24, 0x23, - 0x21, 0xc1, 0xe2, 0xf8, 0xc1, 0x69, 0x12, 0x3c, 0x8c, 0x24, 0x03, 0xda, 0x60, 0x81, 0x1b, 0xec, - 0xa0, 0x13, 0x12, 0xdc, 0x28, 0x18, 0x2c, 0x96, 0x1f, 0x72, 0xa1, 0x6b, 0xbd, 0xae, 0x7a, 0x35, - 0x21, 0x44, 0x38, 0x4c, 0xaf, 0xbb, 0x51, 0x48, 0x83, 0xe8, 0x03, 0x54, 0x59, 0x78, 0x3f, 0x7a, - 0x01, 0x55, 0x1e, 0xe5, 0x20, 0x3a, 0x7c, 0x17, 0x4c, 0xd3, 0x3d, 0x79, 0x92, 0xbb, 0xbf, 0x73, - 0xb9, 0x8b, 0xbd, 0xae, 0xba, 0xc8, 0xe5, 0xd8, 0x1e, 0x16, 0x32, 0x97, 0xc0, 0x8b, 0x7c, 0x16, - 0xce, 0x3f, 0x4e, 0xe1, 0xf3, 0x30, 0x12, 0x78, 0xf8, 0x36, 0x98, 0xa2, 0xdf, 0x71, 0xbe, 0xfe, - 0xc9, 0xe9, 0x4a, 0xaf, 0xab, 0x9e, 0x13, 0xe8, 0xfd, 0x6c, 0x89, 0x68, 0x81, 0xcc, 0xc6, 0xfe, - 0xd7, 0x70, 0x32, 0x1f, 0x5a, 0x44, 0xc3, 0x32, 0x98, 0xa7, 0x9f, 0xc9, 0x1c, 0xfd, 0x3b, 0x97, - 0x3e, 0x7f, 0x4c, 0x22, 0x93, 0xa1, 0x2c, 0x35, 0xa3, 0xc7, 0x42, 0xfa, 0xcf, 0x73, 0xf5, 0x78, - 0x64, 0x59, 0x2a, 0x7c, 0x27, 0x55, 0x48, 0x7f, 0x3f, 0x9a, 0x9e, 0x5d, 0x18, 0xb9, 0xe3, 0x85, - 0x4d, 0xd4, 0xd8, 0x37, 0x53, 0x35, 0xe1, 0x0f, 0x2f, 0x5c, 0x14, 0x7e, 0x39, 0x1d, 0xb7, 0x11, - 0xf4, 0x7e, 0xa5, 0x73, 0xa3, 0xf7, 0xab, 0x94, 0xbe, 0x5f, 0xe9, 0x42, 0x44, 0xf7, 0x6b, 0x84, - 0x81, 0xaf, 0x82, 0xb3, 0x65, 0x4c, 0x3e, 0xf4, 0x83, 0x27, 0xbc, 0x8e, 0xe5, 0x61, 0xaf, 0xab, - 0xce, 0x72, 0xb8, 0xc7, 0x1d, 0x1a, 0x8a, 0x21, 0xf0, 0x3a, 0x18, 0x65, 0xb7, 0x3f, 0x5f, 0x22, - 0xe1, 0x86, 0xe2, 0xd7, 0x3d, 0x73, 0xc2, 0x02, 0x98, 0x5d, 0xc3, 0x2d, 0xf7, 0xd8, 0x72, 0x09, - 0xf6, 0xea, 0xc7, 0x5b, 0x21, 0xab, 0x34, 0x33, 0xe2, 0xb5, 0xd0, 0xa0, 0x7e, 0xbd, 0xc5, 0x01, - 0xfa, 0x61, 0xa8, 0xa1, 0x14, 0x05, 0x7e, 0x13, 0xc8, 0x49, 0x0b, 0x7a, 0xca, 0x6a, 0xce, 0x8c, - 0x58, 0x73, 0xd2, 0x32, 0x7a, 0xf0, 0x54, 0x43, 0x19, 0x1e, 0x7c, 0x1f, 0x2c, 0x6e, 0xb7, 0x1b, - 0x2e, 0xc1, 0x8d, 0x54, 0x5c, 0x33, 0x4c, 0xf0, 0x7a, 0xaf, 0xab, 0xaa, 0x5c, 0xb0, 0xc3, 0x61, - 0x7a, 0x36, 0xbe, 0xc1, 0x0a, 0xf0, 0x75, 0x00, 0x90, 0xdf, 0xf1, 0x1a, 0x56, 0xf3, 0xb0, 0x49, - 0x94, 0xc5, 0x65, 0x69, 0x65, 0x2c, 0x7f, 0xbe, 0xd7, 0x55, 0x21, 0xd7, 0x0b, 0xa8, 0x4f, 0x6f, - 0x51, 0xa7, 0x86, 0x04, 0x24, 0xcc, 0x83, 0x59, 0xf3, 0xa8, 0x49, 0x2a, 0x5e, 0xc1, 0x0d, 0x31, - 0x2d, 0x92, 0xca, 0xf9, 0x4c, 0x35, 0x3a, 0x6a, 0x12, 0xdd, 0xf7, 0x74, 0x5a, 0x58, 0x3b, 0x01, - 0xd6, 0x50, 0x8a, 0x01, 0xdf, 0x02, 0x53, 0xa6, 0xe7, 0xee, 0xb6, 0x70, 0xb5, 0x1d, 0xf8, 0x7b, - 0xca, 0x05, 0x26, 0x70, 0xa1, 0xd7, 0x55, 0x17, 0x22, 0x01, 0xe6, 0xd4, 0xdb, 0xd4, 0xab, 0x21, - 0x11, 0x0b, 0xef, 0x83, 0x29, 0x2a, 0xc3, 0x26, 0xb3, 0x15, 0x2a, 0x2a, 0x5b, 0x07, 0x61, 0x9b, - 0xd6, 0x59, 0x21, 0x66, 0x8b, 0x40, 0x27, 0x2f, 0x82, 0xe9, 0xb0, 0xf4, 0xb3, 0x76, 0xd0, 0xd9, - 0xdb, 0x6b, 0x61, 0x65, 0x39, 0x3d, 0x2c, 0xe3, 0x86, 0xdc, 0x1b, 0x51, 0x23, 0x2c, 0x7c, 0x19, - 0x8c, 0xd1, 0xcf, 0x50, 0xb9, 0x46, 0x3b, 0xd1, 0xbc, 0xdc, 0xeb, 0xaa, 0xd3, 0x7d, 0x52, 0xa8, - 0x21, 0xee, 0x86, 0x25, 0xa1, 0xe3, 0x28, 0xf8, 0x87, 0x87, 0xae, 0xd7, 0x08, 0x15, 0x8d, 0x71, - 0xae, 0xf6, 0xba, 0xea, 0xc5, 0x74, 0xc7, 0x51, 0x8f, 0x30, 0x62, 0xc3, 0x11, 0xf3, 0xe8, 0x76, - 0x44, 0x1d, 0xcf, 0xc3, 0x01, 0xed, 0x80, 0xd8, 0xb1, 0xbc, 0x99, 0xae, 0x52, 0x01, 0xf3, 0xb3, - 0x6e, 0x29, 0xae, 0x52, 0x49, 0x0a, 0x2c, 0x02, 0xd9, 0x3c, 0x22, 0x38, 0xf0, 0xdc, 0xd6, 0x89, - 0xcc, 0x2a, 0x93, 0x11, 0x02, 0xc2, 0x11, 0x42, 0x14, 0xca, 0xd0, 0x60, 0x01, 0x4c, 0xd6, 0x48, - 0x80, 0xc3, 0x10, 0x07, 0xa1, 0x82, 0x97, 0x73, 0x2b, 0x53, 0x77, 0xe7, 0xe2, 0x13, 0x1e, 0xd9, - 0xc5, 0x3e, 0x2e, 0x8c, 0xb1, 0x1a, 0xea, 0xf3, 0xe0, 0x6d, 0x30, 0x51, 0x38, 0xc0, 0xf5, 0x27, - 0x54, 0x63, 0x8f, 0x2d, 0x8c, 0x70, 0xcc, 0xeb, 0x91, 0x47, 0x43, 0x27, 0x20, 0x5a, 0x23, 0x39, - 0xbb, 0x84, 0x8f, 0x59, 0x3f, 0xce, 0xba, 0xa8, 0x31, 0x71, 0xc3, 0xf1, 0x91, 0xd8, 0xdd, 0x1b, - 0x36, 0x3f, 0xc2, 0x1a, 0x4a, 0x32, 0xe0, 0x43, 0x00, 0x13, 0x06, 0xcb, 0x0d, 0xf6, 0x31, 0x6f, - 0xa3, 0xc6, 0xf2, 0xcb, 0xbd, 0xae, 0x7a, 0x65, 0xa0, 0x8e, 0xde, 0xa2, 0x38, 0x0d, 0x0d, 0x20, - 0xc3, 0x47, 0xe0, 0x5c, 0xdf, 0xda, 0xd9, 0xdb, 0x6b, 0x1e, 0x21, 0xd7, 0xdb, 0xc7, 0xca, 0xe7, - 0x5c, 0x54, 0xeb, 0x75, 0xd5, 0xa5, 0xac, 0x28, 0x03, 0xea, 0x01, 0x45, 0x6a, 0x68, 0xa0, 0x00, - 0x74, 0xc1, 0x85, 0x41, 0x76, 0xfb, 0xc8, 0x53, 0xbe, 0xe0, 0xda, 0x2f, 0xf7, 0xba, 0xaa, 0x76, - 0xaa, 0xb6, 0x4e, 0x8e, 0x3c, 0x0d, 0x0d, 0xd3, 0x81, 0x9b, 0x60, 0xee, 0xc4, 0x65, 0x1f, 0x79, - 0x95, 0x76, 0xa8, 0x7c, 0xc9, 0xa5, 0x85, 0x2d, 0x21, 0x48, 0x93, 0x23, 0x4f, 0xf7, 0xdb, 0xa1, - 0x86, 0xd2, 0x34, 0xf8, 0x5e, 0x9c, 0x1b, 0x5e, 0xed, 0x43, 0xde, 0x52, 0x8e, 0x89, 0x15, 0x39, - 0xd2, 0xe1, 0x7d, 0x42, 0x78, 0x92, 0x9a, 0x88, 0x00, 0x5f, 0x8b, 0xf7, 0xd4, 0xc3, 0x6a, 0x8d, - 0x37, 0x93, 0x63, 0x62, 0x63, 0x1f, 0xb1, 0x3f, 0x68, 0xf7, 0x37, 0xd1, 0xc3, 0x6a, 0x4d, 0xfb, - 0x16, 0x98, 0x88, 0x77, 0x14, 0xbd, 0xd9, 0xed, 0xe3, 0x76, 0xf4, 0x92, 0x14, 0x6f, 0x76, 0x72, - 0xdc, 0xc6, 0x1a, 0x62, 0x4e, 0x78, 0x13, 0x8c, 0x3f, 0xc2, 0xcd, 0xfd, 0x03, 0xc2, 0x6a, 0x85, - 0x94, 0x9f, 0xef, 0x75, 0xd5, 0x19, 0x0e, 0xfb, 0x90, 0xd9, 0x35, 0x14, 0x01, 0xb4, 0xef, 0xcc, - 0xf1, 0xd6, 0x96, 0x0a, 0xf7, 0x9f, 0xa8, 0xa2, 0xb0, 0xe7, 0x1e, 0x52, 0x61, 0xf6, 0x5a, 0x15, - 0x8a, 0xd6, 0xc8, 0x0b, 0x14, 0xad, 0x55, 0x30, 0xfe, 0xc8, 0xb0, 0x28, 0x3a, 0x97, 0xae, 0x59, - 0x1f, 0xba, 0x2d, 0x0e, 0x8e, 0x10, 0xb0, 0x02, 0x16, 0x36, 0xb1, 0x1b, 0x90, 0x5d, 0xec, 0x92, - 0xa2, 0x47, 0x70, 0xf0, 0xd4, 0x6d, 0x45, 0x25, 0x29, 0x27, 0x66, 0xea, 0x20, 0x06, 0xe9, 0xcd, - 0x08, 0xa5, 0xa1, 0x41, 0x4c, 0x58, 0x04, 0xf3, 0x66, 0x0b, 0xd7, 0xe9, 0x23, 0xdf, 0x6e, 0x1e, - 0x62, 0xbf, 0x43, 0xb6, 0x42, 0x56, 0x9a, 0x72, 0xe2, 0x95, 0x82, 0x23, 0x88, 0x4e, 0x38, 0x46, - 0x43, 0x59, 0x16, 0xbd, 0x55, 0xac, 0x66, 0x48, 0xb0, 0x27, 0x3c, 0xd2, 0x17, 0xd3, 0xd7, 0x5c, - 0x8b, 0x21, 0xe2, 0xf7, 0x44, 0x27, 0x68, 0x85, 0x1a, 0xca, 0xd0, 0x20, 0x02, 0x0b, 0x46, 0xe3, - 0x29, 0x0e, 0x48, 0x33, 0xc4, 0x82, 0xda, 0x79, 0xa6, 0x26, 0x1c, 0x4e, 0x37, 0x06, 0x25, 0x05, - 0x07, 0x91, 0xe1, 0x5b, 0x71, 0x5f, 0x6d, 0x74, 0x88, 0x6f, 0x5b, 0xb5, 0xa8, 0xc4, 0x08, 0xb9, - 0x71, 0x3b, 0xc4, 0xd7, 0x09, 0x15, 0x48, 0x22, 0xe9, 0xa5, 0xdb, 0xef, 0xf3, 0x8d, 0x0e, 0x39, - 0x50, 0x14, 0xc6, 0x1d, 0xf2, 0x34, 0x70, 0x3b, 0xa9, 0xa7, 0x01, 0xa5, 0xc0, 0x6f, 0x88, 0x22, - 0xeb, 0xcd, 0x16, 0x56, 0x2e, 0xa6, 0x5f, 0xb9, 0x8c, 0xbd, 0xd7, 0xa4, 0x95, 0x26, 0x85, 0xed, - 0x47, 0x5f, 0xc2, 0xc7, 0x8c, 0x7c, 0x29, 0xbd, 0xb3, 0xe8, 0xa9, 0xe4, 0xdc, 0x24, 0x12, 0x5a, - 0x99, 0xbe, 0x9d, 0x09, 0x5c, 0x4e, 0xbf, 0x2a, 0x84, 0x9e, 0x90, 0xeb, 0x0c, 0xa2, 0xd1, 0xb5, - 0xe0, 0xe9, 0xa2, 0x0d, 0x23, 0xcb, 0x8a, 0xca, 0xb2, 0x22, 0xac, 0x45, 0x94, 0x63, 0xd6, 0x68, - 0xf2, 0x84, 0xa4, 0x28, 0xd0, 0x06, 0xf3, 0x27, 0x29, 0x3a, 0xd1, 0x59, 0x66, 0x3a, 0xc2, 0x4d, - 0xd6, 0xf4, 0x9a, 0xa4, 0xe9, 0xb6, 0xf4, 0x7e, 0x96, 0x05, 0xc9, 0xac, 0x00, 0xed, 0x03, 0xe8, - 0xdf, 0x71, 0x7e, 0xaf, 0xb1, 0x1c, 0xa5, 0x9b, 0xf1, 0x7e, 0x92, 0x45, 0x30, 0x7d, 0x0d, 0xb3, - 0x67, 0x41, 0x32, 0xcd, 0x1a, 0x93, 0x10, 0x36, 0x1c, 0x7f, 0x4b, 0x64, 0x72, 0x3d, 0x80, 0x4b, - 0xdb, 0xe7, 0xf8, 0xa1, 0xc1, 0xd6, 0xfb, 0xfa, 0xf0, 0x77, 0x09, 0x5f, 0xee, 0x04, 0x3c, 0x9e, - 0x4c, 0x9c, 0xee, 0x97, 0x86, 0xbe, 0x2c, 0x38, 0x59, 0x04, 0xc3, 0xad, 0xd4, 0x4b, 0x80, 0x29, - 0xdc, 0x78, 0xde, 0x43, 0x80, 0x0b, 0x65, 0x99, 0xb4, 0xbd, 0x2b, 0xf2, 0x54, 0x14, 0x5a, 0x1d, - 0xf6, 0xbf, 0x7b, 0x37, 0xd3, 0x7b, 0x27, 0x4e, 0x55, 0x9d, 0x03, 0x34, 0x94, 0x62, 0xd0, 0x13, - 0x9d, 0xb4, 0xd4, 0x88, 0x4b, 0x70, 0xd4, 0x75, 0x08, 0x0b, 0x9c, 0x12, 0xd2, 0x43, 0x0a, 0xd3, - 0xd0, 0x20, 0x72, 0x56, 0xd3, 0xf6, 0x9f, 0x60, 0x4f, 0x79, 0xe5, 0x79, 0x9a, 0x84, 0xc2, 0x32, - 0x9a, 0x8c, 0x0c, 0x1f, 0x80, 0x99, 0xf8, 0x2d, 0x52, 0xf0, 0x3b, 0x1e, 0x51, 0xee, 0xb1, 0xbb, - 0x50, 0x2c, 0x5e, 0xf1, 0xa3, 0xa7, 0x4e, 0xfd, 0xb4, 0x78, 0x89, 0x78, 0x68, 0x81, 0xf9, 0x87, - 0x1d, 0x9f, 0xb8, 0x79, 0xb7, 0xfe, 0x04, 0x7b, 0x8d, 0xfc, 0x31, 0xc1, 0xa1, 0xf2, 0x1a, 0x13, - 0x11, 0x7a, 0xfd, 0x0f, 0x28, 0x44, 0xdf, 0xe5, 0x18, 0x7d, 0x97, 0x82, 0x34, 0x94, 0x25, 0xd2, - 0x52, 0x52, 0x0d, 0xf0, 0x8e, 0x4f, 0xb0, 0xf2, 0x20, 0x7d, 0x5d, 0xb5, 0x03, 0xac, 0x3f, 0xf5, - 0xe9, 0xea, 0xc4, 0x18, 0x71, 0x45, 0xfc, 0x20, 0xe8, 0xb4, 0x09, 0xeb, 0x98, 0x94, 0xf7, 0xd2, - 0xdb, 0xf8, 0x64, 0x45, 0x38, 0x4a, 0x67, 0x3d, 0x96, 0xb0, 0x22, 0x02, 0x99, 0x96, 0x49, 0xcb, - 0xdf, 0xdf, 0xc7, 0x81, 0xb2, 0xc1, 0x16, 0x56, 0x28, 0x93, 0x2d, 0x66, 0xd7, 0x50, 0x04, 0xa0, - 0xef, 0x07, 0xcb, 0xdf, 0xaf, 0x74, 0x48, 0xbb, 0x43, 0x42, 0x65, 0x93, 0x9d, 0x67, 0xe1, 0xfd, - 0xd0, 0xf2, 0xf7, 0x75, 0x9f, 0x3b, 0x35, 0x24, 0x20, 0xe1, 0x1d, 0x30, 0x61, 0xf9, 0xfb, 0x16, - 0x7e, 0x8a, 0x5b, 0x4a, 0x31, 0x7d, 0x29, 0x52, 0x56, 0x8b, 0xba, 0x34, 0x74, 0x82, 0x5a, 0xfd, - 0xaf, 0x04, 0xa6, 0xe3, 0x6a, 0xcf, 0x8a, 0x39, 0x04, 0xb3, 0xa5, 0x1d, 0xe7, 0x11, 0x2a, 0xda, - 0xa6, 0x53, 0xdb, 0x32, 0x2c, 0x4b, 0x3e, 0x93, 0xb0, 0x59, 0x06, 0xda, 0x30, 0x65, 0x09, 0x2e, - 0x80, 0xb9, 0xd2, 0x8e, 0x83, 0x4c, 0x63, 0xcd, 0xa9, 0x94, 0x4d, 0xa7, 0x64, 0xbe, 0x2f, 0x8f, - 0xc0, 0x79, 0x30, 0x13, 0x1b, 0x91, 0x51, 0xde, 0x30, 0xe5, 0x1c, 0x5c, 0x04, 0xf3, 0xa5, 0x1d, - 0x67, 0xcd, 0xb4, 0x4c, 0xdb, 0x3c, 0x41, 0x8e, 0x46, 0xf4, 0xc8, 0xcc, 0xb1, 0x63, 0xf0, 0x02, - 0x58, 0x28, 0xed, 0x38, 0xf6, 0xe3, 0x72, 0x34, 0x16, 0x77, 0xcb, 0xe3, 0x70, 0x12, 0x8c, 0x59, - 0xa6, 0x51, 0x33, 0x65, 0x40, 0x89, 0xa6, 0x65, 0x16, 0xec, 0x62, 0xa5, 0xec, 0xa0, 0xed, 0x72, - 0xd9, 0x44, 0xf2, 0x39, 0x28, 0x83, 0xe9, 0x47, 0x86, 0x5d, 0xd8, 0x8c, 0x2d, 0x2a, 0x1d, 0xd6, - 0xaa, 0x14, 0x4a, 0x0e, 0x32, 0x0a, 0x26, 0x8a, 0xcd, 0x37, 0x29, 0x90, 0x09, 0xc5, 0x96, 0x7b, - 0xab, 0x79, 0x70, 0x36, 0xea, 0x86, 0xe1, 0x14, 0x38, 0x5b, 0xda, 0x71, 0x36, 0x8d, 0xda, 0xa6, - 0x7c, 0xa6, 0x8f, 0x34, 0x1f, 0x57, 0x8b, 0x88, 0xce, 0x18, 0x80, 0xf1, 0x88, 0x35, 0x02, 0xa7, - 0xc1, 0x44, 0xb9, 0xe2, 0x14, 0x36, 0xcd, 0x42, 0x49, 0xce, 0xad, 0xfe, 0x24, 0x27, 0xfc, 0x0a, - 0x00, 0xe7, 0xc0, 0x54, 0xb9, 0x62, 0x3b, 0x35, 0xdb, 0x40, 0xb6, 0xb9, 0x26, 0x9f, 0x81, 0xe7, - 0x01, 0x2c, 0x96, 0x8b, 0x76, 0xd1, 0xb0, 0xb8, 0xd1, 0x31, 0xed, 0xc2, 0x9a, 0x0c, 0xe8, 0x10, - 0xc8, 0x14, 0x2c, 0x53, 0xd4, 0x52, 0x2b, 0x6e, 0xd8, 0x26, 0xda, 0xe2, 0x96, 0x73, 0x70, 0x19, - 0x5c, 0xa9, 0x15, 0x37, 0x1e, 0x6e, 0x17, 0x39, 0xc6, 0x31, 0xca, 0x6b, 0x0e, 0x32, 0xb7, 0x2a, - 0x3b, 0xa6, 0xb3, 0x66, 0xd8, 0x86, 0xbc, 0x48, 0xd7, 0xbc, 0x66, 0xec, 0x98, 0x4e, 0xad, 0x6c, - 0x54, 0x6b, 0x9b, 0x15, 0x5b, 0x5e, 0x82, 0xd7, 0xc0, 0x55, 0x2a, 0x5c, 0x41, 0xa6, 0x13, 0x0f, - 0xb0, 0x8e, 0x2a, 0x5b, 0x7d, 0x88, 0x0a, 0x2f, 0x82, 0xc5, 0xc1, 0xae, 0x65, 0xca, 0xce, 0x0c, - 0x69, 0xa0, 0xc2, 0x66, 0x31, 0x1e, 0x73, 0x05, 0xde, 0x06, 0xaf, 0x9c, 0x16, 0x15, 0xfb, 0xae, - 0xd9, 0x95, 0xaa, 0x63, 0x6c, 0x98, 0x65, 0x5b, 0xbe, 0x09, 0xaf, 0x82, 0x8b, 0x79, 0xcb, 0x28, - 0x94, 0x36, 0x2b, 0x96, 0xe9, 0x54, 0x4d, 0x13, 0x39, 0xd5, 0x0a, 0xb2, 0x1d, 0xfb, 0xb1, 0x83, - 0x1e, 0xcb, 0x0d, 0xa8, 0x82, 0xcb, 0xdb, 0xe5, 0xe1, 0x00, 0x0c, 0x2f, 0x81, 0xc5, 0x35, 0xd3, - 0x32, 0xde, 0xcf, 0xb8, 0x9e, 0x49, 0xf0, 0x0a, 0xb8, 0xb0, 0x5d, 0x1e, 0xec, 0xfd, 0x54, 0x5a, - 0xfd, 0x2b, 0x00, 0xa3, 0xf4, 0xf9, 0x08, 0x15, 0x70, 0x2e, 0x5e, 0x5b, 0xba, 0x0d, 0xd7, 0x2b, - 0x96, 0x55, 0x79, 0x64, 0x22, 0xf9, 0x4c, 0x34, 0x9b, 0x8c, 0xc7, 0xd9, 0x2e, 0xdb, 0x45, 0xcb, - 0xb1, 0x51, 0x71, 0x63, 0xc3, 0x44, 0xfd, 0x15, 0x92, 0xe8, 0x79, 0x88, 0x09, 0x96, 0x69, 0xac, - 0xb1, 0x1d, 0x71, 0x13, 0xdc, 0x48, 0xda, 0x86, 0xd1, 0x73, 0x22, 0xfd, 0xe1, 0x76, 0x05, 0x6d, - 0x6f, 0xc9, 0xa3, 0x74, 0xd3, 0xc4, 0x36, 0x7a, 0xe6, 0xc6, 0xe0, 0x75, 0xa0, 0xc6, 0x4b, 0x2c, - 0xac, 0x6e, 0x22, 0x72, 0x00, 0xef, 0x83, 0xd7, 0x9f, 0x03, 0x1a, 0x16, 0xc5, 0x14, 0x4d, 0xc9, - 0x00, 0x6e, 0x34, 0x9f, 0x69, 0xf8, 0x1a, 0xb8, 0x33, 0xd4, 0x3d, 0x4c, 0x74, 0x06, 0xae, 0x83, - 0xfc, 0x00, 0x16, 0x9f, 0x65, 0x64, 0xe1, 0xfb, 0x32, 0x12, 0x8a, 0xa9, 0xd1, 0x26, 0x2c, 0x20, - 0x7a, 0x8a, 0xe5, 0x59, 0xb8, 0x0a, 0x5e, 0x1e, 0xba, 0x1d, 0x92, 0x8b, 0xd0, 0x80, 0x06, 0x78, - 0xe7, 0xc5, 0xb0, 0xc3, 0xc2, 0xc6, 0xf0, 0x25, 0xb0, 0x3c, 0x5c, 0x22, 0x5a, 0x92, 0x3d, 0xf8, - 0x36, 0x78, 0xe3, 0x79, 0xa8, 0x61, 0x43, 0xec, 0x9f, 0x3e, 0x44, 0xb4, 0x0d, 0x0e, 0xe8, 0xd9, - 0x1b, 0x8e, 0xa2, 0x1b, 0xa3, 0x09, 0xff, 0x0f, 0x68, 0x03, 0x37, 0x7b, 0x72, 0x59, 0x9e, 0x49, - 0xf0, 0x16, 0xb8, 0x89, 0x8c, 0xf2, 0x5a, 0x65, 0xcb, 0x79, 0x01, 0xfc, 0xa7, 0x12, 0x7c, 0x17, - 0xbc, 0xf5, 0x7c, 0xe0, 0xb0, 0x09, 0x7e, 0x26, 0x41, 0x13, 0xbc, 0xf7, 0xc2, 0xe3, 0x0d, 0x93, - 0xf9, 0x5c, 0x82, 0xd7, 0xc0, 0x95, 0xc1, 0xfc, 0x28, 0x0f, 0x5f, 0x48, 0x70, 0x05, 0x5c, 0x3f, - 0x75, 0xa4, 0x08, 0xf9, 0xa5, 0x04, 0xdf, 0x04, 0xf7, 0x4e, 0x83, 0x0c, 0x0b, 0xe3, 0x57, 0x12, - 0x7c, 0x00, 0xee, 0xbf, 0xc0, 0x18, 0xc3, 0x04, 0x7e, 0x7d, 0xca, 0x3c, 0xa2, 0x64, 0x7f, 0xf5, - 0xfc, 0x79, 0x44, 0xc8, 0xdf, 0x48, 0x70, 0x09, 0x5c, 0x1c, 0x0c, 0xa1, 0x7b, 0xe2, 0xb7, 0x12, - 0xbc, 0x01, 0x96, 0x4f, 0x55, 0xa2, 0xb0, 0xdf, 0x49, 0x50, 0x01, 0x0b, 0xe5, 0x8a, 0xb3, 0x6e, - 0x14, 0x2d, 0xe7, 0x51, 0xd1, 0xde, 0x74, 0x6a, 0x36, 0x32, 0x6b, 0x35, 0xf9, 0x67, 0x23, 0x34, - 0x94, 0x84, 0xa7, 0x5c, 0x89, 0x9c, 0xce, 0x7a, 0x05, 0x39, 0x56, 0x71, 0xc7, 0x2c, 0x53, 0xe4, - 0x27, 0x23, 0x70, 0x0e, 0x00, 0x0a, 0xab, 0x56, 0x8a, 0x65, 0xbb, 0x26, 0x7f, 0x37, 0x07, 0x67, - 0xc0, 0x84, 0xf9, 0xd8, 0x36, 0x51, 0xd9, 0xb0, 0xe4, 0xbf, 0xe5, 0xee, 0x3e, 0x00, 0x93, 0x76, - 0xe0, 0x7a, 0x61, 0xdb, 0x0f, 0x08, 0xbc, 0x2b, 0x7e, 0xcc, 0x46, 0xff, 0x9f, 0x15, 0xfd, 0x76, - 0x7e, 0x69, 0xee, 0xe4, 0x9b, 0xff, 0xac, 0xaa, 0x9d, 0x59, 0x91, 0xee, 0x48, 0xf9, 0x73, 0xcf, - 0xfe, 0xb4, 0x74, 0xe6, 0xd9, 0xd7, 0x4b, 0xd2, 0x57, 0x5f, 0x2f, 0x49, 0x7f, 0xfc, 0x7a, 0x49, - 0xfa, 0xf1, 0x9f, 0x97, 0xce, 0xec, 0x8e, 0xb3, 0xdf, 0xde, 0xef, 0xfd, 0x2f, 0x00, 0x00, 0xff, - 0xff, 0xda, 0x3b, 0x5a, 0x70, 0xc4, 0x1f, 0x00, 0x00, + proto.RegisterEnum("rpcpb.Operation", Operation_name, Operation_value) + proto.RegisterEnum("rpcpb.Case", Case_name, Case_value) + proto.RegisterEnum("rpcpb.Stresser", Stresser_name, Stresser_value) + proto.RegisterEnum("rpcpb.Checker", Checker_name, Checker_value) } // Reference imports to suppress errors if they are not otherwise used. @@ -1236,9 +789,8 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// TransportClient is the client API for Transport service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for Transport service + type TransportClient interface { Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error) } @@ -1252,7 +804,7 @@ func NewTransportClient(cc *grpc.ClientConn) TransportClient { } func (c *transportClient) Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error) { - stream, err := c.cc.NewStream(ctx, &_Transport_serviceDesc.Streams[0], "/rpcpb.Transport/Transport", opts...) + stream, err := grpc.NewClientStream(ctx, &_Transport_serviceDesc.Streams[0], c.cc, "/rpcpb.Transport/Transport", opts...) if err != nil { return nil, err } @@ -1282,19 +834,12 @@ func (x *transportTransportClient) Recv() (*Response, error) { return m, nil } -// TransportServer is the server API for Transport service. +// Server API for Transport service + type TransportServer interface { Transport(Transport_TransportServer) error } -// UnimplementedTransportServer can be embedded to have forward compatible implementations. -type UnimplementedTransportServer struct { -} - -func (*UnimplementedTransportServer) Transport(srv Transport_TransportServer) error { - return status.Errorf(codes.Unimplemented, "method Transport not implemented") -} - func RegisterTransportServer(s *grpc.Server, srv TransportServer) { s.RegisterService(&_Transport_serviceDesc, srv) } @@ -1343,7 +888,7 @@ var _Transport_serviceDesc = grpc.ServiceDesc{ func (m *Request) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -1351,55 +896,42 @@ func (m *Request) Marshal() (dAtA []byte, err error) { } func (m *Request) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Request) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Tester != nil { - { - size, err := m.Tester.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + if m.Operation != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.Operation)) } if m.Member != nil { - { - size, err := m.Member.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.Member.Size())) + n1, err := m.Member.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 } - if m.Operation != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Operation)) - i-- - dAtA[i] = 0x8 + if m.Tester != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.Tester.Size())) + n2, err := m.Tester.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 } - return len(dAtA) - i, nil + return i, nil } func (m *SnapshotInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -1407,85 +939,77 @@ func (m *SnapshotInfo) Marshal() (dAtA []byte, err error) { } func (m *SnapshotInfo) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Took) > 0 { - i -= len(m.Took) - copy(dAtA[i:], m.Took) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Took))) - i-- - dAtA[i] = 0x4a - } - if m.SnapshotRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotRevision)) - i-- - dAtA[i] = 0x40 - } - if m.SnapshotHash != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotHash)) - i-- - dAtA[i] = 0x38 - } - if m.SnapshotTotalKey != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotTotalKey)) - i-- - dAtA[i] = 0x30 - } - if len(m.SnapshotTotalSize) > 0 { - i -= len(m.SnapshotTotalSize) - copy(dAtA[i:], m.SnapshotTotalSize) - i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotTotalSize))) - i-- - dAtA[i] = 0x2a - } - if len(m.SnapshotFileSize) > 0 { - i -= len(m.SnapshotFileSize) - copy(dAtA[i:], m.SnapshotFileSize) - i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotFileSize))) - i-- - dAtA[i] = 0x22 - } - if len(m.SnapshotPath) > 0 { - i -= len(m.SnapshotPath) - copy(dAtA[i:], m.SnapshotPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath))) - i-- - dAtA[i] = 0x1a + if len(m.MemberName) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberName))) + i += copy(dAtA[i:], m.MemberName) } if len(m.MemberClientURLs) > 0 { - for iNdEx := len(m.MemberClientURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.MemberClientURLs[iNdEx]) - copy(dAtA[i:], m.MemberClientURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberClientURLs[iNdEx]))) - i-- + for _, s := range m.MemberClientURLs { dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) } } - if len(m.MemberName) > 0 { - i -= len(m.MemberName) - copy(dAtA[i:], m.MemberName) - i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberName))) - i-- - dAtA[i] = 0xa + if len(m.SnapshotPath) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath))) + i += copy(dAtA[i:], m.SnapshotPath) } - return len(dAtA) - i, nil + if len(m.SnapshotFileSize) > 0 { + dAtA[i] = 0x22 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotFileSize))) + i += copy(dAtA[i:], m.SnapshotFileSize) + } + if len(m.SnapshotTotalSize) > 0 { + dAtA[i] = 0x2a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotTotalSize))) + i += copy(dAtA[i:], m.SnapshotTotalSize) + } + if m.SnapshotTotalKey != 0 { + dAtA[i] = 0x30 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotTotalKey)) + } + if m.SnapshotHash != 0 { + dAtA[i] = 0x38 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotHash)) + } + if m.SnapshotRevision != 0 { + dAtA[i] = 0x40 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotRevision)) + } + if len(m.Took) > 0 { + dAtA[i] = 0x4a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.Took))) + i += copy(dAtA[i:], m.Took) + } + return i, nil } func (m *Response) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -1493,67 +1017,53 @@ func (m *Response) Marshal() (dAtA []byte, err error) { } func (m *Response) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Response) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.SnapshotInfo != nil { - { - size, err := m.SnapshotInfo.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Member != nil { - { - size, err := m.Member.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if len(m.Status) > 0 { - i -= len(m.Status) - copy(dAtA[i:], m.Status) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Status))) - i-- - dAtA[i] = 0x12 - } if m.Success { - i-- + dAtA[i] = 0x8 + i++ if m.Success { dAtA[i] = 1 } else { dAtA[i] = 0 } - i-- - dAtA[i] = 0x8 + i++ } - return len(dAtA) - i, nil + if len(m.Status) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + } + if m.Member != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.Member.Size())) + n3, err := m.Member.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + if m.SnapshotInfo != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotInfo.Size())) + n4, err := m.SnapshotInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + return i, nil } func (m *Member) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -1561,248 +1071,223 @@ func (m *Member) Marshal() (dAtA []byte, err error) { } func (m *Member) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) + if len(m.EtcdExecPath) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdExecPath))) + i += copy(dAtA[i:], m.EtcdExecPath) } - if m.SnapshotInfo != nil { - { - size, err := m.SnapshotInfo.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x25 - i-- - dAtA[i] = 0xd2 + if len(m.AgentAddr) > 0 { + dAtA[i] = 0x5a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.AgentAddr))) + i += copy(dAtA[i:], m.AgentAddr) } - if len(m.SnapshotPath) > 0 { - i -= len(m.SnapshotPath) - copy(dAtA[i:], m.SnapshotPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath))) - i-- - dAtA[i] = 0x25 - i-- - dAtA[i] = 0xca + if len(m.FailpointHTTPAddr) > 0 { + dAtA[i] = 0x62 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointHTTPAddr))) + i += copy(dAtA[i:], m.FailpointHTTPAddr) } - if len(m.PeerTrustedCAPath) > 0 { - i -= len(m.PeerTrustedCAPath) - copy(dAtA[i:], m.PeerTrustedCAPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAPath))) - i-- - dAtA[i] = 0x1f - i-- - dAtA[i] = 0xd2 - } - if len(m.PeerTrustedCAData) > 0 { - i -= len(m.PeerTrustedCAData) - copy(dAtA[i:], m.PeerTrustedCAData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAData))) - i-- - dAtA[i] = 0x1f - i-- - dAtA[i] = 0xca - } - if len(m.PeerKeyPath) > 0 { - i -= len(m.PeerKeyPath) - copy(dAtA[i:], m.PeerKeyPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyPath))) - i-- - dAtA[i] = 0x1f - i-- - dAtA[i] = 0xc2 - } - if len(m.PeerKeyData) > 0 { - i -= len(m.PeerKeyData) - copy(dAtA[i:], m.PeerKeyData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyData))) - i-- - dAtA[i] = 0x1f - i-- - dAtA[i] = 0xba - } - if len(m.PeerCertPath) > 0 { - i -= len(m.PeerCertPath) - copy(dAtA[i:], m.PeerCertPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertPath))) - i-- - dAtA[i] = 0x1f - i-- - dAtA[i] = 0xb2 - } - if len(m.PeerCertData) > 0 { - i -= len(m.PeerCertData) - copy(dAtA[i:], m.PeerCertData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertData))) - i-- - dAtA[i] = 0x1f - i-- + if len(m.BaseDir) > 0 { dAtA[i] = 0xaa + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.BaseDir))) + i += copy(dAtA[i:], m.BaseDir) } - if len(m.ClientTrustedCAPath) > 0 { - i -= len(m.ClientTrustedCAPath) - copy(dAtA[i:], m.ClientTrustedCAPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAPath))) - i-- - dAtA[i] = 0x19 - i-- + if len(m.EtcdLogPath) > 0 { dAtA[i] = 0xb2 - } - if len(m.ClientTrustedCAData) > 0 { - i -= len(m.ClientTrustedCAData) - copy(dAtA[i:], m.ClientTrustedCAData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAData))) - i-- - dAtA[i] = 0x19 - i-- - dAtA[i] = 0xaa - } - if len(m.ClientKeyPath) > 0 { - i -= len(m.ClientKeyPath) - copy(dAtA[i:], m.ClientKeyPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyPath))) - i-- - dAtA[i] = 0x19 - i-- - dAtA[i] = 0xa2 - } - if len(m.ClientKeyData) > 0 { - i -= len(m.ClientKeyData) - copy(dAtA[i:], m.ClientKeyData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyData))) - i-- - dAtA[i] = 0x19 - i-- - dAtA[i] = 0x9a - } - if len(m.ClientCertPath) > 0 { - i -= len(m.ClientCertPath) - copy(dAtA[i:], m.ClientCertPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertPath))) - i-- - dAtA[i] = 0x19 - i-- - dAtA[i] = 0x92 - } - if len(m.ClientCertData) > 0 { - i -= len(m.ClientCertData) - copy(dAtA[i:], m.ClientCertData) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertData))) - i-- - dAtA[i] = 0x19 - i-- - dAtA[i] = 0x8a - } - if m.EtcdOnSnapshotRestore != nil { - { - size, err := m.EtcdOnSnapshotRestore.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - i-- - dAtA[i] = 0xfa - } - if m.Etcd != nil { - { - size, err := m.Etcd.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - i-- - dAtA[i] = 0xf2 - } - if len(m.EtcdClientEndpoint) > 0 { - i -= len(m.EtcdClientEndpoint) - copy(dAtA[i:], m.EtcdClientEndpoint) - i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdClientEndpoint))) - i-- - dAtA[i] = 0x12 - i-- - dAtA[i] = 0xea - } - if m.EtcdPeerProxy { - i-- - if m.EtcdPeerProxy { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xd0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdLogPath))) + i += copy(dAtA[i:], m.EtcdLogPath) } if m.EtcdClientProxy { - i-- + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0xc + i++ if m.EtcdClientProxy { dAtA[i] = 1 } else { dAtA[i] = 0 } - i-- + i++ + } + if m.EtcdPeerProxy { + dAtA[i] = 0xd0 + i++ dAtA[i] = 0xc - i-- - dAtA[i] = 0xc8 + i++ + if m.EtcdPeerProxy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if len(m.BaseDir) > 0 { - i -= len(m.BaseDir) - copy(dAtA[i:], m.BaseDir) - i = encodeVarintRpc(dAtA, i, uint64(len(m.BaseDir))) - i-- - dAtA[i] = 0x6 - i-- + if len(m.EtcdClientEndpoint) > 0 { + dAtA[i] = 0xea + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdClientEndpoint))) + i += copy(dAtA[i:], m.EtcdClientEndpoint) + } + if m.Etcd != nil { + dAtA[i] = 0xf2 + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.Etcd.Size())) + n5, err := m.Etcd.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.EtcdOnSnapshotRestore != nil { + dAtA[i] = 0xfa + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.EtcdOnSnapshotRestore.Size())) + n6, err := m.EtcdOnSnapshotRestore.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if len(m.ClientCertData) > 0 { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertData))) + i += copy(dAtA[i:], m.ClientCertData) + } + if len(m.ClientCertPath) > 0 { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertPath))) + i += copy(dAtA[i:], m.ClientCertPath) + } + if len(m.ClientKeyData) > 0 { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyData))) + i += copy(dAtA[i:], m.ClientKeyData) + } + if len(m.ClientKeyPath) > 0 { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyPath))) + i += copy(dAtA[i:], m.ClientKeyPath) + } + if len(m.ClientTrustedCAData) > 0 { dAtA[i] = 0xaa + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAData))) + i += copy(dAtA[i:], m.ClientTrustedCAData) } - if len(m.FailpointHTTPAddr) > 0 { - i -= len(m.FailpointHTTPAddr) - copy(dAtA[i:], m.FailpointHTTPAddr) - i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointHTTPAddr))) - i-- - dAtA[i] = 0x62 + if len(m.ClientTrustedCAPath) > 0 { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAPath))) + i += copy(dAtA[i:], m.ClientTrustedCAPath) } - if len(m.AgentAddr) > 0 { - i -= len(m.AgentAddr) - copy(dAtA[i:], m.AgentAddr) - i = encodeVarintRpc(dAtA, i, uint64(len(m.AgentAddr))) - i-- - dAtA[i] = 0x5a + if len(m.PeerCertData) > 0 { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertData))) + i += copy(dAtA[i:], m.PeerCertData) } - if len(m.EtcdExec) > 0 { - i -= len(m.EtcdExec) - copy(dAtA[i:], m.EtcdExec) - i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdExec))) - i-- - dAtA[i] = 0xa + if len(m.PeerCertPath) > 0 { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertPath))) + i += copy(dAtA[i:], m.PeerCertPath) } - return len(dAtA) - i, nil + if len(m.PeerKeyData) > 0 { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyData))) + i += copy(dAtA[i:], m.PeerKeyData) + } + if len(m.PeerKeyPath) > 0 { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyPath))) + i += copy(dAtA[i:], m.PeerKeyPath) + } + if len(m.PeerTrustedCAData) > 0 { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAData))) + i += copy(dAtA[i:], m.PeerTrustedCAData) + } + if len(m.PeerTrustedCAPath) > 0 { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAPath))) + i += copy(dAtA[i:], m.PeerTrustedCAPath) + } + if len(m.SnapshotPath) > 0 { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x25 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath))) + i += copy(dAtA[i:], m.SnapshotPath) + } + if m.SnapshotInfo != nil { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x25 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotInfo.Size())) + n7, err := m.SnapshotInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + return i, nil } func (m *Tester) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -1810,268 +1295,233 @@ func (m *Tester) Marshal() (dAtA []byte, err error) { } func (m *Tester) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Tester) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) + if len(m.DataDir) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir))) + i += copy(dAtA[i:], m.DataDir) } - if m.StressQPS != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressQPS)) - i-- + if len(m.Network) > 0 { dAtA[i] = 0x12 - i-- - dAtA[i] = 0xf0 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.Network))) + i += copy(dAtA[i:], m.Network) } - if m.StressClients != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressClients)) - i-- - dAtA[i] = 0x12 - i-- - dAtA[i] = 0xe8 + if len(m.Addr) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.Addr))) + i += copy(dAtA[i:], m.Addr) } - if m.StressKeyTxnOps != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressKeyTxnOps)) - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xe8 + if m.DelayLatencyMs != 0 { + dAtA[i] = 0x58 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMs)) } - if m.StressKeySuffixRangeTxn != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRangeTxn)) - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xe0 + if m.DelayLatencyMsRv != 0 { + dAtA[i] = 0x60 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMsRv)) } - if m.StressKeySuffixRange != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRange)) - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xd8 + if m.UpdatedDelayLatencyMs != 0 { + dAtA[i] = 0x68 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.UpdatedDelayLatencyMs)) } - if m.StressKeySizeLarge != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySizeLarge)) - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xd0 - } - if m.StressKeySize != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySize)) - i-- - dAtA[i] = 0xc - i-- - dAtA[i] = 0xc8 - } - if len(m.Checkers) > 0 { - for iNdEx := len(m.Checkers) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Checkers[iNdEx]) - copy(dAtA[i:], m.Checkers[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Checkers[iNdEx]))) - i-- - dAtA[i] = 0x6 - i-- - dAtA[i] = 0xb2 - } - } - if len(m.Stressers) > 0 { - for iNdEx := len(m.Stressers) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Stressers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x6 - i-- - dAtA[i] = 0xaa - } - } - if len(m.ExternalExecPath) > 0 { - i -= len(m.ExternalExecPath) - copy(dAtA[i:], m.ExternalExecPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ExternalExecPath))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xd2 - } - if len(m.RunnerExecPath) > 0 { - i -= len(m.RunnerExecPath) - copy(dAtA[i:], m.RunnerExecPath) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RunnerExecPath))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xca - } - if len(m.FailpointCommands) > 0 { - for iNdEx := len(m.FailpointCommands) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.FailpointCommands[iNdEx]) - copy(dAtA[i:], m.FailpointCommands[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointCommands[iNdEx]))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x92 - } - } - if len(m.Cases) > 0 { - for iNdEx := len(m.Cases) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Cases[iNdEx]) - copy(dAtA[i:], m.Cases[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Cases[iNdEx]))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x8a - } - } - if m.CaseShuffle { - i-- - if m.CaseShuffle { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x80 - } - if m.CaseDelayMs != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.CaseDelayMs)) - i-- + if m.RoundLimit != 0 { + dAtA[i] = 0xa8 + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xf8 - } - if m.EnablePprof { - i-- - if m.EnablePprof { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xb8 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.RoundLimit)) } if m.ExitOnCaseFail { - i-- + dAtA[i] = 0xb0 + i++ + dAtA[i] = 0x1 + i++ if m.ExitOnCaseFail { dAtA[i] = 1 } else { dAtA[i] = 0 } - i-- + i++ + } + if m.EnablePprof { + dAtA[i] = 0xb8 + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xb0 + i++ + if m.EnablePprof { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if m.RoundLimit != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RoundLimit)) - i-- + if m.CaseDelayMs != 0 { + dAtA[i] = 0xf8 + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xa8 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.CaseDelayMs)) } - if m.UpdatedDelayLatencyMs != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.UpdatedDelayLatencyMs)) - i-- - dAtA[i] = 0x68 + if m.CaseShuffle { + dAtA[i] = 0x80 + i++ + dAtA[i] = 0x2 + i++ + if m.CaseShuffle { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if m.DelayLatencyMsRv != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMsRv)) - i-- - dAtA[i] = 0x60 + if len(m.Cases) > 0 { + for _, s := range m.Cases { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x2 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } } - if m.DelayLatencyMs != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMs)) - i-- - dAtA[i] = 0x58 + if len(m.FailpointCommands) > 0 { + for _, s := range m.FailpointCommands { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x2 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } } - if len(m.Addr) > 0 { - i -= len(m.Addr) - copy(dAtA[i:], m.Addr) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Addr))) - i-- - dAtA[i] = 0x1a + if len(m.RunnerExecPath) > 0 { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.RunnerExecPath))) + i += copy(dAtA[i:], m.RunnerExecPath) } - if len(m.Network) > 0 { - i -= len(m.Network) - copy(dAtA[i:], m.Network) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Network))) - i-- + if len(m.ExternalExecPath) > 0 { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ExternalExecPath))) + i += copy(dAtA[i:], m.ExternalExecPath) + } + if len(m.Stressers) > 0 { + for _, s := range m.Stressers { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x6 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Checkers) > 0 { + for _, s := range m.Checkers { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x6 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if m.StressKeySize != 0 { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySize)) + } + if m.StressKeySizeLarge != 0 { + dAtA[i] = 0xd0 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySizeLarge)) + } + if m.StressKeySuffixRange != 0 { + dAtA[i] = 0xd8 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRange)) + } + if m.StressKeySuffixRangeTxn != 0 { + dAtA[i] = 0xe0 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRangeTxn)) + } + if m.StressKeyTxnOps != 0 { + dAtA[i] = 0xe8 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressKeyTxnOps)) + } + if m.StressClients != 0 { + dAtA[i] = 0xe8 + i++ dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressClients)) } - if len(m.DataDir) > 0 { - i -= len(m.DataDir) - copy(dAtA[i:], m.DataDir) - i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir))) - i-- - dAtA[i] = 0xa + if m.StressQPS != 0 { + dAtA[i] = 0xf0 + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.StressQPS)) } - return len(dAtA) - i, nil -} - -func (m *Stresser) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Stresser) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Stresser) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Weight != 0 { - i -= 8 - encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Weight)))) - i-- - dAtA[i] = 0x11 - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil + return i, nil } func (m *Etcd) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) + n, err := m.MarshalTo(dAtA) if err != nil { return nil, err } @@ -2079,308 +1529,277 @@ func (m *Etcd) Marshal() (dAtA []byte, err error) { } func (m *Etcd) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Etcd) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) + var i int _ = i var l int _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) } - if len(m.LogLevel) > 0 { - i -= len(m.LogLevel) - copy(dAtA[i:], m.LogLevel) - i = encodeVarintRpc(dAtA, i, uint64(len(m.LogLevel))) - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0xca + if len(m.DataDir) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir))) + i += copy(dAtA[i:], m.DataDir) } - if len(m.LogOutputs) > 0 { - for iNdEx := len(m.LogOutputs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.LogOutputs[iNdEx]) - copy(dAtA[i:], m.LogOutputs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.LogOutputs[iNdEx]))) - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0xc2 - } + if len(m.WALDir) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.WALDir))) + i += copy(dAtA[i:], m.WALDir) } - if len(m.Logger) > 0 { - i -= len(m.Logger) - copy(dAtA[i:], m.Logger) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Logger))) - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0xba + if m.HeartbeatIntervalMs != 0 { + dAtA[i] = 0x58 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.HeartbeatIntervalMs)) } - if m.InitialCorruptCheck { - i-- - if m.InitialCorruptCheck { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0x80 + if m.ElectionTimeoutMs != 0 { + dAtA[i] = 0x60 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.ElectionTimeoutMs)) } - if m.PreVote { - i-- - if m.PreVote { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x3 - i-- - dAtA[i] = 0xf8 - } - if m.QuotaBackendBytes != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.QuotaBackendBytes)) - i-- - dAtA[i] = 0x3 - i-- - dAtA[i] = 0xa0 - } - if m.SnapshotCount != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotCount)) - i-- - dAtA[i] = 0x3 - i-- - dAtA[i] = 0x98 - } - if len(m.InitialClusterToken) > 0 { - i -= len(m.InitialClusterToken) - copy(dAtA[i:], m.InitialClusterToken) - i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterToken))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xda - } - if len(m.InitialClusterState) > 0 { - i -= len(m.InitialClusterState) - copy(dAtA[i:], m.InitialClusterState) - i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterState))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xd2 - } - if len(m.InitialCluster) > 0 { - i -= len(m.InitialCluster) - copy(dAtA[i:], m.InitialCluster) - i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialCluster))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xca - } - if len(m.PeerTrustedCAFile) > 0 { - i -= len(m.PeerTrustedCAFile) - copy(dAtA[i:], m.PeerTrustedCAFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAFile))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xaa - } - if len(m.PeerKeyFile) > 0 { - i -= len(m.PeerKeyFile) - copy(dAtA[i:], m.PeerKeyFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyFile))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xa2 - } - if len(m.PeerCertFile) > 0 { - i -= len(m.PeerCertFile) - copy(dAtA[i:], m.PeerCertFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertFile))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x9a - } - if m.PeerClientCertAuth { - i-- - if m.PeerClientCertAuth { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x90 - } - if m.PeerAutoTLS { - i-- - if m.PeerAutoTLS { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x88 - } - if len(m.AdvertisePeerURLs) > 0 { - for iNdEx := len(m.AdvertisePeerURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AdvertisePeerURLs[iNdEx]) - copy(dAtA[i:], m.AdvertisePeerURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.AdvertisePeerURLs[iNdEx]))) - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0x82 - } - } - if len(m.ListenPeerURLs) > 0 { - for iNdEx := len(m.ListenPeerURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ListenPeerURLs[iNdEx]) - copy(dAtA[i:], m.ListenPeerURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ListenPeerURLs[iNdEx]))) - i-- + if len(m.ListenClientURLs) > 0 { + for _, s := range m.ListenClientURLs { + dAtA[i] = 0xaa + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xfa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) } } - if len(m.ClientTrustedCAFile) > 0 { - i -= len(m.ClientTrustedCAFile) - copy(dAtA[i:], m.ClientTrustedCAFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAFile))) - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xda - } - if len(m.ClientKeyFile) > 0 { - i -= len(m.ClientKeyFile) - copy(dAtA[i:], m.ClientKeyFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyFile))) - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xd2 - } - if len(m.ClientCertFile) > 0 { - i -= len(m.ClientCertFile) - copy(dAtA[i:], m.ClientCertFile) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertFile))) - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xca - } - if m.ClientCertAuth { - i-- - if m.ClientCertAuth { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.AdvertiseClientURLs) > 0 { + for _, s := range m.AdvertiseClientURLs { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xc0 } if m.ClientAutoTLS { - i-- + dAtA[i] = 0xb8 + i++ + dAtA[i] = 0x1 + i++ if m.ClientAutoTLS { dAtA[i] = 1 } else { dAtA[i] = 0 } - i-- + i++ + } + if m.ClientCertAuth { + dAtA[i] = 0xc0 + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xb8 + i++ + if m.ClientCertAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if len(m.AdvertiseClientURLs) > 0 { - for iNdEx := len(m.AdvertiseClientURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AdvertiseClientURLs[iNdEx]) - copy(dAtA[i:], m.AdvertiseClientURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.AdvertiseClientURLs[iNdEx]))) - i-- + if len(m.ClientCertFile) > 0 { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertFile))) + i += copy(dAtA[i:], m.ClientCertFile) + } + if len(m.ClientKeyFile) > 0 { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyFile))) + i += copy(dAtA[i:], m.ClientKeyFile) + } + if len(m.ClientTrustedCAFile) > 0 { + dAtA[i] = 0xda + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAFile))) + i += copy(dAtA[i:], m.ClientTrustedCAFile) + } + if len(m.ListenPeerURLs) > 0 { + for _, s := range m.ListenPeerURLs { + dAtA[i] = 0xfa + i++ dAtA[i] = 0x1 - i-- - dAtA[i] = 0xb2 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) } } - if len(m.ListenClientURLs) > 0 { - for iNdEx := len(m.ListenClientURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ListenClientURLs[iNdEx]) - copy(dAtA[i:], m.ListenClientURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ListenClientURLs[iNdEx]))) - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xaa + if len(m.AdvertisePeerURLs) > 0 { + for _, s := range m.AdvertisePeerURLs { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x2 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) } } - if m.ElectionTimeoutMs != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ElectionTimeoutMs)) - i-- - dAtA[i] = 0x60 + if m.PeerAutoTLS { + dAtA[i] = 0x88 + i++ + dAtA[i] = 0x2 + i++ + if m.PeerAutoTLS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if m.HeartbeatIntervalMs != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.HeartbeatIntervalMs)) - i-- - dAtA[i] = 0x58 + if m.PeerClientCertAuth { + dAtA[i] = 0x90 + i++ + dAtA[i] = 0x2 + i++ + if m.PeerClientCertAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } - if len(m.WALDir) > 0 { - i -= len(m.WALDir) - copy(dAtA[i:], m.WALDir) - i = encodeVarintRpc(dAtA, i, uint64(len(m.WALDir))) - i-- - dAtA[i] = 0x1a + if len(m.PeerCertFile) > 0 { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertFile))) + i += copy(dAtA[i:], m.PeerCertFile) } - if len(m.DataDir) > 0 { - i -= len(m.DataDir) - copy(dAtA[i:], m.DataDir) - i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir))) - i-- - dAtA[i] = 0x12 + if len(m.PeerKeyFile) > 0 { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyFile))) + i += copy(dAtA[i:], m.PeerKeyFile) } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa + if len(m.PeerTrustedCAFile) > 0 { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAFile))) + i += copy(dAtA[i:], m.PeerTrustedCAFile) } - return len(dAtA) - i, nil + if len(m.InitialCluster) > 0 { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialCluster))) + i += copy(dAtA[i:], m.InitialCluster) + } + if len(m.InitialClusterState) > 0 { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterState))) + i += copy(dAtA[i:], m.InitialClusterState) + } + if len(m.InitialClusterToken) > 0 { + dAtA[i] = 0xda + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterToken))) + i += copy(dAtA[i:], m.InitialClusterToken) + } + if m.SnapshotCount != 0 { + dAtA[i] = 0x98 + i++ + dAtA[i] = 0x3 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotCount)) + } + if m.QuotaBackendBytes != 0 { + dAtA[i] = 0xa0 + i++ + dAtA[i] = 0x3 + i++ + i = encodeVarintRpc(dAtA, i, uint64(m.QuotaBackendBytes)) + } + if m.PreVote { + dAtA[i] = 0xf8 + i++ + dAtA[i] = 0x3 + i++ + if m.PreVote { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.InitialCorruptCheck { + dAtA[i] = 0x80 + i++ + dAtA[i] = 0x4 + i++ + if m.InitialCorruptCheck { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil } func encodeVarintRpc(dAtA []byte, offset int, v uint64) int { - offset -= sovRpc(v) - base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return base + return offset + 1 } func (m *Request) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l if m.Operation != 0 { @@ -2394,16 +1813,10 @@ func (m *Request) Size() (n int) { l = m.Tester.Size() n += 1 + l + sovRpc(uint64(l)) } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func (m *SnapshotInfo) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l l = len(m.MemberName) @@ -2441,16 +1854,10 @@ func (m *SnapshotInfo) Size() (n int) { if l > 0 { n += 1 + l + sovRpc(uint64(l)) } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func (m *Response) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l if m.Success { @@ -2468,19 +1875,13 @@ func (m *Response) Size() (n int) { l = m.SnapshotInfo.Size() n += 1 + l + sovRpc(uint64(l)) } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func (m *Member) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l - l = len(m.EtcdExec) + l = len(m.EtcdExecPath) if l > 0 { n += 1 + l + sovRpc(uint64(l)) } @@ -2496,6 +1897,10 @@ func (m *Member) Size() (n int) { if l > 0 { n += 2 + l + sovRpc(uint64(l)) } + l = len(m.EtcdLogPath) + if l > 0 { + n += 2 + l + sovRpc(uint64(l)) + } if m.EtcdClientProxy { n += 3 } @@ -2570,16 +1975,10 @@ func (m *Member) Size() (n int) { l = m.SnapshotInfo.Size() n += 2 + l + sovRpc(uint64(l)) } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func (m *Tester) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l l = len(m.DataDir) @@ -2639,8 +2038,8 @@ func (m *Tester) Size() (n int) { n += 2 + l + sovRpc(uint64(l)) } if len(m.Stressers) > 0 { - for _, e := range m.Stressers { - l = e.Size() + for _, s := range m.Stressers { + l = len(s) n += 2 + l + sovRpc(uint64(l)) } } @@ -2671,35 +2070,10 @@ func (m *Tester) Size() (n int) { if m.StressQPS != 0 { n += 2 + sovRpc(uint64(m.StressQPS)) } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *Stresser) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Type) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Weight != 0 { - n += 9 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func (m *Etcd) Size() (n int) { - if m == nil { - return 0 - } var l int _ = l l = len(m.Name) @@ -2804,28 +2178,18 @@ func (m *Etcd) Size() (n int) { if m.InitialCorruptCheck { n += 3 } - l = len(m.Logger) - if l > 0 { - n += 2 + l + sovRpc(uint64(l)) - } - if len(m.LogOutputs) > 0 { - for _, s := range m.LogOutputs { - l = len(s) - n += 2 + l + sovRpc(uint64(l)) - } - } - l = len(m.LogLevel) - if l > 0 { - n += 2 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } return n } func sovRpc(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n } func sozRpc(x uint64) (n int) { return sovRpc(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -2845,7 +2209,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -2873,7 +2237,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Operation |= Operation(b&0x7F) << shift + m.Operation |= (Operation(b) & 0x7F) << shift if b < 0x80 { break } @@ -2892,7 +2256,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -2901,9 +2265,6 @@ func (m *Request) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2928,7 +2289,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -2937,9 +2298,6 @@ func (m *Request) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2959,13 +2317,9 @@ func (m *Request) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2990,7 +2344,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3018,7 +2372,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3028,9 +2382,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3050,7 +2401,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3060,9 +2411,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3082,7 +2430,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3092,9 +2440,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3114,7 +2459,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3124,9 +2469,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3146,7 +2488,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3156,9 +2498,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3178,7 +2517,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SnapshotTotalKey |= int64(b&0x7F) << shift + m.SnapshotTotalKey |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3197,7 +2536,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SnapshotHash |= int64(b&0x7F) << shift + m.SnapshotHash |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3216,7 +2555,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SnapshotRevision |= int64(b&0x7F) << shift + m.SnapshotRevision |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3235,7 +2574,7 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3245,9 +2584,6 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3262,13 +2598,9 @@ func (m *SnapshotInfo) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3293,7 +2625,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3321,7 +2653,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3341,7 +2673,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3351,9 +2683,6 @@ func (m *Response) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3373,7 +2702,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3382,9 +2711,6 @@ func (m *Response) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3409,7 +2735,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3418,9 +2744,6 @@ func (m *Response) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3440,13 +2763,9 @@ func (m *Response) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3471,7 +2790,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3487,7 +2806,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EtcdExec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EtcdExecPath", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3499,7 +2818,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3509,13 +2828,10 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } - m.EtcdExec = string(dAtA[iNdEx:postIndex]) + m.EtcdExecPath = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 11: if wireType != 2 { @@ -3531,7 +2847,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3541,9 +2857,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3563,7 +2876,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3573,9 +2886,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3595,7 +2905,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3605,14 +2915,40 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } m.BaseDir = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 102: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EtcdLogPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRpc + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthRpc + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EtcdLogPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 201: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field EtcdClientProxy", wireType) @@ -3627,7 +2963,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3647,7 +2983,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3667,7 +3003,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3677,9 +3013,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3699,7 +3032,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3708,9 +3041,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3735,7 +3065,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -3744,9 +3074,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3771,7 +3098,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3781,9 +3108,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3803,7 +3127,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3813,9 +3137,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3835,7 +3156,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3845,9 +3166,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3867,7 +3185,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3877,9 +3195,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3899,7 +3214,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3909,9 +3224,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3931,7 +3243,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3941,9 +3253,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3963,7 +3272,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -3973,9 +3282,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3995,7 +3301,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4005,9 +3311,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4027,7 +3330,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4037,9 +3340,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4059,7 +3359,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4069,9 +3369,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4091,7 +3388,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4101,9 +3398,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4123,7 +3417,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4133,9 +3427,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4155,7 +3446,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4165,9 +3456,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4187,7 +3475,7 @@ func (m *Member) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -4196,9 +3484,6 @@ func (m *Member) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4218,13 +3503,9 @@ func (m *Member) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -4249,7 +3530,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4277,7 +3558,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4287,9 +3568,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4309,7 +3587,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4319,9 +3597,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4341,7 +3616,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4351,9 +3626,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4373,7 +3645,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DelayLatencyMs |= uint32(b&0x7F) << shift + m.DelayLatencyMs |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4392,7 +3664,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DelayLatencyMsRv |= uint32(b&0x7F) << shift + m.DelayLatencyMsRv |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4411,7 +3683,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.UpdatedDelayLatencyMs |= uint32(b&0x7F) << shift + m.UpdatedDelayLatencyMs |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4430,7 +3702,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.RoundLimit |= int32(b&0x7F) << shift + m.RoundLimit |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4449,7 +3721,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -4469,7 +3741,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -4489,7 +3761,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CaseDelayMs |= uint32(b&0x7F) << shift + m.CaseDelayMs |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4508,7 +3780,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -4528,7 +3800,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4538,9 +3810,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4560,7 +3829,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4570,9 +3839,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4592,7 +3858,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4602,9 +3868,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4624,7 +3887,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4634,9 +3897,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4646,7 +3906,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Stressers", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowRpc @@ -4656,25 +3916,20 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthRpc } + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Stressers = append(m.Stressers, &Stresser{}) - if err := m.Stressers[len(m.Stressers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Stressers = append(m.Stressers, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 102: if wireType != 2 { @@ -4690,7 +3945,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4700,9 +3955,6 @@ func (m *Tester) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4722,7 +3974,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressKeySize |= int32(b&0x7F) << shift + m.StressKeySize |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4741,7 +3993,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressKeySizeLarge |= int32(b&0x7F) << shift + m.StressKeySizeLarge |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4760,7 +4012,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressKeySuffixRange |= int32(b&0x7F) << shift + m.StressKeySuffixRange |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4779,7 +4031,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressKeySuffixRangeTxn |= int32(b&0x7F) << shift + m.StressKeySuffixRangeTxn |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4798,7 +4050,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressKeyTxnOps |= int32(b&0x7F) << shift + m.StressKeyTxnOps |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4817,7 +4069,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressClients |= int32(b&0x7F) << shift + m.StressClients |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4836,7 +4088,7 @@ func (m *Tester) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StressQPS |= int32(b&0x7F) << shift + m.StressQPS |= (int32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4850,110 +4102,9 @@ func (m *Tester) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Stresser) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Stresser: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Stresser: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 1 { - return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) - } - var v uint64 - if (iNdEx + 8) > l { - return io.ErrUnexpectedEOF - } - v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) - iNdEx += 8 - m.Weight = float64(math.Float64frombits(v)) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -4978,7 +4129,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= uint64(b&0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5006,7 +4157,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5016,9 +4167,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5038,7 +4186,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5048,9 +4196,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5070,7 +4215,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5080,9 +4225,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5102,7 +4244,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.HeartbeatIntervalMs |= int64(b&0x7F) << shift + m.HeartbeatIntervalMs |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5121,7 +4263,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ElectionTimeoutMs |= int64(b&0x7F) << shift + m.ElectionTimeoutMs |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5140,7 +4282,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5150,9 +4292,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5172,7 +4311,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5182,9 +4321,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5204,7 +4340,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -5224,7 +4360,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -5244,7 +4380,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5254,9 +4390,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5276,7 +4409,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5286,9 +4419,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5308,7 +4438,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5318,9 +4448,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5340,7 +4467,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5350,9 +4477,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5372,7 +4496,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5382,9 +4506,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5404,7 +4525,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -5424,7 +4545,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -5444,7 +4565,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5454,9 +4575,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5476,7 +4594,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5486,9 +4604,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5508,7 +4623,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5518,9 +4633,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5540,7 +4652,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5550,9 +4662,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5572,7 +4681,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5582,9 +4691,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5604,7 +4710,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5614,9 +4720,6 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRpc } postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5636,7 +4739,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SnapshotCount |= int64(b&0x7F) << shift + m.SnapshotCount |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5655,7 +4758,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.QuotaBackendBytes |= int64(b&0x7F) << shift + m.QuotaBackendBytes |= (int64(b) & 0x7F) << shift if b < 0x80 { break } @@ -5674,7 +4777,7 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } @@ -5694,108 +4797,12 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.InitialCorruptCheck = bool(v != 0) - case 71: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Logger", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Logger = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 72: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LogOutputs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.LogOutputs = append(m.LogOutputs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 73: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LogLevel", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.LogLevel = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipRpc(dAtA[iNdEx:]) @@ -5805,13 +4812,9 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRpc } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthRpc - } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -5875,11 +4878,8 @@ func skipRpc(dAtA []byte) (n int, err error) { break } } - if length < 0 { - return 0, ErrInvalidLengthRpc - } iNdEx += length - if iNdEx < 0 { + if length < 0 { return 0, ErrInvalidLengthRpc } return iNdEx, nil @@ -5910,9 +4910,6 @@ func skipRpc(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next - if iNdEx < 0 { - return 0, ErrInvalidLengthRpc - } } return iNdEx, nil case 4: @@ -5931,3 +4928,185 @@ var ( ErrInvalidLengthRpc = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowRpc = fmt.Errorf("proto: integer overflow") ) + +func init() { proto.RegisterFile("rpcpb/rpc.proto", fileDescriptorRpc) } + +var fileDescriptorRpc = []byte{ + // 2808 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x59, 0xdb, 0x73, 0xdb, 0xc6, + 0xf5, 0x16, 0x44, 0x5d, 0x57, 0x37, 0x68, 0x65, 0xd9, 0xf0, 0x4d, 0x90, 0xe1, 0x38, 0x3f, 0x59, + 0x09, 0xec, 0xfc, 0xec, 0x4c, 0x2e, 0x4e, 0x13, 0x07, 0xa4, 0x20, 0x8b, 0x15, 0x44, 0xd2, 0x4b, + 0xc8, 0x76, 0x9e, 0x38, 0x10, 0xb9, 0x92, 0x30, 0xa6, 0x00, 0x06, 0x58, 0x2a, 0x52, 0xfe, 0x81, + 0xbe, 0xf6, 0x3e, 0xed, 0x4c, 0x9f, 0xfa, 0xdc, 0xb4, 0xff, 0x86, 0x73, 0x6b, 0xd3, 0xf6, 0xa9, + 0xed, 0x0c, 0xa7, 0x4d, 0x5f, 0xfa, 0xd4, 0x07, 0x4e, 0x6f, 0xe9, 0x53, 0x67, 0x77, 0x01, 0x71, + 0x01, 0x90, 0x92, 0x9e, 0xa4, 0x3d, 0xe7, 0xfb, 0xbe, 0x3d, 0xbb, 0x67, 0xb1, 0xe7, 0x00, 0x04, + 0x73, 0x41, 0xab, 0xde, 0xda, 0xb9, 0x1b, 0xb4, 0xea, 0x77, 0x5a, 0x81, 0x4f, 0x7c, 0x38, 0xca, + 0x0c, 0x57, 0xf4, 0x3d, 0x97, 0xec, 0xb7, 0x77, 0xee, 0xd4, 0xfd, 0x83, 0xbb, 0x7b, 0xfe, 0x9e, + 0x7f, 0x97, 0x79, 0x77, 0xda, 0xbb, 0x6c, 0xc4, 0x06, 0xec, 0x3f, 0xce, 0xd2, 0xbe, 0x23, 0x81, + 0x71, 0x84, 0x3f, 0x6c, 0xe3, 0x90, 0xc0, 0x3b, 0x60, 0xb2, 0xdc, 0xc2, 0x81, 0x43, 0x5c, 0xdf, + 0x53, 0xa4, 0x65, 0x69, 0x65, 0xf6, 0x9e, 0x7c, 0x87, 0xa9, 0xde, 0x39, 0xb1, 0xa3, 0x1e, 0x04, + 0xde, 0x02, 0x63, 0x5b, 0xf8, 0x60, 0x07, 0x07, 0xca, 0xf0, 0xb2, 0xb4, 0x32, 0x75, 0x6f, 0x26, + 0x02, 0x73, 0x23, 0x8a, 0x9c, 0x14, 0x66, 0xe3, 0x90, 0xe0, 0x40, 0xc9, 0x25, 0x60, 0xdc, 0x88, + 0x22, 0xa7, 0xf6, 0xb7, 0x61, 0x30, 0x5d, 0xf5, 0x9c, 0x56, 0xb8, 0xef, 0x93, 0xa2, 0xb7, 0xeb, + 0xc3, 0x25, 0x00, 0xb8, 0x42, 0xc9, 0x39, 0xc0, 0x2c, 0x9e, 0x49, 0x24, 0x58, 0xe0, 0x2a, 0x90, + 0xf9, 0xa8, 0xd0, 0x74, 0xb1, 0x47, 0xb6, 0x91, 0x15, 0x2a, 0xc3, 0xcb, 0xb9, 0x95, 0x49, 0x94, + 0xb1, 0x43, 0xad, 0xa7, 0x5d, 0x71, 0xc8, 0x3e, 0x8b, 0x64, 0x12, 0x25, 0x6c, 0x54, 0x2f, 0x1e, + 0xaf, 0xbb, 0x4d, 0x5c, 0x75, 0x3f, 0xc6, 0xca, 0x08, 0xc3, 0x65, 0xec, 0xf0, 0x55, 0x30, 0x1f, + 0xdb, 0x6c, 0x9f, 0x38, 0x4d, 0x06, 0x1e, 0x65, 0xe0, 0xac, 0x43, 0x54, 0x66, 0xc6, 0x4d, 0x7c, + 0xac, 0x8c, 0x2d, 0x4b, 0x2b, 0x39, 0x94, 0xb1, 0x8b, 0x91, 0x6e, 0x38, 0xe1, 0xbe, 0x32, 0xce, + 0x70, 0x09, 0x9b, 0xa8, 0x87, 0xf0, 0xa1, 0x1b, 0xd2, 0x7c, 0x4d, 0x24, 0xf5, 0x62, 0x3b, 0x84, + 0x60, 0xc4, 0xf6, 0xfd, 0xe7, 0xca, 0x24, 0x0b, 0x8e, 0xfd, 0xaf, 0xfd, 0x4c, 0x02, 0x13, 0x08, + 0x87, 0x2d, 0xdf, 0x0b, 0x31, 0x54, 0xc0, 0x78, 0xb5, 0x5d, 0xaf, 0xe3, 0x30, 0x64, 0x7b, 0x3c, + 0x81, 0xe2, 0x21, 0xbc, 0x08, 0xc6, 0xaa, 0xc4, 0x21, 0xed, 0x90, 0xe5, 0x77, 0x12, 0x45, 0x23, + 0x21, 0xef, 0xb9, 0xd3, 0xf2, 0xfe, 0x66, 0x32, 0x9f, 0x6c, 0x2f, 0xa7, 0xee, 0x2d, 0x44, 0x60, + 0xd1, 0x85, 0x12, 0x40, 0xed, 0x4f, 0xd3, 0xf1, 0x04, 0xf0, 0x5d, 0x30, 0x6d, 0x92, 0x7a, 0xc3, + 0x3c, 0xc2, 0x75, 0x96, 0x37, 0x76, 0x0a, 0xf2, 0x97, 0xbb, 0x1d, 0x75, 0xf1, 0xd8, 0x39, 0x68, + 0x3e, 0xd0, 0x30, 0xa9, 0x37, 0x74, 0x7c, 0x84, 0xeb, 0x7a, 0xcb, 0x21, 0xfb, 0x1a, 0x4a, 0xc0, + 0xe1, 0x7d, 0x30, 0x69, 0xec, 0x61, 0x8f, 0x18, 0x8d, 0x46, 0xa0, 0x4c, 0x31, 0xee, 0x62, 0xb7, + 0xa3, 0xce, 0x73, 0xae, 0x43, 0x5d, 0xba, 0xd3, 0x68, 0x04, 0x1a, 0xea, 0xe1, 0xa0, 0x05, 0xe6, + 0xd7, 0x1d, 0xb7, 0xd9, 0xf2, 0x5d, 0x8f, 0x6c, 0xd8, 0x76, 0x85, 0x91, 0xa7, 0x19, 0x79, 0xa9, + 0xdb, 0x51, 0xaf, 0x70, 0xf2, 0x6e, 0x0c, 0xd1, 0xf7, 0x09, 0x69, 0x45, 0x2a, 0x59, 0x22, 0xd4, + 0xc1, 0x78, 0xde, 0x09, 0xf1, 0x9a, 0x1b, 0x28, 0x98, 0x69, 0x2c, 0x74, 0x3b, 0xea, 0x1c, 0xd7, + 0xd8, 0x71, 0x42, 0xac, 0x37, 0xdc, 0x40, 0x43, 0x31, 0x06, 0x3e, 0x00, 0x53, 0x74, 0x05, 0x96, + 0xbf, 0xc7, 0xd6, 0xbb, 0xcb, 0x28, 0x4a, 0xb7, 0xa3, 0x5e, 0x10, 0xd6, 0xdb, 0xf4, 0xf7, 0xa2, + 0xe5, 0x8a, 0x60, 0xf8, 0x08, 0xcc, 0xd1, 0x21, 0x3f, 0xf6, 0x95, 0xc0, 0x3f, 0x3a, 0x56, 0x3e, + 0x65, 0x29, 0xcd, 0x5f, 0xeb, 0x76, 0x54, 0x45, 0x10, 0xa8, 0x33, 0x88, 0xde, 0xa2, 0x18, 0x0d, + 0xa5, 0x59, 0xd0, 0x00, 0x33, 0xd4, 0x54, 0xc1, 0x38, 0xe0, 0x32, 0x9f, 0x71, 0x99, 0x2b, 0xdd, + 0x8e, 0x7a, 0x51, 0x90, 0x69, 0x61, 0x1c, 0xc4, 0x22, 0x49, 0x06, 0xac, 0x00, 0xd8, 0x53, 0x35, + 0xbd, 0x06, 0xdb, 0x14, 0xe5, 0x13, 0x76, 0x90, 0xf2, 0x6a, 0xb7, 0xa3, 0x5e, 0xcd, 0x86, 0x83, + 0x23, 0x98, 0x86, 0xfa, 0x70, 0xe1, 0xff, 0x83, 0x11, 0x6a, 0x55, 0x7e, 0xc9, 0x2f, 0x9b, 0xa9, + 0xe8, 0x1c, 0x51, 0x5b, 0x7e, 0xae, 0xdb, 0x51, 0xa7, 0x7a, 0x82, 0x1a, 0x62, 0x50, 0x98, 0x07, + 0x8b, 0xf4, 0x6f, 0xd9, 0xeb, 0x3d, 0x15, 0x21, 0xf1, 0x03, 0xac, 0xfc, 0x2a, 0xab, 0x81, 0xfa, + 0x43, 0xe1, 0x1a, 0x98, 0xe5, 0x81, 0x14, 0x70, 0x40, 0xd6, 0x1c, 0xe2, 0x28, 0xdf, 0x63, 0x97, + 0x47, 0xfe, 0x6a, 0xb7, 0xa3, 0x5e, 0xe2, 0x73, 0x46, 0xf1, 0xd7, 0x71, 0x40, 0xf4, 0x86, 0x43, + 0x1c, 0x0d, 0xa5, 0x38, 0x49, 0x15, 0x96, 0xd9, 0xef, 0x9f, 0xaa, 0xc2, 0xb3, 0x9b, 0xe2, 0xd0, + 0xbc, 0x70, 0xcb, 0x26, 0x3e, 0x66, 0xa1, 0xfc, 0x80, 0x8b, 0x08, 0x79, 0x89, 0x44, 0x9e, 0xe3, + 0xe3, 0x28, 0x92, 0x24, 0x23, 0x21, 0xc1, 0xe2, 0xf8, 0xe1, 0x69, 0x12, 0x3c, 0x8c, 0x24, 0x03, + 0xda, 0x60, 0x81, 0x1b, 0xec, 0xa0, 0x1d, 0x12, 0xdc, 0x28, 0x18, 0x2c, 0x96, 0x1f, 0x71, 0xa1, + 0x1b, 0xdd, 0x8e, 0x7a, 0x3d, 0x21, 0x44, 0x38, 0x4c, 0xaf, 0x3b, 0x51, 0x48, 0xfd, 0xe8, 0x7d, + 0x54, 0x59, 0x78, 0x3f, 0x3e, 0x87, 0x2a, 0x8f, 0xb2, 0x1f, 0x1d, 0xbe, 0x07, 0xa6, 0xe9, 0x99, + 0x3c, 0xc9, 0xdd, 0x3f, 0x73, 0xe9, 0x0b, 0x84, 0x9d, 0x61, 0x21, 0x73, 0x09, 0xbc, 0xc8, 0x67, + 0xe1, 0xfc, 0xeb, 0x14, 0x7e, 0x74, 0x01, 0x89, 0x78, 0xf8, 0x0e, 0x98, 0xa2, 0xe3, 0x38, 0x5f, + 0xff, 0xce, 0xa5, 0x9f, 0x67, 0x46, 0xef, 0x65, 0x4b, 0x44, 0x0b, 0x64, 0x36, 0xf7, 0x7f, 0x06, + 0x93, 0xa3, 0xcb, 0x40, 0x40, 0xc3, 0x12, 0x98, 0xa7, 0xc3, 0x64, 0x8e, 0xbe, 0xc9, 0xa5, 0x9f, + 0x3f, 0x26, 0x91, 0xc9, 0x50, 0x96, 0x9a, 0xd1, 0x63, 0x21, 0xfd, 0xf7, 0x4c, 0x3d, 0x1e, 0x59, + 0x96, 0x4a, 0x6f, 0xf6, 0x44, 0x45, 0xfe, 0xc3, 0x48, 0x7a, 0x75, 0x61, 0xe4, 0x8e, 0x37, 0x36, + 0x51, 0xac, 0xdf, 0x4a, 0x15, 0x97, 0x3f, 0x9e, 0xbb, 0xba, 0xfc, 0x7c, 0x3a, 0xee, 0x47, 0xe8, + 0xdd, 0x4c, 0xd7, 0x46, 0xef, 0x66, 0x29, 0x7d, 0x37, 0xd3, 0x8d, 0x88, 0xee, 0xe6, 0x08, 0x03, + 0x5f, 0x05, 0xe3, 0x25, 0x4c, 0x3e, 0xf2, 0x83, 0xe7, 0xbc, 0x20, 0xe6, 0x61, 0xb7, 0xa3, 0xce, + 0x72, 0xb8, 0xc7, 0x1d, 0x1a, 0x8a, 0x21, 0xf0, 0x26, 0x18, 0x61, 0x95, 0x83, 0x6f, 0x91, 0x70, + 0x43, 0xf1, 0x52, 0xc1, 0x9c, 0xb0, 0x00, 0x66, 0xd7, 0x70, 0xd3, 0x39, 0xb6, 0x1c, 0x82, 0xbd, + 0xfa, 0xf1, 0x56, 0xc8, 0xaa, 0xd4, 0x8c, 0x78, 0x2d, 0x34, 0xa8, 0x5f, 0x6f, 0x72, 0x80, 0x7e, + 0x10, 0x6a, 0x28, 0x45, 0x81, 0xdf, 0x06, 0x72, 0xd2, 0x82, 0x0e, 0x59, 0xbd, 0x9a, 0x11, 0xeb, + 0x55, 0x5a, 0x46, 0x0f, 0x0e, 0x35, 0x94, 0xe1, 0xc1, 0x0f, 0xc0, 0xe2, 0x76, 0xab, 0xe1, 0x10, + 0xdc, 0x48, 0xc5, 0x35, 0xc3, 0x04, 0x6f, 0x76, 0x3b, 0xaa, 0xca, 0x05, 0xdb, 0x1c, 0xa6, 0x67, + 0xe3, 0xeb, 0xaf, 0x00, 0xdf, 0x00, 0x00, 0xf9, 0x6d, 0xaf, 0x61, 0xb9, 0x07, 0x2e, 0x51, 0x16, + 0x97, 0xa5, 0x95, 0xd1, 0xfc, 0xc5, 0x6e, 0x47, 0x85, 0x5c, 0x2f, 0xa0, 0x3e, 0xbd, 0x49, 0x9d, + 0x1a, 0x12, 0x90, 0x30, 0x0f, 0x66, 0xcd, 0x23, 0x97, 0x94, 0xbd, 0x82, 0x13, 0x62, 0x5a, 0x60, + 0x95, 0x8b, 0x99, 0x6a, 0x74, 0xe4, 0x12, 0xdd, 0xf7, 0x74, 0x5a, 0x94, 0xdb, 0x01, 0xd6, 0x50, + 0x8a, 0x01, 0xdf, 0x06, 0x53, 0xa6, 0xe7, 0xec, 0x34, 0x71, 0xa5, 0x15, 0xf8, 0xbb, 0xca, 0x25, + 0x26, 0x70, 0xa9, 0xdb, 0x51, 0x17, 0x22, 0x01, 0xe6, 0xd4, 0x5b, 0xd4, 0x4b, 0xab, 0x6a, 0x0f, + 0x4b, 0x2b, 0x32, 0x95, 0x61, 0x8b, 0xd9, 0x0a, 0x15, 0x95, 0xed, 0x83, 0x70, 0x4c, 0xeb, 0xac, + 0x88, 0xb3, 0x4d, 0xa0, 0x8b, 0x17, 0xc1, 0x74, 0x5a, 0x3a, 0xac, 0xee, 0xb7, 0x77, 0x77, 0x9b, + 0x58, 0x59, 0x4e, 0x4f, 0xcb, 0xb8, 0x21, 0xf7, 0x46, 0xd4, 0x08, 0x0b, 0x5f, 0x06, 0xa3, 0x74, + 0x18, 0x2a, 0x37, 0x68, 0x4b, 0x9b, 0x97, 0xbb, 0x1d, 0x75, 0xba, 0x47, 0x0a, 0x35, 0xc4, 0xdd, + 0x70, 0x53, 0xe8, 0x56, 0x0a, 0xfe, 0xc1, 0x81, 0xe3, 0x35, 0x42, 0x45, 0x63, 0x9c, 0xeb, 0xdd, + 0x8e, 0x7a, 0x39, 0xdd, 0xad, 0xd4, 0x23, 0x8c, 0xd8, 0xac, 0xc4, 0x3c, 0x7a, 0x1c, 0x51, 0xdb, + 0xf3, 0x70, 0x70, 0xd2, 0x70, 0xdd, 0x4e, 0x57, 0xa9, 0x80, 0xf9, 0xc5, 0x96, 0x2b, 0x45, 0x81, + 0x45, 0x20, 0x9b, 0x47, 0x04, 0x07, 0x9e, 0xd3, 0x3c, 0x91, 0x59, 0x65, 0x32, 0x42, 0x40, 0x38, + 0x42, 0x88, 0x42, 0x19, 0x1a, 0xbc, 0x07, 0x26, 0xab, 0x24, 0xc0, 0x61, 0x88, 0x83, 0x50, 0xc1, + 0x6c, 0x51, 0x17, 0xba, 0x1d, 0x55, 0x8e, 0x2e, 0x88, 0xd8, 0xa5, 0xa1, 0x1e, 0x0c, 0xde, 0x05, + 0x13, 0x85, 0x7d, 0x5c, 0x7f, 0x4e, 0x29, 0xbb, 0x8c, 0x22, 0x3c, 0xd5, 0xf5, 0xc8, 0xa3, 0xa1, + 0x13, 0x10, 0x2d, 0x89, 0x9c, 0xbd, 0x89, 0x8f, 0x59, 0x1f, 0xcf, 0x9a, 0xa6, 0x51, 0xf1, 0x7c, + 0xf1, 0x99, 0xd8, 0x55, 0x1b, 0xba, 0x1f, 0x63, 0x0d, 0x25, 0x19, 0xf0, 0x31, 0x80, 0x09, 0x83, + 0xe5, 0x04, 0x7b, 0x98, 0x77, 0x4d, 0xa3, 0xf9, 0xe5, 0x6e, 0x47, 0xbd, 0xd6, 0x57, 0x47, 0x6f, + 0x52, 0x9c, 0x86, 0xfa, 0x90, 0xe1, 0x53, 0x70, 0xa1, 0x67, 0x6d, 0xef, 0xee, 0xba, 0x47, 0xc8, + 0xf1, 0xf6, 0xb0, 0xf2, 0x39, 0x17, 0xd5, 0xba, 0x1d, 0x75, 0x29, 0x2b, 0xca, 0x80, 0x7a, 0x40, + 0x91, 0x1a, 0xea, 0x2b, 0x00, 0x1d, 0x70, 0xa9, 0x9f, 0xdd, 0x3e, 0xf2, 0x94, 0x2f, 0xb8, 0xf6, + 0xcb, 0xdd, 0x8e, 0xaa, 0x9d, 0xaa, 0xad, 0x93, 0x23, 0x4f, 0x43, 0x83, 0x74, 0xe0, 0x06, 0x98, + 0x3b, 0x71, 0xd9, 0x47, 0x5e, 0xb9, 0x15, 0x2a, 0x5f, 0x72, 0x69, 0xe1, 0x04, 0x08, 0xd2, 0xe4, + 0xc8, 0xd3, 0xfd, 0x56, 0xa8, 0xa1, 0x34, 0x0d, 0xbe, 0x1f, 0xe7, 0x86, 0x17, 0xf7, 0x90, 0x77, + 0x90, 0xa3, 0x62, 0x01, 0x8e, 0x74, 0x78, 0x5b, 0x10, 0x9e, 0xa4, 0x26, 0x22, 0xc0, 0xd7, 0xe3, + 0x23, 0xf4, 0xb8, 0x52, 0xe5, 0xbd, 0xe3, 0xa8, 0xf8, 0x0e, 0x10, 0xb1, 0x3f, 0x6c, 0xf5, 0x0e, + 0xd1, 0xe3, 0x4a, 0x55, 0xfb, 0x66, 0x86, 0x77, 0x9b, 0xf4, 0x16, 0xef, 0xbd, 0x7e, 0x8a, 0xb7, + 0xb8, 0xe7, 0x1c, 0x60, 0x0d, 0x31, 0xa7, 0x58, 0x47, 0x86, 0xcf, 0x51, 0x47, 0x56, 0xc1, 0xd8, + 0x53, 0xc3, 0xa2, 0xe8, 0x5c, 0xba, 0x8c, 0x7c, 0xe4, 0x34, 0x39, 0x38, 0x42, 0xc0, 0x32, 0x58, + 0xd8, 0xc0, 0x4e, 0x40, 0x76, 0xb0, 0x43, 0x8a, 0x1e, 0xc1, 0xc1, 0xa1, 0xd3, 0x8c, 0xaa, 0x44, + 0x4e, 0xdc, 0xcd, 0xfd, 0x18, 0xa4, 0xbb, 0x11, 0x4a, 0x43, 0xfd, 0x98, 0xb0, 0x08, 0xe6, 0xcd, + 0x26, 0xae, 0xd3, 0x17, 0x78, 0xdb, 0x3d, 0xc0, 0x7e, 0x9b, 0x6c, 0x85, 0xac, 0x5a, 0xe4, 0xc4, + 0xa7, 0x1c, 0x47, 0x10, 0x9d, 0x70, 0x8c, 0x86, 0xb2, 0x2c, 0xfa, 0xa0, 0x5b, 0x6e, 0x48, 0xb0, + 0x27, 0xbc, 0x80, 0x2f, 0xa6, 0x6f, 0x9e, 0x26, 0x43, 0xc4, 0x2d, 0x7e, 0x3b, 0x68, 0x86, 0x1a, + 0xca, 0xd0, 0x20, 0x02, 0x0b, 0x46, 0xe3, 0x10, 0x07, 0xc4, 0x0d, 0xb1, 0xa0, 0x76, 0x91, 0xa9, + 0x09, 0x0f, 0x90, 0x13, 0x83, 0x92, 0x82, 0xfd, 0xc8, 0xf0, 0xed, 0xb8, 0xd5, 0x35, 0xda, 0xc4, + 0xb7, 0xad, 0x6a, 0x74, 0xeb, 0x0b, 0xb9, 0x71, 0xda, 0xc4, 0xd7, 0x09, 0x15, 0x48, 0x22, 0xe9, + 0x3d, 0xd8, 0x6b, 0xbd, 0x8d, 0x36, 0xd9, 0x57, 0x14, 0xc6, 0x1d, 0xd0, 0xad, 0x3b, 0xed, 0x54, + 0xb7, 0x4e, 0x29, 0xf0, 0x5b, 0xa2, 0xc8, 0xba, 0xdb, 0xc4, 0xca, 0x65, 0x96, 0x6e, 0xe1, 0x06, + 0x63, 0xec, 0x5d, 0x97, 0x5e, 0xfe, 0x29, 0x6c, 0x2f, 0xfa, 0x4d, 0x7c, 0xcc, 0xc8, 0x57, 0xd2, + 0x27, 0x8b, 0x3e, 0x39, 0x9c, 0x9b, 0x44, 0x42, 0x2b, 0xd3, 0x4a, 0x33, 0x81, 0xab, 0xe9, 0x46, + 0x5f, 0x68, 0xd3, 0xb8, 0x4e, 0x3f, 0x1a, 0xdd, 0x0b, 0x9e, 0x2e, 0xda, 0xc3, 0xb1, 0xac, 0xa8, + 0x2c, 0x2b, 0xc2, 0x5e, 0x44, 0x39, 0x66, 0xbd, 0x1f, 0x4f, 0x48, 0x8a, 0x02, 0x6d, 0x30, 0x7f, + 0x92, 0xa2, 0x13, 0x9d, 0x65, 0xa6, 0x23, 0xdc, 0x36, 0xae, 0xe7, 0x12, 0xd7, 0x69, 0xea, 0xbd, + 0x2c, 0x0b, 0x92, 0x59, 0x01, 0x5a, 0x9a, 0xe9, 0xff, 0x71, 0x7e, 0x6f, 0xb0, 0x1c, 0xa5, 0xfb, + 0xe3, 0x5e, 0x92, 0x45, 0x30, 0x7d, 0x41, 0x65, 0x9d, 0x7a, 0x32, 0xcd, 0x1a, 0x93, 0x10, 0x0e, + 0x1c, 0x6f, 0xef, 0x33, 0xb9, 0xee, 0xc3, 0xa5, 0x1d, 0x6d, 0xdc, 0xfb, 0xb3, 0xfd, 0xbe, 0x39, + 0xf8, 0x55, 0x81, 0x6f, 0x77, 0x02, 0x1e, 0x2f, 0x26, 0x4e, 0xf7, 0x4b, 0x03, 0x9b, 0x7d, 0x4e, + 0x16, 0xc1, 0x70, 0x2b, 0xd5, 0x9c, 0x33, 0x85, 0x5b, 0x67, 0xf5, 0xe6, 0x5c, 0x28, 0xcb, 0xa4, + 0x1d, 0x57, 0x91, 0xa7, 0xa2, 0xd0, 0x6c, 0xb3, 0x2f, 0x77, 0xb7, 0xd3, 0x67, 0x27, 0x4e, 0x55, + 0x9d, 0x03, 0x34, 0x94, 0x62, 0xd0, 0x27, 0x3a, 0x69, 0xa9, 0x12, 0x87, 0xe0, 0xa8, 0x11, 0x10, + 0x36, 0x38, 0x25, 0xa4, 0x87, 0x14, 0xa6, 0xa1, 0x7e, 0xe4, 0xac, 0xa6, 0xed, 0x3f, 0xc7, 0x9e, + 0xf2, 0xca, 0x59, 0x9a, 0x84, 0xc2, 0x32, 0x9a, 0x8c, 0x0c, 0x1f, 0x82, 0x99, 0xf8, 0xf5, 0xa0, + 0xe0, 0xb7, 0x3d, 0xa2, 0xdc, 0x67, 0x77, 0xa1, 0x58, 0x60, 0xe2, 0xf7, 0x90, 0x3a, 0xf5, 0xd3, + 0x02, 0x23, 0xe2, 0xa1, 0x05, 0xe6, 0x1f, 0xb7, 0x7d, 0xe2, 0xe4, 0x9d, 0xfa, 0x73, 0xec, 0x35, + 0xf2, 0xc7, 0x04, 0x87, 0xca, 0xeb, 0x4c, 0x44, 0x68, 0xbf, 0x3f, 0xa4, 0x10, 0x7d, 0x87, 0x63, + 0xf4, 0x1d, 0x0a, 0xd2, 0x50, 0x96, 0x48, 0x4b, 0x49, 0x25, 0xc0, 0x4f, 0x7c, 0x82, 0x95, 0x87, + 0xe9, 0xeb, 0xaa, 0x15, 0x60, 0xfd, 0xd0, 0xa7, 0xbb, 0x13, 0x63, 0xc4, 0x1d, 0xf1, 0x83, 0xa0, + 0xdd, 0x22, 0xac, 0xab, 0x51, 0xde, 0x4f, 0x1f, 0xe3, 0x93, 0x1d, 0xe1, 0x28, 0x9d, 0xf5, 0x41, + 0xc2, 0x8e, 0x08, 0xe4, 0xd5, 0x9f, 0xe6, 0x84, 0xef, 0xc0, 0x70, 0x0e, 0x4c, 0x95, 0xca, 0x76, + 0xad, 0x6a, 0x1b, 0xc8, 0x36, 0xd7, 0xe4, 0x21, 0x78, 0x11, 0xc0, 0x62, 0xa9, 0x68, 0x17, 0x0d, + 0x8b, 0x1b, 0x6b, 0xa6, 0x5d, 0x58, 0x93, 0x01, 0x94, 0xc1, 0x34, 0x32, 0x05, 0xcb, 0x14, 0xb5, + 0x54, 0x8b, 0x8f, 0x6c, 0x13, 0x6d, 0x71, 0xcb, 0x05, 0xb8, 0x0c, 0xae, 0x55, 0x8b, 0x8f, 0x1e, + 0x6f, 0x17, 0x39, 0xa6, 0x66, 0x94, 0xd6, 0x6a, 0xc8, 0xdc, 0x2a, 0x3f, 0x31, 0x6b, 0x6b, 0x86, + 0x6d, 0xc8, 0x8b, 0x70, 0x1e, 0xcc, 0x54, 0x8d, 0x27, 0x66, 0xad, 0x5a, 0x32, 0x2a, 0xd5, 0x8d, + 0xb2, 0x2d, 0x2f, 0xc1, 0x1b, 0xe0, 0x3a, 0x15, 0x2e, 0x23, 0xb3, 0x16, 0x4f, 0xb0, 0x8e, 0xca, + 0x5b, 0x3d, 0x88, 0x0a, 0x2f, 0x83, 0xc5, 0xfe, 0xae, 0x65, 0xca, 0xce, 0x4c, 0x69, 0xa0, 0xc2, + 0x46, 0x31, 0x9e, 0x73, 0x05, 0xde, 0x05, 0xaf, 0x9c, 0x16, 0x15, 0x1b, 0x57, 0xed, 0x72, 0xa5, + 0x66, 0x3c, 0x32, 0x4b, 0xb6, 0x7c, 0x1b, 0x5e, 0x07, 0x97, 0xf3, 0x96, 0x51, 0xd8, 0xdc, 0x28, + 0x5b, 0x66, 0xad, 0x62, 0x9a, 0xa8, 0x56, 0x29, 0x23, 0xbb, 0x66, 0x3f, 0xab, 0xa1, 0x67, 0x72, + 0x03, 0xaa, 0xe0, 0xea, 0x76, 0x69, 0x30, 0x00, 0xc3, 0x2b, 0x60, 0x71, 0xcd, 0xb4, 0x8c, 0x0f, + 0x32, 0xae, 0x17, 0x12, 0xbc, 0x06, 0x2e, 0x6d, 0x97, 0xfa, 0x7b, 0x3f, 0x95, 0x56, 0xff, 0x0e, + 0xc0, 0x08, 0xed, 0xfb, 0xa1, 0x02, 0x2e, 0xc4, 0x7b, 0x5b, 0x2e, 0x99, 0xb5, 0xf5, 0xb2, 0x65, + 0x95, 0x9f, 0x9a, 0x48, 0x1e, 0x8a, 0x56, 0x93, 0xf1, 0xd4, 0xb6, 0x4b, 0x76, 0xd1, 0xaa, 0xd9, + 0xa8, 0xf8, 0xe8, 0x91, 0x89, 0x7a, 0x3b, 0x24, 0x41, 0x08, 0x66, 0x63, 0x82, 0x65, 0x1a, 0x6b, + 0x26, 0x92, 0x87, 0xe1, 0x6d, 0x70, 0x2b, 0x69, 0x1b, 0x44, 0xcf, 0x89, 0xf4, 0xc7, 0xdb, 0x65, + 0xb4, 0xbd, 0x25, 0x8f, 0xd0, 0x43, 0x13, 0xdb, 0x0c, 0xcb, 0x92, 0x47, 0xe1, 0x4d, 0xa0, 0xc6, + 0x5b, 0x2c, 0xec, 0x6e, 0x22, 0x72, 0x00, 0x1f, 0x80, 0x37, 0xce, 0x00, 0x0d, 0x8a, 0x62, 0x8a, + 0xa6, 0xa4, 0x0f, 0x37, 0x5a, 0xcf, 0x34, 0x7c, 0x1d, 0xbc, 0x36, 0xd0, 0x3d, 0x48, 0x74, 0x06, + 0xae, 0x83, 0x7c, 0x1f, 0x16, 0x5f, 0x65, 0x64, 0xe1, 0xe7, 0x32, 0x12, 0x8a, 0xa9, 0xd1, 0x21, + 0x2c, 0x20, 0xc3, 0x2e, 0x6c, 0xc8, 0xb3, 0x70, 0x15, 0xbc, 0x3c, 0xf0, 0x38, 0x24, 0x37, 0xa1, + 0x01, 0x0d, 0xf0, 0xee, 0xf9, 0xb0, 0x83, 0xc2, 0xc6, 0xf0, 0x25, 0xb0, 0x3c, 0x58, 0x22, 0xda, + 0x92, 0x5d, 0xf8, 0x0e, 0x78, 0xf3, 0x2c, 0xd4, 0xa0, 0x29, 0xf6, 0x4e, 0x9f, 0x22, 0x3a, 0x06, + 0xfb, 0xf4, 0xd9, 0x1b, 0x8c, 0xa2, 0x07, 0xc3, 0x85, 0xff, 0x07, 0xb4, 0xbe, 0x87, 0x3d, 0xb9, + 0x2d, 0x2f, 0x24, 0x78, 0x07, 0xdc, 0x46, 0x46, 0x69, 0xad, 0xbc, 0x55, 0x3b, 0x07, 0xfe, 0x53, + 0x09, 0xbe, 0x07, 0xde, 0x3e, 0x1b, 0x38, 0x68, 0x81, 0x9f, 0x49, 0xd0, 0x04, 0xef, 0x9f, 0x7b, + 0xbe, 0x41, 0x32, 0x9f, 0x4b, 0xf0, 0x06, 0xb8, 0xd6, 0x9f, 0x1f, 0xe5, 0xe1, 0x0b, 0x09, 0xae, + 0x80, 0x9b, 0xa7, 0xce, 0x14, 0x21, 0xbf, 0x94, 0xe0, 0x5b, 0xe0, 0xfe, 0x69, 0x90, 0x41, 0x61, + 0xfc, 0x5a, 0x82, 0x0f, 0xc1, 0x83, 0x73, 0xcc, 0x31, 0x48, 0xe0, 0x37, 0xa7, 0xac, 0x23, 0x4a, + 0xf6, 0x57, 0x67, 0xaf, 0x23, 0x42, 0xfe, 0x56, 0x82, 0x4b, 0xe0, 0x72, 0x7f, 0x08, 0x3d, 0x13, + 0xbf, 0x93, 0xe0, 0x2d, 0xb0, 0x7c, 0xaa, 0x12, 0x85, 0xfd, 0x5e, 0x82, 0x0a, 0x58, 0x28, 0x95, + 0x6b, 0xeb, 0x46, 0xd1, 0xaa, 0x3d, 0x2d, 0xda, 0x1b, 0xb5, 0xaa, 0x8d, 0xcc, 0x6a, 0x55, 0xfe, + 0xc5, 0x30, 0x0d, 0x25, 0xe1, 0x29, 0x95, 0x23, 0x67, 0x6d, 0xbd, 0x8c, 0x6a, 0x56, 0xf1, 0x89, + 0x59, 0xa2, 0xc8, 0x4f, 0x86, 0xe1, 0x1c, 0x00, 0x14, 0x56, 0x29, 0x17, 0x4b, 0x76, 0x55, 0xfe, + 0x6e, 0x0e, 0xce, 0x80, 0x09, 0xf3, 0x99, 0x6d, 0xa2, 0x92, 0x61, 0xc9, 0xff, 0xc8, 0xad, 0x1e, + 0x80, 0x89, 0xf8, 0xd3, 0x02, 0x1c, 0x03, 0xc3, 0x9b, 0x4f, 0xe4, 0x21, 0x38, 0x09, 0x46, 0x2d, + 0xd3, 0xa8, 0x9a, 0xb2, 0x04, 0x17, 0xc0, 0x9c, 0x69, 0x99, 0x05, 0xbb, 0x58, 0x2e, 0xd5, 0xd0, + 0x76, 0xa9, 0xc4, 0x2e, 0x4f, 0x19, 0x4c, 0x3f, 0xa5, 0x4f, 0x7e, 0x6c, 0xc9, 0xc1, 0x45, 0x30, + 0x6f, 0x95, 0x0b, 0x9b, 0x35, 0x64, 0x14, 0x4c, 0x14, 0x9b, 0x47, 0x28, 0x90, 0x09, 0xc5, 0x96, + 0xd1, 0xd5, 0x3c, 0x18, 0x8f, 0xbe, 0x4b, 0xc0, 0x29, 0x30, 0xbe, 0xf9, 0xa4, 0xb6, 0x61, 0x54, + 0x37, 0xe4, 0xa1, 0x1e, 0xd2, 0x7c, 0x56, 0x29, 0x22, 0x3a, 0x33, 0x00, 0x63, 0x27, 0x13, 0x4e, + 0x83, 0x89, 0x52, 0xb9, 0x56, 0xd8, 0x30, 0x0b, 0x9b, 0x72, 0xee, 0xde, 0x43, 0x30, 0x69, 0x07, + 0x8e, 0x17, 0xb6, 0xfc, 0x80, 0xc0, 0x7b, 0xe2, 0x60, 0x36, 0xfa, 0x3a, 0x1a, 0xfd, 0xe0, 0x7b, + 0x65, 0xee, 0x64, 0xcc, 0x7f, 0x0b, 0xd4, 0x86, 0x56, 0xa4, 0xd7, 0xa4, 0xfc, 0x85, 0x17, 0x7f, + 0x59, 0x1a, 0x7a, 0xf1, 0xf5, 0x92, 0xf4, 0xd5, 0xd7, 0x4b, 0xd2, 0x9f, 0xbf, 0x5e, 0x92, 0x7e, + 0xf2, 0xd7, 0xa5, 0xa1, 0x9d, 0x31, 0xf6, 0x83, 0xf1, 0xfd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, + 0x5c, 0x9f, 0x8c, 0x37, 0x79, 0x1e, 0x00, 0x00, +} diff --git a/functional/rpcpb/rpc.proto b/functional/rpcpb/rpc.proto old mode 100644 new mode 100755 index e297afe93..c7f6ea003 --- a/functional/rpcpb/rpc.proto +++ b/functional/rpcpb/rpc.proto @@ -45,8 +45,9 @@ service Transport { } message Member { - // EtcdExec is the executable etcd binary path in agent server. - string EtcdExec = 1 [(gogoproto.moretags) = "yaml:\"etcd-exec\""]; + // EtcdExecPath is the executable etcd binary path in agent server. + string EtcdExecPath = 1 [(gogoproto.moretags) = "yaml:\"etcd-exec-path\""]; + // TODO: support embedded etcd // AgentAddr is the agent HTTP server address. string AgentAddr = 11 [(gogoproto.moretags) = "yaml:\"agent-addr\""]; @@ -55,6 +56,8 @@ message Member { // BaseDir is the base directory where all logs and etcd data are stored. string BaseDir = 101 [(gogoproto.moretags) = "yaml:\"base-dir\""]; + // EtcdLogPath is the log file to store current etcd server logs. + string EtcdLogPath = 102 [(gogoproto.moretags) = "yaml:\"etcd-log-path\""]; // EtcdClientProxy is true when client traffic needs to be proxied. // If true, listen client URL port must be different than advertise client URL port. @@ -138,7 +141,7 @@ message Tester { // Stressers is the list of stresser types: // KV, LEASE, ELECTION_RUNNER, WATCH_RUNNER, LOCK_RACER_RUNNER, LEASE_RUNNER. - repeated Stresser Stressers = 101 [(gogoproto.moretags) = "yaml:\"stressers\""]; + repeated string Stressers = 101 [(gogoproto.moretags) = "yaml:\"stressers\""]; // Checkers is the list of consistency checker types: // KV_HASH, LEASE_EXPIRE, NO_CHECK, RUNNER. // Leave empty to skip consistency checks. @@ -164,35 +167,6 @@ message Tester { int32 StressQPS = 302 [(gogoproto.moretags) = "yaml:\"stress-qps\""]; } -enum StresserType { - KV_WRITE_SMALL = 0; - KV_WRITE_LARGE = 1; - KV_READ_ONE_KEY = 2; - KV_READ_RANGE = 3; - KV_DELETE_ONE_KEY = 4; - KV_DELETE_RANGE = 5; - KV_TXN_WRITE_DELETE = 6; - - LEASE = 10; - - ELECTION_RUNNER = 20; - WATCH_RUNNER = 31; - LOCK_RACER_RUNNER = 41; - LEASE_RUNNER = 51; -} - -message Stresser { - string Type = 1 [(gogoproto.moretags) = "yaml:\"type\""]; - double Weight = 2 [(gogoproto.moretags) = "yaml:\"weight\""]; -} - -enum Checker { - KV_HASH = 0; - LEASE_EXPIRE = 1; - RUNNER = 2; - NO_CHECK = 3; -} - message Etcd { string Name = 1 [(gogoproto.moretags) = "yaml:\"name\""]; string DataDir = 2 [(gogoproto.moretags) = "yaml:\"data-dir\""]; @@ -620,3 +594,19 @@ enum Case { // EXTERNAL runs external failure injection scripts. EXTERNAL = 500; } + +enum Stresser { + KV = 0; + LEASE = 1; + ELECTION_RUNNER = 2; + WATCH_RUNNER = 3; + LOCK_RACER_RUNNER = 4; + LEASE_RUNNER = 5; +} + +enum Checker { + KV_HASH = 0; + LEASE_EXPIRE = 1; + RUNNER = 2; + NO_CHECK = 3; +} diff --git a/functional/runner/election_command.go b/functional/runner/election_command.go old mode 100644 new mode 100755 diff --git a/functional/runner/error.go b/functional/runner/error.go old mode 100644 new mode 100755 diff --git a/functional/runner/global.go b/functional/runner/global.go old mode 100644 new mode 100755 index 13f1906c3..94a3a2aae --- a/functional/runner/global.go +++ b/functional/runner/global.go @@ -47,7 +47,7 @@ type roundClient struct { func newClient(eps []string, timeout time.Duration) *clientv3.Client { c, err := clientv3.New(clientv3.Config{ Endpoints: eps, - DialTimeout: timeout * time.Second, + DialTimeout: time.Duration(timeout) * time.Second, }) if err != nil { log.Fatal(err) diff --git a/functional/runner/help.go b/functional/runner/help.go old mode 100644 new mode 100755 diff --git a/functional/runner/lease_renewer_command.go b/functional/runner/lease_renewer_command.go old mode 100644 new mode 100755 diff --git a/functional/runner/lock_racer_command.go b/functional/runner/lock_racer_command.go old mode 100644 new mode 100755 diff --git a/functional/runner/root.go b/functional/runner/root.go old mode 100644 new mode 100755 diff --git a/functional/runner/watch_command.go b/functional/runner/watch_command.go old mode 100644 new mode 100755 diff --git a/functional/scripts/docker-local-agent.sh b/functional/scripts/docker-local-agent.sh index c9bd0d26e..355a996f7 100755 --- a/functional/scripts/docker-local-agent.sh +++ b/functional/scripts/docker-local-agent.sh @@ -13,7 +13,7 @@ if ! [[ "${0}" =~ "scripts/docker-local-agent.sh" ]]; then fi if [[ -z "${GO_VERSION}" ]]; then - GO_VERSION=1.12.8 + GO_VERSION=1.10.1 fi echo "Running with GO_VERSION:" ${GO_VERSION} @@ -38,5 +38,5 @@ docker run \ --rm \ --net=host \ --name ${AGENT_NAME} \ - gcr.io/etcd-development/etcd-functional:go${GO_VERSION} \ + gcr.io/etcd-development/etcd-functional-tester:go${GO_VERSION} \ /bin/bash -c "./bin/etcd-agent ${AGENT_ADDR_FLAG}" diff --git a/functional/scripts/docker-local-tester.sh b/functional/scripts/docker-local-tester.sh index 887bd1891..8dbea9813 100755 --- a/functional/scripts/docker-local-tester.sh +++ b/functional/scripts/docker-local-tester.sh @@ -6,7 +6,7 @@ if ! [[ "${0}" =~ "scripts/docker-local-tester.sh" ]]; then fi if [[ -z "${GO_VERSION}" ]]; then - GO_VERSION=1.12.8 + GO_VERSION=1.10.1 fi echo "Running with GO_VERSION:" ${GO_VERSION} @@ -14,5 +14,5 @@ docker run \ --rm \ --net=host \ --name tester \ - gcr.io/etcd-development/etcd-functional:go${GO_VERSION} \ + gcr.io/etcd-development/etcd-functional-tester:go${GO_VERSION} \ /bin/bash -c "./bin/etcd-tester --config ./functional.yaml" diff --git a/functional/scripts/genproto.sh b/functional/scripts/genproto.sh index 7ddada9cd..cc27a1234 100755 --- a/functional/scripts/genproto.sh +++ b/functional/scripts/genproto.sh @@ -7,8 +7,8 @@ if ! [[ "$0" =~ "scripts/genproto.sh" ]]; then fi # for now, be conservative about what version of protoc we expect -if ! [[ $(protoc --version) =~ "3.7.1" ]]; then - echo "could not find protoc 3.7.1, is it installed + in PATH?" +if ! [[ $(protoc --version) =~ "3.5.1" ]]; then + echo "could not find protoc 3.5.1, is it installed + in PATH?" exit 255 fi diff --git a/functional/tester/case.go b/functional/tester/case.go old mode 100644 new mode 100755 index d584541f7..e8eef6263 --- a/functional/tester/case.go +++ b/functional/tester/case.go @@ -275,18 +275,6 @@ func (c *caseUntilSnapshot) Inject(clus *Cluster) error { for i := 0; i < retries; i++ { lastRev, err = clus.maxRev() - if lastRev == 0 { - clus.lg.Info( - "trigger snapshot RETRY", - zap.Int("retries", i), - zap.Int64("etcd-snapshot-count", snapshotCount), - zap.Int64("start-revision", startRev), - zap.Error(err), - ) - time.Sleep(3 * time.Second) - continue - } - // If the number of proposals committed is bigger than snapshot count, // a new snapshot should have been created. diff := lastRev - startRev @@ -304,8 +292,12 @@ func (c *caseUntilSnapshot) Inject(clus *Cluster) error { return nil } + dur := time.Second + if diff < 0 || err != nil { + dur = 3 * time.Second + } clus.lg.Info( - "trigger snapshot RETRY", + "trigger snapshot PROGRESS", zap.Int("retries", i), zap.Int64("committed-entries", diff), zap.Int64("etcd-snapshot-count", snapshotCount), @@ -314,10 +306,7 @@ func (c *caseUntilSnapshot) Inject(clus *Cluster) error { zap.Duration("took", time.Since(now)), zap.Error(err), ) - time.Sleep(time.Second) - if err != nil { - time.Sleep(2 * time.Second) - } + time.Sleep(dur) } return fmt.Errorf("cluster too slow: only %d commits in %d retries", lastRev-startRev, retries) diff --git a/functional/tester/case_delay.go b/functional/tester/case_delay.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_external.go b/functional/tester/case_external.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_failpoints.go b/functional/tester/case_failpoints.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_network_blackhole.go b/functional/tester/case_network_blackhole.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_network_delay.go b/functional/tester/case_network_delay.go old mode 100644 new mode 100755 index dd3902e48..39a471702 --- a/functional/tester/case_network_delay.go +++ b/functional/tester/case_network_delay.go @@ -26,7 +26,7 @@ const ( // Wait more when it recovers from slow network, because network layer // needs extra time to propagate traffic control (tc command) change. // Otherwise, we get different hash values from the previous revision. - // For more detail, please see https://github.com/etcd-io/etcd/issues/5121. + // For more detail, please see https://github.com/coreos/etcd/issues/5121. waitRecover = 5 * time.Second ) diff --git a/functional/tester/case_no_fail.go b/functional/tester/case_no_fail.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_sigquit_remove.go b/functional/tester/case_sigquit_remove.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_sigquit_remove_quorum.go b/functional/tester/case_sigquit_remove_quorum.go old mode 100644 new mode 100755 diff --git a/functional/tester/case_sigterm.go b/functional/tester/case_sigterm.go old mode 100644 new mode 100755 diff --git a/functional/tester/checker.go b/functional/tester/checker.go old mode 100644 new mode 100755 diff --git a/functional/tester/checker_kv_hash.go b/functional/tester/checker_kv_hash.go old mode 100644 new mode 100755 diff --git a/functional/tester/checker_lease_expire.go b/functional/tester/checker_lease_expire.go old mode 100644 new mode 100755 diff --git a/functional/tester/checker_no_check.go b/functional/tester/checker_no_check.go old mode 100644 new mode 100755 diff --git a/functional/tester/checker_runner.go b/functional/tester/checker_runner.go old mode 100644 new mode 100755 diff --git a/functional/tester/cluster.go b/functional/tester/cluster.go old mode 100644 new mode 100755 index 0f5233833..b18084d48 --- a/functional/tester/cluster.go +++ b/functional/tester/cluster.go @@ -20,7 +20,6 @@ import ( "fmt" "io" "io/ioutil" - "log" "math/rand" "net/http" "net/url" @@ -107,9 +106,8 @@ func NewCluster(lg *zap.Logger, fpath string) (*Cluster, error) { } } clus.testerHTTPServer = &http.Server{ - Addr: clus.Tester.Addr, - Handler: mux, - ErrorLog: log.New(ioutil.Discard, "net/http", 0), + Addr: clus.Tester.Addr, + Handler: mux, } go clus.serveTesterServer() @@ -493,9 +491,9 @@ func (clus *Cluster) sendOpWithResp(idx int, op rpcpb.Operation) (*rpcpb.Respons m, secure := clus.Members[idx], false for _, cu := range m.Etcd.AdvertiseClientURLs { - u, perr := url.Parse(cu) - if perr != nil { - return nil, perr + u, err := url.Parse(cu) + if err != nil { + return nil, err } if u.Scheme == "https" { // TODO: handle unix secure = true @@ -593,7 +591,7 @@ func (clus *Cluster) WaitHealth() error { // wait 60s to check cluster health. // TODO: set it to a reasonable value. It is set that high because // follower may use long time to catch up the leader when reboot under - // reasonable workload (https://github.com/etcd-io/etcd/issues/2698) + // reasonable workload (https://github.com/coreos/etcd/issues/2698) for i := 0; i < 60; i++ { for _, m := range clus.Members { if err = m.WriteHealthKey(); err != nil { diff --git a/functional/tester/cluster_read_config.go b/functional/tester/cluster_read_config.go old mode 100644 new mode 100755 index 540e90efb..223265e66 --- a/functional/tester/cluster_read_config.go +++ b/functional/tester/cluster_read_config.go @@ -44,56 +44,14 @@ func read(lg *zap.Logger, fpath string) (*Cluster, error) { return nil, fmt.Errorf("len(clus.Members) expects at least 3, got %d", len(clus.Members)) } - failpointsEnabled := false - for _, c := range clus.Tester.Cases { - if c == rpcpb.Case_FAILPOINTS.String() { - failpointsEnabled = true - break - } - } - - if len(clus.Tester.Cases) == 0 { - return nil, errors.New("cases not found") - } - if clus.Tester.DelayLatencyMs <= clus.Tester.DelayLatencyMsRv*5 { - return nil, fmt.Errorf("delay latency %d ms must be greater than 5x of delay latency random variable %d ms", clus.Tester.DelayLatencyMs, clus.Tester.DelayLatencyMsRv) - } - if clus.Tester.UpdatedDelayLatencyMs == 0 { - clus.Tester.UpdatedDelayLatencyMs = clus.Tester.DelayLatencyMs - } - - for _, v := range clus.Tester.Cases { - if _, ok := rpcpb.Case_value[v]; !ok { - return nil, fmt.Errorf("%q is not defined in 'rpcpb.Case_value'", v) - } - } - - for _, s := range clus.Tester.Stressers { - if _, ok := rpcpb.StresserType_value[s.Type]; !ok { - return nil, fmt.Errorf("unknown 'StresserType' %+v", s) - } - } - - for _, v := range clus.Tester.Checkers { - if _, ok := rpcpb.Checker_value[v]; !ok { - return nil, fmt.Errorf("Checker is unknown; got %q", v) - } - } - - if clus.Tester.StressKeySuffixRangeTxn > 100 { - return nil, fmt.Errorf("StressKeySuffixRangeTxn maximum value is 100, got %v", clus.Tester.StressKeySuffixRangeTxn) - } - if clus.Tester.StressKeyTxnOps > 64 { - return nil, fmt.Errorf("StressKeyTxnOps maximum value is 64, got %v", clus.Tester.StressKeyTxnOps) - } - for i, mem := range clus.Members { - if mem.EtcdExec == "embed" && failpointsEnabled { - return nil, errors.New("EtcdExec 'embed' cannot be run with failpoints enabled") - } if mem.BaseDir == "" { return nil, fmt.Errorf("BaseDir cannot be empty (got %q)", mem.BaseDir) } + if mem.EtcdLogPath == "" { + return nil, fmt.Errorf("EtcdLogPath cannot be empty (got %q)", mem.EtcdLogPath) + } + if mem.Etcd.Name == "" { return nil, fmt.Errorf("'--name' cannot be empty (got %+v)", mem) } @@ -174,6 +132,9 @@ func read(lg *zap.Logger, fpath string) (*Cluster, error) { } } + if !strings.HasPrefix(mem.EtcdLogPath, mem.BaseDir) { + return nil, fmt.Errorf("EtcdLogPath must be prefixed with BaseDir (got %q)", mem.EtcdLogPath) + } if !strings.HasPrefix(mem.Etcd.DataDir, mem.BaseDir) { return nil, fmt.Errorf("Etcd.DataDir must be prefixed with BaseDir (got %q)", mem.Etcd.DataDir) } @@ -227,7 +188,7 @@ func read(lg *zap.Logger, fpath string) (*Cluster, error) { return nil, fmt.Errorf("Etcd.PeerClientCertAuth and Etcd.PeerAutoTLS cannot be both 'true'") } if (mem.Etcd.PeerCertFile == "") != (mem.Etcd.PeerKeyFile == "") { - return nil, fmt.Errorf("both Etcd.PeerCertFile %q and Etcd.PeerKeyFile %q must be either empty or non-empty", mem.Etcd.PeerCertFile, mem.Etcd.PeerKeyFile) + return nil, fmt.Errorf("Both Etcd.PeerCertFile %q and Etcd.PeerKeyFile %q must be either empty or non-empty", mem.Etcd.PeerCertFile, mem.Etcd.PeerKeyFile) } if mem.Etcd.ClientCertAuth && mem.Etcd.ClientAutoTLS { return nil, fmt.Errorf("Etcd.ClientCertAuth and Etcd.ClientAutoTLS cannot be both 'true'") @@ -251,7 +212,7 @@ func read(lg *zap.Logger, fpath string) (*Cluster, error) { return nil, fmt.Errorf("Etcd.ClientCertAuth 'false', but Etcd.ClientTrustedCAFile is %q", mem.Etcd.PeerCertFile) } if (mem.Etcd.ClientCertFile == "") != (mem.Etcd.ClientKeyFile == "") { - return nil, fmt.Errorf("both Etcd.ClientCertFile %q and Etcd.ClientKeyFile %q must be either empty or non-empty", mem.Etcd.ClientCertFile, mem.Etcd.ClientKeyFile) + return nil, fmt.Errorf("Both Etcd.ClientCertFile %q and Etcd.ClientKeyFile %q must be either empty or non-empty", mem.Etcd.ClientCertFile, mem.Etcd.ClientKeyFile) } peerTLS := mem.Etcd.PeerAutoTLS || @@ -356,21 +317,42 @@ func read(lg *zap.Logger, fpath string) (*Cluster, error) { } clus.Members[i].ClientCertData = string(data) } - - if len(mem.Etcd.LogOutputs) == 0 { - return nil, fmt.Errorf("mem.Etcd.LogOutputs cannot be empty") - } - for _, v := range mem.Etcd.LogOutputs { - switch v { - case "stderr", "stdout", "/dev/null", "default": - default: - if !strings.HasPrefix(v, mem.BaseDir) { - return nil, fmt.Errorf("LogOutput %q must be prefixed with BaseDir %q", v, mem.BaseDir) - } - } - } } } + if len(clus.Tester.Cases) == 0 { + return nil, errors.New("Cases not found") + } + if clus.Tester.DelayLatencyMs <= clus.Tester.DelayLatencyMsRv*5 { + return nil, fmt.Errorf("delay latency %d ms must be greater than 5x of delay latency random variable %d ms", clus.Tester.DelayLatencyMs, clus.Tester.DelayLatencyMsRv) + } + if clus.Tester.UpdatedDelayLatencyMs == 0 { + clus.Tester.UpdatedDelayLatencyMs = clus.Tester.DelayLatencyMs + } + + for _, v := range clus.Tester.Cases { + if _, ok := rpcpb.Case_value[v]; !ok { + return nil, fmt.Errorf("%q is not defined in 'rpcpb.Case_value'", v) + } + } + + for _, v := range clus.Tester.Stressers { + if _, ok := rpcpb.Stresser_value[v]; !ok { + return nil, fmt.Errorf("Stresser is unknown; got %q", v) + } + } + for _, v := range clus.Tester.Checkers { + if _, ok := rpcpb.Checker_value[v]; !ok { + return nil, fmt.Errorf("Checker is unknown; got %q", v) + } + } + + if clus.Tester.StressKeySuffixRangeTxn > 100 { + return nil, fmt.Errorf("StressKeySuffixRangeTxn maximum value is 100, got %v", clus.Tester.StressKeySuffixRangeTxn) + } + if clus.Tester.StressKeyTxnOps > 64 { + return nil, fmt.Errorf("StressKeyTxnOps maximum value is 64, got %v", clus.Tester.StressKeyTxnOps) + } + return clus, err } diff --git a/functional/tester/cluster_run.go b/functional/tester/cluster_run.go old mode 100644 new mode 100755 index d80dbb9b5..6dd002106 --- a/functional/tester/cluster_run.go +++ b/functional/tester/cluster_run.go @@ -212,8 +212,8 @@ func (clus *Cluster) doRound() error { ) // with network delay, some ongoing requests may fail - // only return error, if more than 30% of QPS requests fail - if cnt > int(float64(clus.Tester.StressQPS)*0.3) { + // only return error, if more than 10% of QPS requests fail + if cnt > int(clus.Tester.StressQPS)/10 { return fmt.Errorf("expected no error in %q, got %q", fcase.String(), ess) } } diff --git a/functional/tester/cluster_shuffle.go b/functional/tester/cluster_shuffle.go old mode 100644 new mode 100755 diff --git a/functional/tester/cluster_test.go b/functional/tester/cluster_test.go deleted file mode 100644 index 5d0a66ed0..000000000 --- a/functional/tester/cluster_test.go +++ /dev/null @@ -1,304 +0,0 @@ -// Copyright 2018 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tester - -import ( - "reflect" - "sort" - "testing" - - "github.com/coreos/etcd/functional/rpcpb" - - "go.uber.org/zap" -) - -func Test_read(t *testing.T) { - exp := &Cluster{ - Members: []*rpcpb.Member{ - { - EtcdExec: "./bin/etcd", - AgentAddr: "127.0.0.1:19027", - FailpointHTTPAddr: "http://127.0.0.1:7381", - BaseDir: "/tmp/etcd-functional-1", - EtcdClientProxy: false, - EtcdPeerProxy: true, - EtcdClientEndpoint: "127.0.0.1:1379", - Etcd: &rpcpb.Etcd{ - Name: "s1", - DataDir: "/tmp/etcd-functional-1/etcd.data", - WALDir: "/tmp/etcd-functional-1/etcd.data/member/wal", - HeartbeatIntervalMs: 100, - ElectionTimeoutMs: 1000, - ListenClientURLs: []string{"https://127.0.0.1:1379"}, - AdvertiseClientURLs: []string{"https://127.0.0.1:1379"}, - ClientAutoTLS: true, - ClientCertAuth: false, - ClientCertFile: "", - ClientKeyFile: "", - ClientTrustedCAFile: "", - ListenPeerURLs: []string{"https://127.0.0.1:1380"}, - AdvertisePeerURLs: []string{"https://127.0.0.1:1381"}, - PeerAutoTLS: true, - PeerClientCertAuth: false, - PeerCertFile: "", - PeerKeyFile: "", - PeerTrustedCAFile: "", - InitialCluster: "s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381", - InitialClusterState: "new", - InitialClusterToken: "tkn", - SnapshotCount: 10000, - QuotaBackendBytes: 10740000000, - PreVote: true, - InitialCorruptCheck: true, - Logger: "zap", - LogOutputs: []string{"/tmp/etcd-functional-1/etcd.log"}, - Debug: true, - }, - ClientCertData: "", - ClientCertPath: "", - ClientKeyData: "", - ClientKeyPath: "", - ClientTrustedCAData: "", - ClientTrustedCAPath: "", - PeerCertData: "", - PeerCertPath: "", - PeerKeyData: "", - PeerKeyPath: "", - PeerTrustedCAData: "", - PeerTrustedCAPath: "", - SnapshotPath: "/tmp/etcd-functional-1.snapshot.db", - }, - { - EtcdExec: "./bin/etcd", - AgentAddr: "127.0.0.1:29027", - FailpointHTTPAddr: "http://127.0.0.1:7382", - BaseDir: "/tmp/etcd-functional-2", - EtcdClientProxy: false, - EtcdPeerProxy: true, - EtcdClientEndpoint: "127.0.0.1:2379", - Etcd: &rpcpb.Etcd{ - Name: "s2", - DataDir: "/tmp/etcd-functional-2/etcd.data", - WALDir: "/tmp/etcd-functional-2/etcd.data/member/wal", - HeartbeatIntervalMs: 100, - ElectionTimeoutMs: 1000, - ListenClientURLs: []string{"https://127.0.0.1:2379"}, - AdvertiseClientURLs: []string{"https://127.0.0.1:2379"}, - ClientAutoTLS: true, - ClientCertAuth: false, - ClientCertFile: "", - ClientKeyFile: "", - ClientTrustedCAFile: "", - ListenPeerURLs: []string{"https://127.0.0.1:2380"}, - AdvertisePeerURLs: []string{"https://127.0.0.1:2381"}, - PeerAutoTLS: true, - PeerClientCertAuth: false, - PeerCertFile: "", - PeerKeyFile: "", - PeerTrustedCAFile: "", - InitialCluster: "s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381", - InitialClusterState: "new", - InitialClusterToken: "tkn", - SnapshotCount: 10000, - QuotaBackendBytes: 10740000000, - PreVote: true, - InitialCorruptCheck: true, - Logger: "zap", - LogOutputs: []string{"/tmp/etcd-functional-2/etcd.log"}, - Debug: true, - }, - ClientCertData: "", - ClientCertPath: "", - ClientKeyData: "", - ClientKeyPath: "", - ClientTrustedCAData: "", - ClientTrustedCAPath: "", - PeerCertData: "", - PeerCertPath: "", - PeerKeyData: "", - PeerKeyPath: "", - PeerTrustedCAData: "", - PeerTrustedCAPath: "", - SnapshotPath: "/tmp/etcd-functional-2.snapshot.db", - }, - { - EtcdExec: "./bin/etcd", - AgentAddr: "127.0.0.1:39027", - FailpointHTTPAddr: "http://127.0.0.1:7383", - BaseDir: "/tmp/etcd-functional-3", - EtcdClientProxy: false, - EtcdPeerProxy: true, - EtcdClientEndpoint: "127.0.0.1:3379", - Etcd: &rpcpb.Etcd{ - Name: "s3", - DataDir: "/tmp/etcd-functional-3/etcd.data", - WALDir: "/tmp/etcd-functional-3/etcd.data/member/wal", - HeartbeatIntervalMs: 100, - ElectionTimeoutMs: 1000, - ListenClientURLs: []string{"https://127.0.0.1:3379"}, - AdvertiseClientURLs: []string{"https://127.0.0.1:3379"}, - ClientAutoTLS: true, - ClientCertAuth: false, - ClientCertFile: "", - ClientKeyFile: "", - ClientTrustedCAFile: "", - ListenPeerURLs: []string{"https://127.0.0.1:3380"}, - AdvertisePeerURLs: []string{"https://127.0.0.1:3381"}, - PeerAutoTLS: true, - PeerClientCertAuth: false, - PeerCertFile: "", - PeerKeyFile: "", - PeerTrustedCAFile: "", - InitialCluster: "s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381", - InitialClusterState: "new", - InitialClusterToken: "tkn", - SnapshotCount: 10000, - QuotaBackendBytes: 10740000000, - PreVote: true, - InitialCorruptCheck: true, - Logger: "zap", - LogOutputs: []string{"/tmp/etcd-functional-3/etcd.log"}, - Debug: true, - }, - ClientCertData: "", - ClientCertPath: "", - ClientKeyData: "", - ClientKeyPath: "", - ClientTrustedCAData: "", - ClientTrustedCAPath: "", - PeerCertData: "", - PeerCertPath: "", - PeerKeyData: "", - PeerKeyPath: "", - PeerTrustedCAData: "", - PeerTrustedCAPath: "", - SnapshotPath: "/tmp/etcd-functional-3.snapshot.db", - }, - }, - Tester: &rpcpb.Tester{ - DataDir: "/tmp/etcd-tester-data", - Network: "tcp", - Addr: "127.0.0.1:9028", - DelayLatencyMs: 5000, - DelayLatencyMsRv: 500, - UpdatedDelayLatencyMs: 5000, - RoundLimit: 1, - ExitOnCaseFail: true, - EnablePprof: true, - CaseDelayMs: 7000, - CaseShuffle: true, - Cases: []string{ - "SIGTERM_ONE_FOLLOWER", - "SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT", - "SIGTERM_LEADER", - "SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT", - "SIGTERM_QUORUM", - "SIGTERM_ALL", - "SIGQUIT_AND_REMOVE_ONE_FOLLOWER", - "SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT", - // "SIGQUIT_AND_REMOVE_LEADER", - // "SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT", - // "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH", - // "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER", - // "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT", - "BLACKHOLE_PEER_PORT_TX_RX_LEADER", - "BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT", - "BLACKHOLE_PEER_PORT_TX_RX_QUORUM", - "BLACKHOLE_PEER_PORT_TX_RX_ALL", - // "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER", - // "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER", - // "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT", - // "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT", - "DELAY_PEER_PORT_TX_RX_LEADER", - "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER", - "DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT", - "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT", - "DELAY_PEER_PORT_TX_RX_QUORUM", - "RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM", - "DELAY_PEER_PORT_TX_RX_ALL", - "RANDOM_DELAY_PEER_PORT_TX_RX_ALL", - "NO_FAIL_WITH_STRESS", - "NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS", - }, - FailpointCommands: []string{`panic("etcd-tester")`}, - RunnerExecPath: "./bin/etcd-runner", - ExternalExecPath: "", - Stressers: []*rpcpb.Stresser{ - {Type: "KV_WRITE_SMALL", Weight: 0.35}, - {Type: "KV_WRITE_LARGE", Weight: 0.002}, - {Type: "KV_READ_ONE_KEY", Weight: 0.07}, - {Type: "KV_READ_RANGE", Weight: 0.07}, - {Type: "KV_DELETE_ONE_KEY", Weight: 0.07}, - {Type: "KV_DELETE_RANGE", Weight: 0.07}, - {Type: "KV_TXN_WRITE_DELETE", Weight: 0.35}, - {Type: "LEASE", Weight: 0.0}, - }, - Checkers: []string{"KV_HASH", "LEASE_EXPIRE"}, - StressKeySize: 100, - StressKeySizeLarge: 32769, - StressKeySuffixRange: 250000, - StressKeySuffixRangeTxn: 100, - StressKeyTxnOps: 10, - StressClients: 100, - StressQPS: 2000, - }, - } - - logger, err := zap.NewProduction() - if err != nil { - t.Fatal(err) - } - defer logger.Sync() - - cfg, err := read(logger, "../../functional.yaml") - if err != nil { - t.Fatal(err) - } - cfg.lg = nil - - if !reflect.DeepEqual(exp, cfg) { - t.Fatalf("expected %+v, got %+v", exp, cfg) - } - - cfg.lg = logger - - cfg.updateCases() - fs1 := cfg.listCases() - - cfg.shuffleCases() - fs2 := cfg.listCases() - if reflect.DeepEqual(fs1, fs2) { - t.Fatalf("expected shuffled failure cases, got %q", fs2) - } - - cfg.shuffleCases() - fs3 := cfg.listCases() - if reflect.DeepEqual(fs2, fs3) { - t.Fatalf("expected reshuffled failure cases from %q, got %q", fs2, fs3) - } - - // shuffle ensures visit all exactly once - // so when sorted, failure cases must be equal - sort.Strings(fs1) - sort.Strings(fs2) - sort.Strings(fs3) - - if !reflect.DeepEqual(fs1, fs2) { - t.Fatalf("expected %q, got %q", fs1, fs2) - } - if !reflect.DeepEqual(fs2, fs3) { - t.Fatalf("expected %q, got %q", fs2, fs3) - } -} diff --git a/functional/tester/doc.go b/functional/tester/doc.go old mode 100644 new mode 100755 diff --git a/functional/tester/metrics_report.go b/functional/tester/metrics_report.go old mode 100644 new mode 100755 diff --git a/functional/tester/stresser.go b/functional/tester/stresser.go old mode 100644 new mode 100755 index 5f4fdea34..b74b84b15 --- a/functional/tester/stresser.go +++ b/functional/tester/stresser.go @@ -37,60 +37,40 @@ type Stresser interface { // newStresser creates stresser from a comma separated list of stresser types. func newStresser(clus *Cluster, m *rpcpb.Member) (stressers []Stresser) { - // TODO: Too intensive stressing clients can panic etcd member with - // 'out of memory' error. Put rate limits in server side. - ks := &keyStresser{ - lg: clus.lg, - m: m, - keySize: int(clus.Tester.StressKeySize), - keyLargeSize: int(clus.Tester.StressKeySizeLarge), - keySuffixRange: int(clus.Tester.StressKeySuffixRange), - keyTxnSuffixRange: int(clus.Tester.StressKeySuffixRangeTxn), - keyTxnOps: int(clus.Tester.StressKeyTxnOps), - clientsN: int(clus.Tester.StressClients), - rateLimiter: clus.rateLimiter, - } - ksExist := false - - for _, s := range clus.Tester.Stressers { + stressers = make([]Stresser, len(clus.Tester.Stressers)) + for i, stype := range clus.Tester.Stressers { clus.lg.Info( "creating stresser", - zap.String("type", s.Type), - zap.Float64("weight", s.Weight), + zap.String("type", stype), zap.String("endpoint", m.EtcdClientEndpoint), ) - switch s.Type { - case "KV_WRITE_SMALL": - ksExist = true - ks.weightKVWriteSmall = s.Weight - case "KV_WRITE_LARGE": - ksExist = true - ks.weightKVWriteLarge = s.Weight - case "KV_READ_ONE_KEY": - ksExist = true - ks.weightKVReadOneKey = s.Weight - case "KV_READ_RANGE": - ksExist = true - ks.weightKVReadRange = s.Weight - case "KV_DELETE_ONE_KEY": - ksExist = true - ks.weightKVDeleteOneKey = s.Weight - case "KV_DELETE_RANGE": - ksExist = true - ks.weightKVDeleteRange = s.Weight - case "KV_TXN_WRITE_DELETE": - ksExist = true - ks.weightKVTxnWriteDelete = s.Weight + + switch stype { + case "KV": + // TODO: Too intensive stressing clients can panic etcd member with + // 'out of memory' error. Put rate limits in server side. + stressers[i] = &keyStresser{ + stype: rpcpb.Stresser_KV, + lg: clus.lg, + m: m, + keySize: int(clus.Tester.StressKeySize), + keyLargeSize: int(clus.Tester.StressKeySizeLarge), + keySuffixRange: int(clus.Tester.StressKeySuffixRange), + keyTxnSuffixRange: int(clus.Tester.StressKeySuffixRangeTxn), + keyTxnOps: int(clus.Tester.StressKeyTxnOps), + clientsN: int(clus.Tester.StressClients), + rateLimiter: clus.rateLimiter, + } case "LEASE": - stressers = append(stressers, &leaseStresser{ - stype: rpcpb.StresserType_LEASE, + stressers[i] = &leaseStresser{ + stype: rpcpb.Stresser_LEASE, lg: clus.lg, m: m, numLeases: 10, // TODO: configurable keysPerLease: 10, // TODO: configurable rateLimiter: clus.rateLimiter, - }) + } case "ELECTION_RUNNER": reqRate := 100 @@ -103,15 +83,15 @@ func newStresser(clus *Cluster, m *rpcpb.Member) (stressers []Stresser) { "--rounds=0", // runs forever "--req-rate", fmt.Sprintf("%v", reqRate), } - stressers = append(stressers, newRunnerStresser( - rpcpb.StresserType_ELECTION_RUNNER, + stressers[i] = newRunnerStresser( + rpcpb.Stresser_ELECTION_RUNNER, m.EtcdClientEndpoint, clus.lg, clus.Tester.RunnerExecPath, args, clus.rateLimiter, reqRate, - )) + ) case "WATCH_RUNNER": reqRate := 100 @@ -125,15 +105,15 @@ func newStresser(clus *Cluster, m *rpcpb.Member) (stressers []Stresser) { "--rounds=0", // runs forever "--req-rate", fmt.Sprintf("%v", reqRate), } - stressers = append(stressers, newRunnerStresser( - rpcpb.StresserType_WATCH_RUNNER, + stressers[i] = newRunnerStresser( + rpcpb.Stresser_WATCH_RUNNER, m.EtcdClientEndpoint, clus.lg, clus.Tester.RunnerExecPath, args, clus.rateLimiter, reqRate, - )) + ) case "LOCK_RACER_RUNNER": reqRate := 100 @@ -145,15 +125,15 @@ func newStresser(clus *Cluster, m *rpcpb.Member) (stressers []Stresser) { "--rounds=0", // runs forever "--req-rate", fmt.Sprintf("%v", reqRate), } - stressers = append(stressers, newRunnerStresser( - rpcpb.StresserType_LOCK_RACER_RUNNER, + stressers[i] = newRunnerStresser( + rpcpb.Stresser_LOCK_RACER_RUNNER, m.EtcdClientEndpoint, clus.lg, clus.Tester.RunnerExecPath, args, clus.rateLimiter, reqRate, - )) + ) case "LEASE_RUNNER": args := []string{ @@ -161,20 +141,16 @@ func newStresser(clus *Cluster, m *rpcpb.Member) (stressers []Stresser) { "--ttl=30", "--endpoints", m.EtcdClientEndpoint, } - stressers = append(stressers, newRunnerStresser( - rpcpb.StresserType_LEASE_RUNNER, + stressers[i] = newRunnerStresser( + rpcpb.Stresser_LEASE_RUNNER, m.EtcdClientEndpoint, clus.lg, clus.Tester.RunnerExecPath, args, clus.rateLimiter, 0, - )) + ) } } - - if ksExist { - return append(stressers, ks) - } return stressers } diff --git a/functional/tester/stresser_composite.go b/functional/tester/stresser_composite.go old mode 100644 new mode 100755 diff --git a/functional/tester/stresser_key.go b/functional/tester/stresser_key.go old mode 100644 new mode 100755 index 2997f4777..e5bbe3b09 --- a/functional/tester/stresser_key.go +++ b/functional/tester/stresser_key.go @@ -31,23 +31,14 @@ import ( "go.uber.org/zap" "golang.org/x/time/rate" "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) type keyStresser struct { - lg *zap.Logger + stype rpcpb.Stresser + lg *zap.Logger m *rpcpb.Member - weightKVWriteSmall float64 - weightKVWriteLarge float64 - weightKVReadOneKey float64 - weightKVReadRange float64 - weightKVDeleteOneKey float64 - weightKVDeleteRange float64 - weightKVTxnWriteDelete float64 - keySize int keyLargeSize int keySuffixRange int @@ -82,16 +73,26 @@ func (s *keyStresser) Stress() error { s.ctx, s.cancel = context.WithCancel(context.Background()) s.wg.Add(s.clientsN) - - s.stressTable = createStressTable([]stressEntry{ - {weight: s.weightKVWriteSmall, f: newStressPut(s.cli, s.keySuffixRange, s.keySize)}, - {weight: s.weightKVWriteLarge, f: newStressPut(s.cli, s.keySuffixRange, s.keyLargeSize)}, - {weight: s.weightKVReadOneKey, f: newStressRange(s.cli, s.keySuffixRange)}, - {weight: s.weightKVReadRange, f: newStressRangeInterval(s.cli, s.keySuffixRange)}, - {weight: s.weightKVDeleteOneKey, f: newStressDelete(s.cli, s.keySuffixRange)}, - {weight: s.weightKVDeleteRange, f: newStressDeleteInterval(s.cli, s.keySuffixRange)}, - {weight: s.weightKVTxnWriteDelete, f: newStressTxn(s.cli, s.keyTxnSuffixRange, s.keyTxnOps)}, - }) + var stressEntries = []stressEntry{ + {weight: 0.7, f: newStressPut(s.cli, s.keySuffixRange, s.keySize)}, + { + weight: 0.7 * float32(s.keySize) / float32(s.keyLargeSize), + f: newStressPut(s.cli, s.keySuffixRange, s.keyLargeSize), + }, + {weight: 0.07, f: newStressRange(s.cli, s.keySuffixRange)}, + {weight: 0.07, f: newStressRangeInterval(s.cli, s.keySuffixRange)}, + {weight: 0.07, f: newStressDelete(s.cli, s.keySuffixRange)}, + {weight: 0.07, f: newStressDeleteInterval(s.cli, s.keySuffixRange)}, + } + if s.keyTxnSuffixRange > 0 { + // adjust to make up ±70% of workloads with writes + stressEntries[0].weight = 0.35 + stressEntries = append(stressEntries, stressEntry{ + weight: 0.35, + f: newStressTxn(s.cli, s.keyTxnSuffixRange, s.keyTxnOps), + }) + } + s.stressTable = createStressTable(stressEntries) s.emu.Lock() s.paused = false @@ -103,7 +104,7 @@ func (s *keyStresser) Stress() error { s.lg.Info( "stress START", - zap.String("stress-type", "KV"), + zap.String("stress-type", s.stype.String()), zap.String("endpoint", s.m.EtcdClientEndpoint), ) return nil @@ -128,7 +129,41 @@ func (s *keyStresser) run() { continue } - if !s.isRetryableError(err) { + switch rpctypes.ErrorDesc(err) { + case context.DeadlineExceeded.Error(): + // This retries when request is triggered at the same time as + // leader failure. When we terminate the leader, the request to + // that leader cannot be processed, and times out. Also requests + // to followers cannot be forwarded to the old leader, so timing out + // as well. We want to keep stressing until the cluster elects a + // new leader and start processing requests again. + case etcdserver.ErrTimeoutDueToLeaderFail.Error(), etcdserver.ErrTimeout.Error(): + // This retries when request is triggered at the same time as + // leader failure and follower nodes receive time out errors + // from losing their leader. Followers should retry to connect + // to the new leader. + case etcdserver.ErrStopped.Error(): + // one of the etcd nodes stopped from failure injection + // case transport.ErrConnClosing.Desc: + // // server closed the transport (failure injected node) + case rpctypes.ErrNotCapable.Error(): + // capability check has not been done (in the beginning) + case rpctypes.ErrTooManyRequests.Error(): + // hitting the recovering member. + case context.Canceled.Error(): + // from stresser.Cancel method: + return + case grpc.ErrClientConnClosing.Error(): + // from stresser.Cancel method: + return + default: + s.lg.Warn( + "stress run exiting", + zap.String("stress-type", s.stype.String()), + zap.String("endpoint", s.m.EtcdClientEndpoint), + zap.String("error-type", reflect.TypeOf(err).String()), + zap.Error(err), + ) return } @@ -141,58 +176,6 @@ func (s *keyStresser) run() { } } -func (s *keyStresser) isRetryableError(err error) bool { - switch rpctypes.ErrorDesc(err) { - // retryable - case context.DeadlineExceeded.Error(): - // This retries when request is triggered at the same time as - // leader failure. When we terminate the leader, the request to - // that leader cannot be processed, and times out. Also requests - // to followers cannot be forwarded to the old leader, so timing out - // as well. We want to keep stressing until the cluster elects a - // new leader and start processing requests again. - return true - case etcdserver.ErrTimeoutDueToLeaderFail.Error(), etcdserver.ErrTimeout.Error(): - // This retries when request is triggered at the same time as - // leader failure and follower nodes receive time out errors - // from losing their leader. Followers should retry to connect - // to the new leader. - return true - case etcdserver.ErrStopped.Error(): - // one of the etcd nodes stopped from failure injection - return true - case rpctypes.ErrNotCapable.Error(): - // capability check has not been done (in the beginning) - return true - case rpctypes.ErrTooManyRequests.Error(): - // hitting the recovering member. - return true - // case raft.ErrProposalDropped.Error(): - // // removed member, or leadership has changed (old leader got raftpb.MsgProp) - // return true - - // not retryable. - case context.Canceled.Error(): - // from stresser.Cancel method: - return false - } - - if status.Convert(err).Code() == codes.Unavailable { - // gRPC connection errors are translated to status.Unavailable - return true - } - - s.lg.Warn( - "stress run exiting", - zap.String("stress-type", "KV"), - zap.String("endpoint", s.m.EtcdClientEndpoint), - zap.String("error-type", reflect.TypeOf(err).String()), - zap.String("error-desc", rpctypes.ErrorDesc(err)), - zap.Error(err), - ) - return false -} - func (s *keyStresser) Pause() map[string]int { return s.Close() } @@ -210,7 +193,7 @@ func (s *keyStresser) Close() map[string]int { s.lg.Info( "stress STOP", - zap.String("stress-type", "KV"), + zap.String("stress-type", s.stype.String()), zap.String("endpoint", s.m.EtcdClientEndpoint), ) return ess @@ -223,13 +206,13 @@ func (s *keyStresser) ModifiedKeys() int64 { type stressFunc func(ctx context.Context) (err error, modifiedKeys int64) type stressEntry struct { - weight float64 + weight float32 f stressFunc } type stressTable struct { entries []stressEntry - sumWeights float64 + sumWeights float32 } func createStressTable(entries []stressEntry) *stressTable { @@ -241,8 +224,8 @@ func createStressTable(entries []stressEntry) *stressTable { } func (st *stressTable) choose() stressFunc { - v := rand.Float64() * st.sumWeights - var sum float64 + v := rand.Float32() * st.sumWeights + var sum float32 var idx int for i := range st.entries { sum += st.entries[i].weight diff --git a/functional/tester/stresser_lease.go b/functional/tester/stresser_lease.go old mode 100644 new mode 100755 index 673634e10..8510a0765 --- a/functional/tester/stresser_lease.go +++ b/functional/tester/stresser_lease.go @@ -38,7 +38,7 @@ const ( ) type leaseStresser struct { - stype rpcpb.StresserType + stype rpcpb.Stresser lg *zap.Logger m *rpcpb.Member diff --git a/functional/tester/stresser_runner.go b/functional/tester/stresser_runner.go old mode 100644 new mode 100755 index efcdfb6a7..18487f402 --- a/functional/tester/stresser_runner.go +++ b/functional/tester/stresser_runner.go @@ -27,7 +27,7 @@ import ( ) type runnerStresser struct { - stype rpcpb.StresserType + stype rpcpb.Stresser etcdClientEndpoint string lg *zap.Logger @@ -42,7 +42,7 @@ type runnerStresser struct { } func newRunnerStresser( - stype rpcpb.StresserType, + stype rpcpb.Stresser, ep string, lg *zap.Logger, cmdStr string, @@ -54,7 +54,6 @@ func newRunnerStresser( return &runnerStresser{ stype: stype, etcdClientEndpoint: ep, - lg: lg, cmdStr: cmdStr, args: args, rl: rl, diff --git a/functional/tester/utils.go b/functional/tester/utils.go old mode 100644 new mode 100755