diff --git a/agent/agent_cetcd.go b/agent/agent_cetcd.go index ecd4a900..5ad52017 100644 --- a/agent/agent_cetcd.go +++ b/agent/agent_cetcd.go @@ -18,6 +18,8 @@ import ( "fmt" "os/exec" "strings" + + "github.com/coreos/dbtester/dbtesterpb" ) // startCetcd starts cetcd. This assumes that etcd is already started. @@ -32,11 +34,19 @@ func startCetcd(fs *flags, t *transporterServer) error { clientURLs[i] = fmt.Sprintf("http://%s:2379", u) } - flags := []string{ - // "-consuladdr", "0.0.0.0:8500", - "-consuladdr", fmt.Sprintf("%s:8500", peerIPs[t.req.IpIndex]), - "-etcd", clientURLs[t.req.IpIndex], // etcd endpoint + var flags []string + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_cetcd__beta: + flags = []string{ + // "-consuladdr", "0.0.0.0:8500", + "-consuladdr", fmt.Sprintf("%s:8500", peerIPs[t.req.IPIndex]), + "-etcd", clientURLs[t.req.IPIndex], // etcd endpoint + } + + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } + flagString := strings.Join(flags, " ") cmd := exec.Command(fs.cetcdExec, flags...) @@ -51,7 +61,7 @@ func startCetcd(fs *flags, t *transporterServer) error { t.proxyCmd = cmd t.proxyCmdWait = make(chan struct{}) t.proxyPid = int64(cmd.Process.Pid) - plog.Infof("started database %q (PID: %d)", cs, t.pid) + plog.Infof("started database %q (PID: %d)", cs, t.pid) return nil } diff --git a/agent/agent_consul.go b/agent/agent_consul.go index dce29da8..297035da 100644 --- a/agent/agent_consul.go +++ b/agent/agent_consul.go @@ -19,6 +19,8 @@ import ( "os" "os/exec" "strings" + + "github.com/coreos/dbtester/dbtesterpb" ) // startConsul starts Consul. @@ -34,27 +36,55 @@ func startConsul(fs *flags, t *transporterServer) error { peerIPs := strings.Split(t.req.PeerIPsString, "___") var flags []string - switch t.req.IpIndex { - case 0: // leader - flags = []string{ - "agent", - "-server", - "-data-dir", fs.consulDataDir, - "-bind", peerIPs[t.req.IpIndex], - "-client", peerIPs[t.req.IpIndex], - "-bootstrap-expect", "3", + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_consul__v0_7_5: + switch t.req.IPIndex { + case 0: // leader + flags = []string{ + "agent", + "-server", + "-data-dir", fs.consulDataDir, + "-bind", peerIPs[t.req.IPIndex], + "-client", peerIPs[t.req.IPIndex], + "-bootstrap-expect", fmt.Sprintf("%d", len(peerIPs)), + } + default: + flags = []string{ + "agent", + "-server", + "-data-dir", fs.consulDataDir, + "-bind", peerIPs[t.req.IPIndex], + "-client", peerIPs[t.req.IPIndex], + "-join", peerIPs[0], + } + } + + case dbtesterpb.DatabaseID_consul__v0_8_0: + switch t.req.IPIndex { + case 0: // leader + flags = []string{ + "agent", + "-server", + "-data-dir", fs.consulDataDir, + "-bind", peerIPs[t.req.IPIndex], + "-client", peerIPs[t.req.IPIndex], + "-bootstrap-expect", fmt.Sprintf("%d", len(peerIPs)), + } + default: + flags = []string{ + "agent", + "-server", + "-data-dir", fs.consulDataDir, + "-bind", peerIPs[t.req.IPIndex], + "-client", peerIPs[t.req.IPIndex], + "-join", peerIPs[0], + } } default: - flags = []string{ - "agent", - "-server", - "-data-dir", fs.consulDataDir, - "-bind", peerIPs[t.req.IpIndex], - "-client", peerIPs[t.req.IpIndex], - "-join", peerIPs[0], - } + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } + flagString := strings.Join(flags, " ") cmd := exec.Command(fs.consulExec, flags...) @@ -69,7 +99,7 @@ func startConsul(fs *flags, t *transporterServer) error { t.cmd = cmd t.cmdWait = make(chan struct{}) t.pid = int64(cmd.Process.Pid) - plog.Infof("started database %q (PID: %d)", cs, t.pid) + plog.Infof("started database %q (PID: %d)", cs, t.pid) return nil } diff --git a/agent/agent_etcd.go b/agent/agent_etcd.go index 4bf710b1..cec15de3 100644 --- a/agent/agent_etcd.go +++ b/agent/agent_etcd.go @@ -19,6 +19,8 @@ import ( "os" "os/exec" "strings" + + "github.com/coreos/dbtester/dbtesterpb" ) // startEtcd starts etcd v2 and v3. @@ -44,28 +46,87 @@ func startEtcd(fs *flags, t *transporterServer) error { members[i] = fmt.Sprintf("%s=%s", names[i], peerURLs[i]) } - qv := t.req.Etcdv3Config.QuotaSizeBytes - if qv > 8000000000 { - plog.Warningf("maximum etcd quota is 8GB (got %d)... resetting to 8GB...", qv) - qv = 8000000000 + var flags []string + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_etcd__v2_3: + flags = []string{ + "--name", names[t.req.IPIndex], + "--data-dir", fs.etcdDataDir, + + "--snapshot-count", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.SnapshotCount), + + "--listen-client-urls", clientURLs[t.req.IPIndex], + "--advertise-client-urls", clientURLs[t.req.IPIndex], + + "--listen-peer-urls", peerURLs[t.req.IPIndex], + "--initial-advertise-peer-urls", peerURLs[t.req.IPIndex], + + "--initial-cluster-token", "dbtester-etcd-token", + "--initial-cluster", strings.Join(members, ","), + "--initial-cluster-state", "new", + } + + case dbtesterpb.DatabaseID_etcd__v3_1: + flags = []string{ + "--name", names[t.req.IPIndex], + "--data-dir", fs.etcdDataDir, + "--quota-backend-bytes", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.QuotaSizeBytes), + + "--snapshot-count", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.SnapshotCount), + + "--listen-client-urls", clientURLs[t.req.IPIndex], + "--advertise-client-urls", clientURLs[t.req.IPIndex], + + "--listen-peer-urls", peerURLs[t.req.IPIndex], + "--initial-advertise-peer-urls", peerURLs[t.req.IPIndex], + + "--initial-cluster-token", "dbtester-etcd-token", + "--initial-cluster", strings.Join(members, ","), + "--initial-cluster-state", "new", + } + + case dbtesterpb.DatabaseID_etcd__v3_2: + flags = []string{ + "--name", names[t.req.IPIndex], + "--data-dir", fs.etcdDataDir, + "--quota-backend-bytes", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.QuotaSizeBytes), + + "--snapshot-count", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.SnapshotCount), + + "--listen-client-urls", clientURLs[t.req.IPIndex], + "--advertise-client-urls", clientURLs[t.req.IPIndex], + + "--listen-peer-urls", peerURLs[t.req.IPIndex], + "--initial-advertise-peer-urls", peerURLs[t.req.IPIndex], + + "--initial-cluster-token", "dbtester-etcd-token", + "--initial-cluster", strings.Join(members, ","), + "--initial-cluster-state", "new", + } + + case dbtesterpb.DatabaseID_etcd__tip: + flags = []string{ + "--name", names[t.req.IPIndex], + "--data-dir", fs.etcdDataDir, + "--quota-backend-bytes", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.QuotaSizeBytes), + + "--snapshot-count", fmt.Sprintf("%d", t.req.Flag_Etcd_Tip.SnapshotCount), + + "--listen-client-urls", clientURLs[t.req.IPIndex], + "--advertise-client-urls", clientURLs[t.req.IPIndex], + + "--listen-peer-urls", peerURLs[t.req.IPIndex], + "--initial-advertise-peer-urls", peerURLs[t.req.IPIndex], + + "--initial-cluster-token", "dbtester-etcd-token", + "--initial-cluster", strings.Join(members, ","), + "--initial-cluster-state", "new", + } + + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } - flags := []string{ - "--name", names[t.req.IpIndex], - "--data-dir", fs.etcdDataDir, - "--quota-backend-bytes", fmt.Sprintf("%d", qv), - "--snapshot-count", fmt.Sprintf("%d", t.req.Etcdv3Config.SnapCount), - - "--listen-client-urls", clientURLs[t.req.IpIndex], - "--advertise-client-urls", clientURLs[t.req.IpIndex], - - "--listen-peer-urls", peerURLs[t.req.IpIndex], - "--initial-advertise-peer-urls", peerURLs[t.req.IpIndex], - - "--initial-cluster-token", "dbtester-etcd-token", - "--initial-cluster", strings.Join(members, ","), - "--initial-cluster-state", "new", - } flagString := strings.Join(flags, " ") cmd := exec.Command(fs.etcdExec, flags...) @@ -80,7 +141,7 @@ func startEtcd(fs *flags, t *transporterServer) error { t.cmd = cmd t.cmdWait = make(chan struct{}) t.pid = int64(cmd.Process.Pid) - plog.Infof("started database %q (PID: %d)", cs, t.pid) + plog.Infof("started database %q (PID: %d)", cs, t.pid) return nil } diff --git a/agent/agent_zetcd.go b/agent/agent_zetcd.go index df5e3bf5..dbd18dd3 100644 --- a/agent/agent_zetcd.go +++ b/agent/agent_zetcd.go @@ -18,6 +18,8 @@ import ( "fmt" "os/exec" "strings" + + "github.com/coreos/dbtester/dbtesterpb" ) // startZetcd starts zetcd. This assumes that etcd is already started. @@ -32,11 +34,19 @@ func startZetcd(fs *flags, t *transporterServer) error { clientURLs[i] = fmt.Sprintf("http://%s:2379", u) } - flags := []string{ - // "-zkaddr", "0.0.0.0:2181", - "-zkaddr", fmt.Sprintf("%s:2181", peerIPs[t.req.IpIndex]), - "-endpoint", clientURLs[t.req.IpIndex], + var flags []string + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_zetcd__beta: + flags = []string{ + // "-zkaddr", "0.0.0.0:2181", + "-zkaddr", fmt.Sprintf("%s:2181", peerIPs[t.req.IPIndex]), + "-endpoint", clientURLs[t.req.IPIndex], + } + + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } + flagString := strings.Join(flags, " ") cmd := exec.Command(fs.zetcdExec, flags...) @@ -51,7 +61,7 @@ func startZetcd(fs *flags, t *transporterServer) error { t.proxyCmd = cmd t.proxyCmdWait = make(chan struct{}) t.proxyPid = int64(cmd.Process.Pid) - plog.Infof("started database %q (PID: %d)", cs, t.pid) + plog.Infof("started database %q (PID: %d)", cs, t.pid) return nil } diff --git a/agent/agent_zookeeper.go b/agent/agent_zookeeper.go index 438ee3c7..365af9c4 100644 --- a/agent/agent_zookeeper.go +++ b/agent/agent_zookeeper.go @@ -22,6 +22,8 @@ import ( "os/exec" "path/filepath" "strings" + + "github.com/coreos/dbtester/dbtesterpb" ) var ( @@ -64,6 +66,23 @@ func init() { } } +// Java class paths for Zookeeper. +// '-cp' is for 'class search path of directories and zip/jar files'. +// See https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html for more. +const ( + // JavaClassPathZookeeperr349 is the Java class paths of Zookeeper r3.4.9. + // CHANGE THIS FOR DIFFERENT ZOOKEEPER RELEASE! + // THIS IS ONLY VALID FOR Zookeeper r3.4.9. + // Search correct paths with 'find ./zookeeper/lib | sort'. + JavaClassPathZookeeperr349 = `-cp zookeeper-3.4.9.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain` + + // JavaClassPathZookeeperr352alpha is the Java class paths of Zookeeper r3.5.2-alpha. + // CHANGE THIS FOR DIFFERENT ZOOKEEPER RELEASE! + // THIS IS ONLY VALID FOR Zookeeper r3.5.2-alpha. + // Search correct paths with 'find ./zookeeper/lib | sort'. + JavaClassPathZookeeperr352alpha = `-cp zookeeper-3.5.2-alpha.jar:lib/slf4j-api-1.7.5.jar:lib/slf4j-log4j12-1.7.5.jar:lib/log4j-1.2.17.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain` +) + // startZookeeper starts Zookeeper. func startZookeeper(fs *flags, t *transporterServer) error { if !exist(fs.javaExec) { @@ -84,44 +103,104 @@ func startZookeeper(fs *flags, t *transporterServer) error { } ipath := filepath.Join(fs.zkDataDir, "myid") - plog.Infof("writing Zookeeper myid file %d to %s", t.req.ZookeeperConfig.MyID, ipath) - if err := toFile(fmt.Sprintf("%d", t.req.ZookeeperConfig.MyID), ipath); err != nil { - return err + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: + if t.req.Flag_Zookeeper_R3_4_9 == nil { + return fmt.Errorf("request 'Flag_Zookeeper_R3_4_9' is nil") + } + plog.Infof("writing Zookeeper myid file %d to %s", t.req.Flag_Zookeeper_R3_4_9.MyID, ipath) + if err := toFile(fmt.Sprintf("%d", t.req.Flag_Zookeeper_R3_4_9.MyID), ipath); err != nil { + return err + } + case dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha: + if t.req.Flag_Zookeeper_R3_5_2Alpha == nil { + return fmt.Errorf("request 'Flag_Zookeeper_R3_5_2Alpha' is nil") + } + plog.Infof("writing Zookeeper myid file %d to %s", t.req.Flag_Zookeeper_R3_5_2Alpha.MyID, ipath) + if err := toFile(fmt.Sprintf("%d", t.req.Flag_Zookeeper_R3_5_2Alpha.MyID), ipath); err != nil { + return err + } + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } + var cfg ZookeeperConfig peerIPs := strings.Split(t.req.PeerIPsString, "___") peers := []ZookeeperPeer{} for i := range peerIPs { peers = append(peers, ZookeeperPeer{MyID: i + 1, IP: peerIPs[i]}) } - cfg := ZookeeperConfig{ - TickTime: t.req.ZookeeperConfig.TickTime, - DataDir: fs.zkDataDir, - ClientPort: t.req.ZookeeperConfig.ClientPort, - InitLimit: t.req.ZookeeperConfig.InitLimit, - SyncLimit: t.req.ZookeeperConfig.SyncLimit, - MaxClientConnections: t.req.ZookeeperConfig.MaxClientConnections, - Peers: peers, - SnapCount: t.req.ZookeeperConfig.SnapCount, + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: + cfg = ZookeeperConfig{ + TickTime: t.req.Flag_Zookeeper_R3_4_9.TickTime, + DataDir: fs.zkDataDir, + ClientPort: t.req.Flag_Zookeeper_R3_4_9.ClientPort, + InitLimit: t.req.Flag_Zookeeper_R3_4_9.InitLimit, + SyncLimit: t.req.Flag_Zookeeper_R3_4_9.SyncLimit, + MaxClientConnections: t.req.Flag_Zookeeper_R3_4_9.MaxClientConnections, + Peers: peers, + SnapCount: t.req.Flag_Zookeeper_R3_4_9.SnapCount, + } + case dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha: + cfg = ZookeeperConfig{ + TickTime: t.req.Flag_Zookeeper_R3_5_2Alpha.TickTime, + DataDir: fs.zkDataDir, + ClientPort: t.req.Flag_Zookeeper_R3_5_2Alpha.ClientPort, + InitLimit: t.req.Flag_Zookeeper_R3_5_2Alpha.InitLimit, + SyncLimit: t.req.Flag_Zookeeper_R3_5_2Alpha.SyncLimit, + MaxClientConnections: t.req.Flag_Zookeeper_R3_5_2Alpha.MaxClientConnections, + Peers: peers, + SnapCount: t.req.Flag_Zookeeper_R3_5_2Alpha.SnapCount, + } + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) } tpl := template.Must(template.New("zkTemplate").Parse(zkTemplate)) buf := new(bytes.Buffer) if err := tpl.Execute(buf, cfg); err != nil { return err } - zc := buf.String() - - plog.Infof("writing Zookeeper config file %q (config %q)", fs.zkConfig, zc) - if err := toFile(zc, fs.zkConfig); err != nil { + zctxt := buf.String() + plog.Infof("writing Zookeeper config file %q (config %q)", fs.zkConfig, zctxt) + if err := toFile(zctxt, fs.zkConfig); err != nil { return err } - // CHANGE THIS FOR DIFFERENT ZOOKEEPER RELEASE - // https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html - // THIS IS ONLY VALID FOR Zookeeper r3.4.9 - flagString := `-cp zookeeper-3.4.9.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain` + args := []string{shell} + var flagString string + switch t.req.DatabaseID { + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: + flagString = JavaClassPathZookeeperr349 + // -Djute.maxbuffer=33554432 -Xms50G -Xmx50G + if t.req.Flag_Zookeeper_R3_4_9.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Djute.maxbuffer=%d", t.req.Flag_Zookeeper_R3_4_9.JavaDJuteMaxBuffer)) + } + if t.req.Flag_Zookeeper_R3_4_9.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Xms%s", t.req.Flag_Zookeeper_R3_4_9.JavaXms)) + } + if t.req.Flag_Zookeeper_R3_4_9.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Xmx%s", t.req.Flag_Zookeeper_R3_4_9.JavaXmx)) + } - args := []string{shell, "-c", fs.javaExec + " " + flagString + " " + fs.zkConfig} + case dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha: + flagString = JavaClassPathZookeeperr352alpha + // -Djute.maxbuffer=33554432 -Xms50G -Xmx50G + if t.req.Flag_Zookeeper_R3_5_2Alpha.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Djute.maxbuffer=%d", t.req.Flag_Zookeeper_R3_5_2Alpha.JavaDJuteMaxBuffer)) + } + if t.req.Flag_Zookeeper_R3_5_2Alpha.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Xms%s", t.req.Flag_Zookeeper_R3_5_2Alpha.JavaXms)) + } + if t.req.Flag_Zookeeper_R3_5_2Alpha.JavaDJuteMaxBuffer != 0 { + args = append(args, fmt.Sprintf("-Xmx%s", t.req.Flag_Zookeeper_R3_5_2Alpha.JavaXmx)) + } + + default: + return fmt.Errorf("database ID %q is not supported", t.req.DatabaseID) + } + + args = append(args, "-c", fs.javaExec+" "+flagString+" "+fs.zkConfig) cmd := exec.Command(args[0], args[1:]...) cmd.Stdout = t.databaseLogFile @@ -135,7 +214,7 @@ func startZookeeper(fs *flags, t *transporterServer) error { t.cmd = cmd t.cmdWait = make(chan struct{}) t.pid = int64(cmd.Process.Pid) - plog.Infof("started database %q (PID: %d)", cs, t.pid) + plog.Infof("started database %q (PID: %d)", cs, t.pid) return nil } diff --git a/agent/server.go b/agent/server.go index 32c7c55f..3d9b9b10 100644 --- a/agent/server.go +++ b/agent/server.go @@ -24,6 +24,7 @@ import ( "github.com/coreos/dbtester/dbtesterpb" "github.com/coreos/dbtester/pkg/fileinspect" + "github.com/gyuho/psn" "golang.org/x/net/context" ) @@ -78,7 +79,7 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques plog.Infof("received gRPC request %q with database %q (clients: %d)", req.Operation, req.DatabaseID, req.CurrentClientNumber) } - if req.Operation == dbtesterpb.Request_Start { + if req.Operation == dbtesterpb.Operation_Start { f, err := openToAppend(globalFlags.databaseLog) if err != nil { return nil, err @@ -87,7 +88,7 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques plog.Infof("agent log path: %q", globalFlags.agentLog) plog.Infof("database log path: %q", globalFlags.databaseLog) - if req.DatabaseID == dbtesterpb.Request_zetcd || req.DatabaseID == dbtesterpb.Request_cetcd { + if req.DatabaseID == dbtesterpb.DatabaseID_zetcd__beta || req.DatabaseID == dbtesterpb.DatabaseID_cetcd__beta { proxyLog := globalFlags.databaseLog + "-" + t.req.DatabaseID.String() pf, err := openToAppend(proxyLog) if err != nil { @@ -99,24 +100,24 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques plog.Infof("system metrics CSV path: %q", globalFlags.systemMetricsCSV) switch req.DatabaseID { - case dbtesterpb.Request_zookeeper: + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: plog.Infof("Zookeeper working directory: %q", globalFlags.zkWorkDir) plog.Infof("Zookeeper data directory: %q", globalFlags.zkDataDir) plog.Infof("Zookeeper configuration path: %q", globalFlags.zkConfig) - case dbtesterpb.Request_etcdv2, dbtesterpb.Request_etcdv3: + case dbtesterpb.DatabaseID_etcd__v2_3, dbtesterpb.DatabaseID_etcd__tip: plog.Infof("etcd executable binary path: %q", globalFlags.etcdExec) plog.Infof("etcd data directory: %q", globalFlags.etcdDataDir) - case dbtesterpb.Request_zetcd: + case dbtesterpb.DatabaseID_zetcd__beta: plog.Infof("zetcd executable binary path: %q", globalFlags.zetcdExec) plog.Infof("zetcd data directory: %q", globalFlags.etcdDataDir) - case dbtesterpb.Request_cetcd: + case dbtesterpb.DatabaseID_cetcd__beta: plog.Infof("cetcd executable binary path: %q", globalFlags.cetcdExec) plog.Infof("cetcd data directory: %q", globalFlags.etcdDataDir) - case dbtesterpb.Request_consul: + case dbtesterpb.DatabaseID_consul__v0_7_5: plog.Infof("Consul executable binary path: %q", globalFlags.consulExec) plog.Infof("Consul data directory: %q", globalFlags.consulDataDir) } @@ -124,21 +125,21 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques // re-use configurations for next requests t.req = *req } - if req.Operation == dbtesterpb.Request_Heartbeat { + if req.Operation == dbtesterpb.Operation_Heartbeat { t.req.CurrentClientNumber = req.CurrentClientNumber } var diskSpaceUsageBytes int64 switch req.Operation { - case dbtesterpb.Request_Start: + case dbtesterpb.Operation_Start: switch t.req.DatabaseID { - case dbtesterpb.Request_etcdv2, dbtesterpb.Request_etcdv3, dbtesterpb.Request_zetcd, dbtesterpb.Request_cetcd: + case dbtesterpb.DatabaseID_etcd__v2_3, dbtesterpb.DatabaseID_etcd__tip, dbtesterpb.DatabaseID_zetcd__beta, dbtesterpb.DatabaseID_cetcd__beta: if err := startEtcd(&globalFlags, t); err != nil { plog.Errorf("startEtcd error %v", err) return nil, err } switch t.req.DatabaseID { - case dbtesterpb.Request_zetcd: + case dbtesterpb.DatabaseID_zetcd__beta: if err := startZetcd(&globalFlags, t); err != nil { plog.Errorf("startZetcd error %v", err) return nil, err @@ -151,7 +152,7 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques } plog.Infof("exiting %q", t.proxyCmd.Path) }() - case dbtesterpb.Request_cetcd: + case dbtesterpb.DatabaseID_cetcd__beta: if err := startCetcd(&globalFlags, t); err != nil { plog.Errorf("startCetcd error %v", err) return nil, err @@ -165,12 +166,12 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques plog.Infof("exiting %q", t.proxyCmd.Path) }() } - case dbtesterpb.Request_zookeeper: + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: if err := startZookeeper(&globalFlags, t); err != nil { plog.Errorf("startZookeeper error %v", err) return nil, err } - case dbtesterpb.Request_consul: + case dbtesterpb.DatabaseID_consul__v0_7_5: if err := startConsul(&globalFlags, t); err != nil { plog.Errorf("startConsul error %v", err) return nil, err @@ -193,7 +194,7 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques return nil, err } - case dbtesterpb.Request_Stop: + case dbtesterpb.Operation_Stop: if t.cmd == nil { return nil, fmt.Errorf("nil command") } @@ -253,7 +254,7 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques } diskSpaceUsageBytes = dbs - case dbtesterpb.Request_Heartbeat: + case dbtesterpb.Operation_Heartbeat: plog.Infof("overwriting clients num %d to %q", t.req.CurrentClientNumber, t.clientNumPath) if err := toFile(fmt.Sprintf("%d", t.req.CurrentClientNumber), t.clientNumPath); err != nil { return nil, err @@ -267,19 +268,19 @@ func (t *transporterServer) Transfer(ctx context.Context, req *dbtesterpb.Reques return &dbtesterpb.Response{Success: true, DiskSpaceUsageBytes: diskSpaceUsageBytes}, nil } -func measureDatabasSize(flg flags, rdb dbtesterpb.Request_Database) (int64, error) { +func measureDatabasSize(flg flags, rdb dbtesterpb.DatabaseID) (int64, error) { switch rdb { - case dbtesterpb.Request_etcdv2: + case dbtesterpb.DatabaseID_etcd__v2_3: return fileinspect.Size(flg.etcdDataDir) - case dbtesterpb.Request_etcdv3: + case dbtesterpb.DatabaseID_etcd__tip: return fileinspect.Size(flg.etcdDataDir) - case dbtesterpb.Request_zookeeper: + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: return fileinspect.Size(flg.zkDataDir) - case dbtesterpb.Request_consul: + case dbtesterpb.DatabaseID_consul__v0_7_5: return fileinspect.Size(flg.consulDataDir) - case dbtesterpb.Request_cetcd: + case dbtesterpb.DatabaseID_cetcd__beta: return fileinspect.Size(flg.etcdDataDir) - case dbtesterpb.Request_zetcd: + case dbtesterpb.DatabaseID_zetcd__beta: return fileinspect.Size(flg.etcdDataDir) default: return 0, fmt.Errorf("uknown %q", rdb) diff --git a/agent/upload_log.go b/agent/upload_log.go index 80cdc63d..00c7da3a 100644 --- a/agent/upload_log.go +++ b/agent/upload_log.go @@ -26,8 +26,8 @@ import ( // uploadLog starts cetcd. This assumes that etcd is already started. func uploadLog(fs *flags, t *transporterServer) error { - plog.Infof("stopped collecting metrics; uploading logs to storage %q", t.req.Control.GoogleCloudProjectName) - u, err := remotestorage.NewGoogleCloudStorage([]byte(t.req.Control.GoogleCloudStorageKey), t.req.Control.GoogleCloudProjectName) + plog.Infof("stopped collecting metrics; uploading logs to storage %q", t.req.ConfigClientMachineInitial.GoogleCloudProjectName) + u, err := remotestorage.NewGoogleCloudStorage([]byte(t.req.ConfigClientMachineInitial.GoogleCloudStorageKey), t.req.ConfigClientMachineInitial.GoogleCloudProjectName) if err != nil { return err } @@ -38,12 +38,12 @@ func uploadLog(fs *flags, t *transporterServer) error { srcDatabaseLogPath := fs.databaseLog dstDatabaseLogPath := filepath.Base(fs.databaseLog) if !strings.HasPrefix(filepath.Base(fs.databaseLog), t.req.DatabaseTag) { - dstDatabaseLogPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IpIndex+1, filepath.Base(fs.databaseLog)) + dstDatabaseLogPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IPIndex+1, filepath.Base(fs.databaseLog)) } - dstDatabaseLogPath = filepath.Join(t.req.Control.GoogleCloudStorageSubDirectory, dstDatabaseLogPath) + dstDatabaseLogPath = filepath.Join(t.req.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstDatabaseLogPath) plog.Infof("uploading database log [%q -> %q]", srcDatabaseLogPath, dstDatabaseLogPath) for k := 0; k < 30; k++ { - if uerr = u.UploadFile(t.req.Control.GoogleCloudStorageBucketName, srcDatabaseLogPath, dstDatabaseLogPath); uerr != nil { + if uerr = u.UploadFile(t.req.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcDatabaseLogPath, dstDatabaseLogPath); uerr != nil { plog.Warningf("UploadFile error... sleep and retry... (%v)", uerr) time.Sleep(2 * time.Second) continue @@ -57,17 +57,17 @@ func uploadLog(fs *flags, t *transporterServer) error { } { - if t.req.DatabaseID == dbtesterpb.Request_zetcd || t.req.DatabaseID == dbtesterpb.Request_cetcd { + if t.req.DatabaseID == dbtesterpb.DatabaseID_zetcd__beta || t.req.DatabaseID == dbtesterpb.DatabaseID_cetcd__beta { dpath := fs.databaseLog + "-" + t.req.DatabaseID.String() srcDatabaseLogPath2 := dpath dstDatabaseLogPath2 := filepath.Base(dpath) if !strings.HasPrefix(filepath.Base(dpath), t.req.DatabaseTag) { - dstDatabaseLogPath2 = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IpIndex+1, filepath.Base(dpath)) + dstDatabaseLogPath2 = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IPIndex+1, filepath.Base(dpath)) } - dstDatabaseLogPath2 = filepath.Join(t.req.Control.GoogleCloudStorageSubDirectory, dstDatabaseLogPath2) + dstDatabaseLogPath2 = filepath.Join(t.req.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstDatabaseLogPath2) plog.Infof("uploading proxy-database log [%q -> %q]", srcDatabaseLogPath2, dstDatabaseLogPath2) for k := 0; k < 30; k++ { - if uerr = u.UploadFile(t.req.Control.GoogleCloudStorageBucketName, srcDatabaseLogPath2, dstDatabaseLogPath2); uerr != nil { + if uerr = u.UploadFile(t.req.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcDatabaseLogPath2, dstDatabaseLogPath2); uerr != nil { plog.Warningf("UploadFile error... sleep and retry... (%v)", uerr) time.Sleep(2 * time.Second) continue @@ -85,12 +85,12 @@ func uploadLog(fs *flags, t *transporterServer) error { srcSysMetricsDataPath := fs.systemMetricsCSV dstSysMetricsDataPath := filepath.Base(fs.systemMetricsCSV) if !strings.HasPrefix(filepath.Base(fs.systemMetricsCSV), t.req.DatabaseTag) { - dstSysMetricsDataPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IpIndex+1, filepath.Base(fs.systemMetricsCSV)) + dstSysMetricsDataPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IPIndex+1, filepath.Base(fs.systemMetricsCSV)) } - dstSysMetricsDataPath = filepath.Join(t.req.Control.GoogleCloudStorageSubDirectory, dstSysMetricsDataPath) + dstSysMetricsDataPath = filepath.Join(t.req.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstSysMetricsDataPath) plog.Infof("uploading system metrics data [%q -> %q]", srcSysMetricsDataPath, dstSysMetricsDataPath) for k := 0; k < 30; k++ { - if uerr := u.UploadFile(t.req.Control.GoogleCloudStorageBucketName, srcSysMetricsDataPath, dstSysMetricsDataPath); uerr != nil { + if uerr := u.UploadFile(t.req.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcSysMetricsDataPath, dstSysMetricsDataPath); uerr != nil { plog.Warningf("upload error... sleep and retry... (%v)", uerr) time.Sleep(2 * time.Second) continue @@ -107,12 +107,12 @@ func uploadLog(fs *flags, t *transporterServer) error { srcSysMetricsInterpolatedDataPath := fs.systemMetricsCSVInterpolated dstSysMetricsInterpolatedDataPath := filepath.Base(fs.systemMetricsCSVInterpolated) if !strings.HasPrefix(filepath.Base(fs.systemMetricsCSVInterpolated), t.req.DatabaseTag) { - dstSysMetricsInterpolatedDataPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IpIndex+1, filepath.Base(fs.systemMetricsCSVInterpolated)) + dstSysMetricsInterpolatedDataPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IPIndex+1, filepath.Base(fs.systemMetricsCSVInterpolated)) } - dstSysMetricsInterpolatedDataPath = filepath.Join(t.req.Control.GoogleCloudStorageSubDirectory, dstSysMetricsInterpolatedDataPath) + dstSysMetricsInterpolatedDataPath = filepath.Join(t.req.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstSysMetricsInterpolatedDataPath) plog.Infof("uploading system metrics interpolated data [%q -> %q]", srcSysMetricsInterpolatedDataPath, dstSysMetricsInterpolatedDataPath) for k := 0; k < 30; k++ { - if uerr := u.UploadFile(t.req.Control.GoogleCloudStorageBucketName, srcSysMetricsInterpolatedDataPath, dstSysMetricsInterpolatedDataPath); uerr != nil { + if uerr := u.UploadFile(t.req.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcSysMetricsInterpolatedDataPath, dstSysMetricsInterpolatedDataPath); uerr != nil { plog.Warningf("upload error... sleep and retry... (%v)", uerr) time.Sleep(2 * time.Second) continue @@ -129,12 +129,12 @@ func uploadLog(fs *flags, t *transporterServer) error { srcAgentLogPath := fs.agentLog dstAgentLogPath := filepath.Base(fs.agentLog) if !strings.HasPrefix(filepath.Base(fs.agentLog), t.req.DatabaseTag) { - dstAgentLogPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IpIndex+1, filepath.Base(fs.agentLog)) + dstAgentLogPath = fmt.Sprintf("%s-%d-%s", t.req.DatabaseTag, t.req.IPIndex+1, filepath.Base(fs.agentLog)) } - dstAgentLogPath = filepath.Join(t.req.Control.GoogleCloudStorageSubDirectory, dstAgentLogPath) + dstAgentLogPath = filepath.Join(t.req.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstAgentLogPath) plog.Infof("uploading agent logs [%q -> %q]", srcAgentLogPath, dstAgentLogPath) for k := 0; k < 30; k++ { - if uerr := u.UploadFile(t.req.Control.GoogleCloudStorageBucketName, srcAgentLogPath, dstAgentLogPath); uerr != nil { + if uerr := u.UploadFile(t.req.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcAgentLogPath, dstAgentLogPath); uerr != nil { plog.Warningf("UploadFile error... sleep and retry... (%v)", uerr) time.Sleep(2 * time.Second) continue diff --git a/analyze/05_plot.go b/analyze/05_plot.go index 6b3ed72b..54ac71a2 100644 --- a/analyze/05_plot.go +++ b/analyze/05_plot.go @@ -16,9 +16,9 @@ package analyze import ( "fmt" - "image/color" - "github.com/coreos/dbtester" + "github.com/coreos/dbtester/dbtesterpb" + "github.com/gonum/plot" "github.com/gonum/plot/plotter" "github.com/gonum/plot/plotutil" @@ -49,7 +49,7 @@ type triplet struct { maxCol dataframe.Column } -func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error { +func (all *allAggregatedData) draw(cfg dbtesterpb.ConfigAnalyzeMachinePlot, pairs ...pair) error { // frame now contains // AVG-LATENCY-MS-etcd-v3.1-go1.7.4, AVG-LATENCY-MS-zookeeper-r3.4.9-java8, AVG-LATENCY-MS-consul-v0.7.2-go1.7.4 plt, err := plot.New() @@ -72,7 +72,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error { if err != nil { return err } - l.Color = getRGB(all.headerToDatabaseID[p.y.Header()], i) + l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[p.y.Header()], i) l.Dashes = plotutil.Dashes(i) ps = append(ps, l) @@ -88,7 +88,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error { return nil } -func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error { +func (all *allAggregatedData) drawXY(cfg dbtesterpb.ConfigAnalyzeMachinePlot, pairs ...pair) error { // frame now contains // KEYS-DB-TAG-X, AVG-LATENCY-MS-DB-TAG-Y, ... plt, err := plot.New() @@ -111,7 +111,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error { if err != nil { return err } - l.Color = getRGB(all.headerToDatabaseID[p.y.Header()], i) + l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[p.y.Header()], i) l.Dashes = plotutil.Dashes(i) ps = append(ps, l) @@ -127,7 +127,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error { return nil } -func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets ...triplet) error { +func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtesterpb.ConfigAnalyzeMachinePlot, triplets ...triplet) error { // frame now contains // KEYS-DB-TAG-X, MIN-LATENCY-MS-DB-TAG-Y, AVG-LATENCY-MS-DB-TAG-Y, MAX-LATENCY-MS-DB-TAG-Y, ... plt, err := plot.New() @@ -150,7 +150,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets if err != nil { return err } - l.Color = getRGBII(all.headerToDatabaseID[triplet.avgCol.Header()], i) + l.Color = dbtesterpb.GetRGBII(all.headerToDatabaseID[triplet.avgCol.Header()], i) l.Dashes = plotutil.Dashes(i) ps = append(ps, l) plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MIN", l) @@ -164,7 +164,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets if err != nil { return err } - l.Color = getRGB(all.headerToDatabaseID[triplet.avgCol.Header()], i) + l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[triplet.avgCol.Header()], i) l.Dashes = plotutil.Dashes(i) ps = append(ps, l) plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()], l) @@ -178,7 +178,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets if err != nil { return err } - l.Color = getRGBIII(all.headerToDatabaseID[triplet.avgCol.Header()], i) + l.Color = dbtesterpb.GetRGBIII(all.headerToDatabaseID[triplet.avgCol.Header()], i) l.Dashes = plotutil.Dashes(i) ps = append(ps, l) plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MAX", l) @@ -244,63 +244,3 @@ func pointsXY(colX, colY dataframe.Column) (plotter.XYs, error) { } return pts, nil } - -func getRGB(databaseID string, i int) color.Color { - switch databaseID { - case "etcdv2": - return color.RGBA{218, 97, 229, 255} // purple - case "etcdv3": - return color.RGBA{24, 90, 169, 255} // blue - case "etcdtip": - return color.RGBA{0, 229, 255, 255} // cyan - case "zookeeper": - return color.RGBA{38, 169, 24, 255} // green - case "consul": - return color.RGBA{198, 53, 53, 255} // red - case "zetcd": - return color.RGBA{251, 206, 0, 255} // yellow - case "cetcd": - return color.RGBA{205, 220, 57, 255} // lime - } - return plotutil.Color(i) -} - -func getRGBII(databaseID string, i int) color.Color { - switch databaseID { - case "etcdv2": - return color.RGBA{229, 212, 231, 255} // light-purple - case "etcdv3": - return color.RGBA{129, 212, 247, 255} // light-blue - case "etcdtip": - return color.RGBA{132, 255, 255, 255} // light-cyan - case "zookeeper": - return color.RGBA{129, 247, 152, 255} // light-green - case "consul": - return color.RGBA{247, 156, 156, 255} // light-red - case "zetcd": - return color.RGBA{245, 247, 166, 255} // light-yellow - case "cetcd": - return color.RGBA{238, 255, 65, 255} // light-lime - } - return plotutil.Color(i) -} - -func getRGBIII(databaseID string, i int) color.Color { - switch databaseID { - case "etcdv2": - return color.RGBA{165, 8, 180, 255} // deep-purple - case "etcdv3": - return color.RGBA{37, 29, 191, 255} // deep-blue - case "etcdtip": - return color.RGBA{0, 96, 100, 255} // deep-cyan - case "zookeeper": - return color.RGBA{7, 64, 35, 255} // deep-green - case "consul": - return color.RGBA{212, 8, 46, 255} // deep-red - case "zetcd": - return color.RGBA{229, 255, 0, 255} // deep-yellow - case "cetcd": - return color.RGBA{205, 220, 57, 255} // deep-lime - } - return plotutil.Color(i) -} diff --git a/analyze/command.go b/analyze/command.go index c0e4aa38..f1f447d8 100644 --- a/analyze/command.go +++ b/analyze/command.go @@ -25,6 +25,7 @@ import ( "strings" "github.com/coreos/dbtester" + "github.com/coreos/dbtester/dbtesterpb" humanize "github.com/dustin/go-humanize" "github.com/gyuho/dataframe" "github.com/olekukonko/tablewriter" @@ -64,14 +65,14 @@ func do(configPath string) error { all := &allAggregatedData{ title: cfg.TestTitle, - data: make([]*analyzeData, 0, len(cfg.DatabaseIDToTestData)), + data: make([]*analyzeData, 0, len(cfg.DatabaseIDToConfigAnalyzeMachineInitial)), headerToDatabaseID: make(map[string]string), headerToDatabaseDescription: make(map[string]string), allDatabaseIDList: cfg.AllDatabaseIDList, } for _, databaseID := range cfg.AllDatabaseIDList { - testgroup := cfg.DatabaseIDToTestGroup[databaseID] - testdata := cfg.DatabaseIDToTestData[databaseID] + testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] plog.Printf("reading system metrics data for %s", databaseID) ad, err := readSystemMetricsAll(testdata.ServerSystemMetricsInterpolatedPathList...) @@ -88,7 +89,7 @@ func do(configPath string) error { if err = ad.importBenchMetrics(testdata.ClientLatencyThroughputTimeseriesPath); err != nil { return err } - if err = ad.aggregateAll(testdata.ServerMemoryByKeyNumberPath, testdata.ServerReadBytesDeltaByKeyNumberPath, testdata.ServerWriteBytesDeltaByKeyNumberPath, testgroup.RequestNumber); err != nil { + if err = ad.aggregateAll(testdata.ServerMemoryByKeyNumberPath, testdata.ServerReadBytesDeltaByKeyNumberPath, testdata.ServerWriteBytesDeltaByKeyNumberPath, testgroup.ConfigClientMachineBenchmarkOptions.RequestNumber); err != nil { return err } if err = ad.save(); err != nil { @@ -114,7 +115,7 @@ func do(configPath string) error { // per database for _, col := range ad.aggregated.Columns() { databaseID := all.headerToDatabaseID[col.Header()] - row00Header = append(row00Header, cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag) + row00Header = append(row00Header, cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag) break } } @@ -272,14 +273,14 @@ func do(configPath string) error { databaseIDToErrs := make(map[string][]string) for i, databaseID := range cfg.AllDatabaseIDList { - testgroup := cfg.DatabaseIDToTestGroup[databaseID] - testdata := cfg.DatabaseIDToTestData[databaseID] + testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] tag := testdata.DatabaseTag if tag != row00Header[i+1] { return fmt.Errorf("analyze config has different order; expected %q, got %q", row00Header[i+1], tag) } - row02TotalRequestNumber = append(row02TotalRequestNumber, humanize.Comma(testgroup.RequestNumber)) + row02TotalRequestNumber = append(row02TotalRequestNumber, humanize.Comma(testgroup.ConfigClientMachineBenchmarkOptions.RequestNumber)) { fr, err := dataframe.NewFromCSV(nil, testdata.ClientSystemMetricsInterpolatedPath) @@ -515,7 +516,7 @@ func do(configPath string) error { } } - plog.Printf("saving summary data to %q", cfg.Analyze.AllAggregatedOutputPathCSV) + plog.Printf("saving summary data to %q", cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathCSV) aggRowsForSummaryCSV := [][]string{ row00Header, row01TotalSeconds, @@ -559,7 +560,7 @@ func do(configPath string) error { row29SectorsWrittenDeltaSum, row30AvgDiskSpaceUsage, } - file, err := openToOverwrite(cfg.Analyze.AllAggregatedOutputPathCSV) + file, err := openToOverwrite(cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathCSV) if err != nil { return err } @@ -573,7 +574,7 @@ func do(configPath string) error { return err } - plog.Printf("saving summary data to %q", cfg.Analyze.AllAggregatedOutputPathTXT) + plog.Printf("saving summary data to %q", cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathTXT) aggRowsForSummaryTXT := [][]string{ row00Header, row01TotalSeconds, @@ -634,7 +635,7 @@ func do(configPath string) error { if errs != "" { stxt += "\n" + "\n" + errs } - if err := toFile(stxt, changeExtToTxt(cfg.Analyze.AllAggregatedOutputPathTXT)); err != nil { + if err := toFile(stxt, changeExtToTxt(cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathTXT)); err != nil { return err } @@ -642,7 +643,7 @@ func do(configPath string) error { plog.Info("combining all latency data by keys") allLatencyFrame := dataframe.New() for _, databaseID := range cfg.AllDatabaseIDList { - testdata := cfg.DatabaseIDToTestData[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] fr, err := dataframe.NewFromCSV(nil, testdata.ClientLatencyByKeyNumberPath) if err != nil { @@ -688,7 +689,7 @@ func do(configPath string) error { plog.Info("combining all server memory usage by keys") allMemoryFrame := dataframe.New() for _, databaseID := range cfg.AllDatabaseIDList { - testdata := cfg.DatabaseIDToTestData[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] fr, err := dataframe.NewFromCSV(nil, testdata.ServerMemoryByKeyNumberPath) if err != nil { @@ -734,7 +735,7 @@ func do(configPath string) error { plog.Info("combining all server read bytes delta by keys") allReadBytesDeltaFrame := dataframe.New() for _, databaseID := range cfg.AllDatabaseIDList { - testdata := cfg.DatabaseIDToTestData[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] fr, err := dataframe.NewFromCSV(nil, testdata.ServerReadBytesDeltaByKeyNumberPath) if err != nil { @@ -771,7 +772,7 @@ func do(configPath string) error { plog.Info("combining all server write bytes delta by keys") allWriteBytesDeltaFrame := dataframe.New() for _, databaseID := range cfg.AllDatabaseIDList { - testdata := cfg.DatabaseIDToTestData[databaseID] + testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] fr, err := dataframe.NewFromCSV(nil, testdata.ServerWriteBytesDeltaByKeyNumberPath) if err != nil { @@ -806,14 +807,14 @@ func do(configPath string) error { } { - allLatencyFrameCfg := dbtester.Plot{ + allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-LATENCY-MS", XAxis: "Cumulative Number of Keys", YAxis: "Latency(millisecond) by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.svg") - allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png") + allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.svg") + allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png") plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList) var pairs []pair allCols := allLatencyFrame.Columns() @@ -835,21 +836,21 @@ func do(configPath string) error { return err } } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.csv") if err := newCSV.CSV(csvPath); err != nil { return err } } { // with error points - allLatencyFrameCfg := dbtester.Plot{ + allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-LATENCY-MS", XAxis: "Cumulative Number of Keys", YAxis: "Latency(millisecond) by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg") - allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png") + allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg") + allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png") plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList) var triplets []triplet allCols := allLatencyFrame.Columns() @@ -879,20 +880,20 @@ func do(configPath string) error { return err } } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.csv") if err := newCSV.CSV(csvPath); err != nil { return err } } { - allMemoryFrameCfg := dbtester.Plot{ + allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-VMRSS-MB", XAxis: "Cumulative Number of Keys", YAxis: "Memory(MB) by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.svg") - allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png") + allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.svg") + allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png") plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList) var pairs []pair allCols := allMemoryFrame.Columns() @@ -914,21 +915,21 @@ func do(configPath string) error { return err } } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.csv") if err := newCSV.CSV(csvPath); err != nil { return err } } { // with error points - allMemoryFrameCfg := dbtester.Plot{ + allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-VMRSS-MB", XAxis: "Cumulative Number of Keys", YAxis: "Memory(MB) by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg") - allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png") + allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg") + allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png") plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList) var triplets []triplet allCols := allMemoryFrame.Columns() @@ -958,20 +959,20 @@ func do(configPath string) error { return err } } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.csv") if err := newCSV.CSV(csvPath); err != nil { return err } } { - allReadBytesDeltaFrameCfg := dbtester.Plot{ + allReadBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-READ-BYTES-NUM-DELTA", XAxis: "Cumulative Number of Keys", YAxis: "Average Read Bytes Delta by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allReadBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.svg") - allReadBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png") + allReadBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.svg") + allReadBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png") plog.Printf("plotting %v", allReadBytesDeltaFrameCfg.OutputPathList) var pairs []pair allCols := allReadBytesDeltaFrame.Columns() @@ -984,20 +985,20 @@ func do(configPath string) error { if err = all.drawXY(allReadBytesDeltaFrameCfg, pairs...); err != nil { return err } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.csv") if err := allReadBytesDeltaFrame.CSV(csvPath); err != nil { return err } } { - allWriteBytesDeltaFrameCfg := dbtester.Plot{ + allWriteBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{ Column: "AVG-WRITE-BYTES-NUM-DELTA", XAxis: "Cumulative Number of Keys", YAxis: "Average Write Bytes Delta by Keys", - OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)), + OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)), } - allWriteBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.svg") - allWriteBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png") + allWriteBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.svg") + allWriteBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png") plog.Printf("plotting %v", allWriteBytesDeltaFrameCfg.OutputPathList) var pairs []pair allCols := allWriteBytesDeltaFrame.Columns() @@ -1010,21 +1011,21 @@ func do(configPath string) error { if err = all.drawXY(allWriteBytesDeltaFrameCfg, pairs...); err != nil { return err } - csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.csv") + csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.csv") if err := allWriteBytesDeltaFrame.CSV(csvPath); err != nil { return err } } plog.Println("combining data for plotting") - for _, plotConfig := range cfg.PlotList { + for _, plotConfig := range cfg.AnalyzePlotList { plog.Printf("plotting %q", plotConfig.Column) var clientNumColumns []dataframe.Column var pairs []pair var dataColumns []dataframe.Column for i, ad := range all.data { databaseID := all.allDatabaseIDList[i] - tag := cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag + tag := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag avgCol, err := ad.aggregated.Column("CONTROL-CLIENT-NUM") if err != nil { @@ -1076,7 +1077,7 @@ func do(configPath string) error { return err } - if len(cfg.DatabaseIDToTestGroup[cfg.AllDatabaseIDList[0]].BenchmarkOptions.ConnectionClientNumbers) > 0 { + if len(cfg.DatabaseIDToConfigClientMachineAgentControl[cfg.AllDatabaseIDList[0]].ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers) > 0 { plog.Printf("aggregating data for %q of all database (by client number)", plotConfig.Column) nf3 := dataframe.New() var firstKeys []int diff --git a/broadcast_request.go b/broadcast_request.go index 42e225c6..d5cf5325 100644 --- a/broadcast_request.go +++ b/broadcast_request.go @@ -24,8 +24,8 @@ import ( ) // BroadcaseRequest sends request to all endpoints. -func (cfg *Config) BroadcaseRequest(databaseID string, op dbtesterpb.Request_Operation) (map[int]dbtesterpb.Response, error) { - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] +func (cfg *Config) BroadcaseRequest(databaseID string, op dbtesterpb.Operation) (map[int]dbtesterpb.Response, error) { + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { return nil, fmt.Errorf("database id %q does not exist", databaseID) } diff --git a/config_cetcd.go b/config_cetcd.go deleted file mode 100644 index 8bdcd8bf..00000000 --- a/config_cetcd.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Cetcd is cetcd-specific flags -// (https://github.com/coreos/cetcd). -type Cetcd struct { - // no options needed yet -} diff --git a/config_consul.go b/config_consul.go deleted file mode 100644 index fb58fec4..00000000 --- a/config_consul.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Consul is Consul-specific flags -// (https://github.com/hashicorp/consul). -type Consul struct { - // no options needed yet -} diff --git a/config_dbtester.go b/config_dbtester.go index aa27a6e1..fd89a953 100644 --- a/config_dbtester.go +++ b/config_dbtester.go @@ -21,148 +21,35 @@ import ( "strings" "github.com/coreos/dbtester/dbtesterpb" + "gopkg.in/yaml.v2" ) +// MakeTag converts database description to database tag. +func MakeTag(desc string) string { + s := strings.ToLower(desc) + s = strings.Replace(s, "go ", "go", -1) + s = strings.Replace(s, "java ", "java", -1) + s = strings.Replace(s, "(", "", -1) + s = strings.Replace(s, ")", "", -1) + return strings.Replace(s, " ", "-", -1) +} + // Config configures dbtester control clients. type Config struct { TestTitle string `yaml:"test_title"` TestDescription string `yaml:"test_description"` - Control `yaml:"control"` - AllDatabaseIDList []string `yaml:"all_database_id_list"` - DatabaseIDToTestGroup map[string]TestGroup `yaml:"datatbase_id_to_test_group"` - DatabaseIDToTestData map[string]TestData `yaml:"datatbase_id_to_test_data"` + dbtesterpb.ConfigClientMachineInitial `yaml:"config_client_machine_initial"` - Analyze `yaml:"analyze"` + AllDatabaseIDList []string `yaml:"all_database_id_list"` + DatabaseIDToConfigClientMachineAgentControl map[string]dbtesterpb.ConfigClientMachineAgentControl `yaml:"datatbase_id_to_config_client_machine_agent_control"` + DatabaseIDToConfigAnalyzeMachineInitial map[string]dbtesterpb.ConfigAnalyzeMachineInitial `yaml:"datatbase_id_to_config_analyze_machine_initial"` - PlotPathPrefix string `yaml:"plot_path_prefix"` - PlotList []Plot `yaml:"plot_list"` - README `yaml:"readme"` -} - -// Control represents common control options on client machine. -type Control struct { - PathPrefix string `yaml:"path_prefix"` - LogPath string `yaml:"log_path"` - ClientSystemMetricsPath string `yaml:"client_system_metrics_path"` - ClientSystemMetricsInterpolatedPath string `yaml:"client_system_metrics_interpolated_path"` - ClientLatencyThroughputTimeseriesPath string `yaml:"client_latency_throughput_timeseries_path"` - ClientLatencyDistributionAllPath string `yaml:"client_latency_distribution_all_path"` - ClientLatencyDistributionPercentilePath string `yaml:"client_latency_distribution_percentile_path"` - ClientLatencyDistributionSummaryPath string `yaml:"client_latency_distribution_summary_path"` - ClientLatencyByKeyNumberPath string `yaml:"client_latency_by_key_number_path"` - ServerDiskSpaceUsageSummaryPath string `yaml:"server_disk_space_usage_summary_path"` - - GoogleCloudProjectName string `yaml:"google_cloud_project_name"` - GoogleCloudStorageKeyPath string `yaml:"google_cloud_storage_key_path"` - GoogleCloudStorageKey string - GoogleCloudStorageBucketName string `yaml:"google_cloud_storage_bucket_name"` - GoogleCloudStorageSubDirectory string `yaml:"google_cloud_storage_sub_directory"` -} - -// TestGroup specifies database test group. -type TestGroup struct { - DatabaseID string - DatabaseDescription string `yaml:"database_description"` - DatabaseTag string - - PeerIPs []string `yaml:"peer_ips"` - PeerIPsString string - - DatabasePortToConnect int `yaml:"database_port_to_connect"` - DatabaseEndpoints []string - - AgentPortToConnect int `yaml:"agent_port_to_connect"` - AgentEndpoints []string - - // database-specific flags to start - Etcdv2 `yaml:"etcdv2"` - Etcdv3 `yaml:"etcdv3"` - Zookeeper `yaml:"zookeeper"` - Consul `yaml:"consul"` - Zetcd `yaml:"zetcd"` - Cetcd `yaml:"cetcd"` - - // benchmark options - BenchmarkOptions `yaml:"benchmark_options"` - BenchmarkSteps `yaml:"benchmark_steps"` -} - -// BenchmarkOptions specifies the benchmark options. -type BenchmarkOptions struct { - Type string `yaml:"type"` - - RequestNumber int64 `yaml:"request_number"` - ConnectionNumber int64 `yaml:"connection_number"` - ClientNumber int64 `yaml:"client_number"` - ConnectionClientNumbers []int64 `yaml:"connection_client_numbers"` - RateLimitRequestsPerSecond int64 `yaml:"rate_limit_requests_per_second"` - - // for writes, reads - SameKey bool `yaml:"same_key"` - KeySizeBytes int64 `yaml:"key_size_bytes"` - ValueSizeBytes int64 `yaml:"value_size_bytes"` - - // for reads - StaleRead bool `yaml:"stale_read"` -} - -// BenchmarkSteps specifies the benchmark workflow. -type BenchmarkSteps struct { - Step1StartDatabase bool `yaml:"step1_start_database"` - Step2StressDatabase bool `yaml:"step2_stress_database"` - Step3StopDatabase bool `yaml:"step3_stop_database"` - Step4UploadLogs bool `yaml:"step4_upload_logs"` -} - -// TestData defines raw data to import. -type TestData struct { - DatabaseID string - DatabaseTag string - DatabaseDescription string - - PathPrefix string `yaml:"path_prefix"` - ClientSystemMetricsInterpolatedPath string `yaml:"client_system_metrics_interpolated_path"` - ClientLatencyThroughputTimeseriesPath string `yaml:"client_latency_throughput_timeseries_path"` - ClientLatencyDistributionAllPath string `yaml:"client_latency_distribution_all_path"` - ClientLatencyDistributionPercentilePath string `yaml:"client_latency_distribution_percentile_path"` - ClientLatencyDistributionSummaryPath string `yaml:"client_latency_distribution_summary_path"` - ClientLatencyByKeyNumberPath string `yaml:"client_latency_by_key_number_path"` - ServerDiskSpaceUsageSummaryPath string `yaml:"server_disk_space_usage_summary_path"` - ServerMemoryByKeyNumberPath string `yaml:"server_memory_by_key_number_path"` - ServerReadBytesDeltaByKeyNumberPath string `yaml:"server_read_bytes_delta_by_key_number_path"` - ServerWriteBytesDeltaByKeyNumberPath string `yaml:"server_write_bytes_delta_by_key_number_path"` - ServerSystemMetricsInterpolatedPathList []string `yaml:"server_system_metrics_interpolated_path_list"` - AllAggregatedOutputPath string `yaml:"all_aggregated_output_path"` -} - -// Analyze defines analyze config. -type Analyze struct { - AllAggregatedOutputPathCSV string `yaml:"all_aggregated_output_path_csv"` - AllAggregatedOutputPathTXT string `yaml:"all_aggregated_output_path_txt"` -} - -// Plot defines plot configuration. -type Plot struct { - Column string `yaml:"column"` - XAxis string `yaml:"x_axis"` - YAxis string `yaml:"y_axis"` - OutputPathCSV string `yaml:"output_path_csv"` - OutputPathList []string `yaml:"output_path_list"` -} - -// README defines how to write README. -type README struct { - OutputPath string `yaml:"output_path"` - Images []Image `yaml:"images"` -} - -// Image defines image data. -type Image struct { - Title string `yaml:"title"` - Path string `yaml:"path"` - Type string `yaml:"type"` + dbtesterpb.ConfigAnalyzeMachineAllAggregatedOutput `yaml:"analyze_all_aggregated_output"` + AnalyzePlotPathPrefix string `yaml:"analyze_plot_path_prefix"` + AnalyzePlotList []dbtesterpb.ConfigAnalyzeMachinePlot `yaml:"analyze_plot_list"` + dbtesterpb.ConfigAnalyzeMachineREADME `yaml:"analyze_readme"` } // ReadConfig reads control configuration file. @@ -176,19 +63,29 @@ func ReadConfig(fpath string, analyze bool) (*Config, error) { return nil, err } - if cfg.Control.PathPrefix != "" { - cfg.Control.LogPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.LogPath) - cfg.Control.ClientSystemMetricsPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientSystemMetricsPath) - cfg.Control.ClientSystemMetricsInterpolatedPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientSystemMetricsInterpolatedPath) - cfg.Control.ClientLatencyThroughputTimeseriesPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientLatencyThroughputTimeseriesPath) - cfg.Control.ClientLatencyDistributionAllPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientLatencyDistributionAllPath) - cfg.Control.ClientLatencyDistributionPercentilePath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientLatencyDistributionPercentilePath) - cfg.Control.ClientLatencyDistributionSummaryPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientLatencyDistributionSummaryPath) - cfg.Control.ClientLatencyByKeyNumberPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ClientLatencyByKeyNumberPath) - cfg.Control.ServerDiskSpaceUsageSummaryPath = filepath.Join(cfg.Control.PathPrefix, cfg.Control.ServerDiskSpaceUsageSummaryPath) + for _, id := range cfg.AllDatabaseIDList { + if !dbtesterpb.IsValidDatabaseID(id) { + return nil, fmt.Errorf("databaseID %q is unknown", id) + } } - for databaseID, group := range cfg.DatabaseIDToTestGroup { + if cfg.ConfigClientMachineInitial.PathPrefix != "" { + cfg.ConfigClientMachineInitial.LogPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.LogPath) + cfg.ConfigClientMachineInitial.ClientSystemMetricsPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientSystemMetricsPath) + cfg.ConfigClientMachineInitial.ClientSystemMetricsInterpolatedPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientSystemMetricsInterpolatedPath) + cfg.ConfigClientMachineInitial.ClientLatencyThroughputTimeseriesPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientLatencyThroughputTimeseriesPath) + cfg.ConfigClientMachineInitial.ClientLatencyDistributionAllPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientLatencyDistributionAllPath) + cfg.ConfigClientMachineInitial.ClientLatencyDistributionPercentilePath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientLatencyDistributionPercentilePath) + cfg.ConfigClientMachineInitial.ClientLatencyDistributionSummaryPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientLatencyDistributionSummaryPath) + cfg.ConfigClientMachineInitial.ClientLatencyByKeyNumberPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ClientLatencyByKeyNumberPath) + cfg.ConfigClientMachineInitial.ServerDiskSpaceUsageSummaryPath = filepath.Join(cfg.ConfigClientMachineInitial.PathPrefix, cfg.ConfigClientMachineInitial.ServerDiskSpaceUsageSummaryPath) + } + + for databaseID, group := range cfg.DatabaseIDToConfigClientMachineAgentControl { + if !dbtesterpb.IsValidDatabaseID(databaseID) { + return nil, fmt.Errorf("databaseID %q is unknown", databaseID) + } + group.DatabaseID = databaseID group.DatabaseTag = MakeTag(group.DatabaseDescription) group.PeerIPsString = strings.Join(group.PeerIPs, "___") @@ -198,159 +95,322 @@ func ReadConfig(fpath string, analyze bool) (*Config, error) { group.DatabaseEndpoints[j] = fmt.Sprintf("%s:%d", group.PeerIPs[j], group.DatabasePortToConnect) group.AgentEndpoints[j] = fmt.Sprintf("%s:%d", group.PeerIPs[j], group.AgentPortToConnect) } - cfg.DatabaseIDToTestGroup[databaseID] = group + cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] = group } - for databaseID, testdata := range cfg.DatabaseIDToTestData { - testdata.PathPrefix = strings.TrimSpace(testdata.PathPrefix) - testdata.DatabaseID = databaseID - testdata.DatabaseTag = cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag - testdata.DatabaseDescription = cfg.DatabaseIDToTestGroup[databaseID].DatabaseDescription + for databaseID, amc := range cfg.DatabaseIDToConfigAnalyzeMachineInitial { + amc.PathPrefix = strings.TrimSpace(amc.PathPrefix) + amc.DatabaseID = databaseID + amc.DatabaseTag = cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag + amc.DatabaseDescription = cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseDescription - if testdata.PathPrefix != "" { - testdata.ClientSystemMetricsInterpolatedPath = testdata.PathPrefix + "-" + testdata.ClientSystemMetricsInterpolatedPath - testdata.ClientLatencyThroughputTimeseriesPath = testdata.PathPrefix + "-" + testdata.ClientLatencyThroughputTimeseriesPath - testdata.ClientLatencyDistributionAllPath = testdata.PathPrefix + "-" + testdata.ClientLatencyDistributionAllPath - testdata.ClientLatencyDistributionPercentilePath = testdata.PathPrefix + "-" + testdata.ClientLatencyDistributionPercentilePath - testdata.ClientLatencyDistributionSummaryPath = testdata.PathPrefix + "-" + testdata.ClientLatencyDistributionSummaryPath - testdata.ClientLatencyByKeyNumberPath = testdata.PathPrefix + "-" + testdata.ClientLatencyByKeyNumberPath - testdata.ServerDiskSpaceUsageSummaryPath = testdata.PathPrefix + "-" + testdata.ServerDiskSpaceUsageSummaryPath - testdata.ServerMemoryByKeyNumberPath = testdata.PathPrefix + "-" + testdata.ServerMemoryByKeyNumberPath - testdata.ServerReadBytesDeltaByKeyNumberPath = testdata.PathPrefix + "-" + testdata.ServerReadBytesDeltaByKeyNumberPath - testdata.ServerWriteBytesDeltaByKeyNumberPath = testdata.PathPrefix + "-" + testdata.ServerWriteBytesDeltaByKeyNumberPath - for i := range testdata.ServerSystemMetricsInterpolatedPathList { - testdata.ServerSystemMetricsInterpolatedPathList[i] = testdata.PathPrefix + "-" + testdata.ServerSystemMetricsInterpolatedPathList[i] + if amc.PathPrefix != "" { + amc.ClientSystemMetricsInterpolatedPath = amc.PathPrefix + "-" + amc.ClientSystemMetricsInterpolatedPath + amc.ClientLatencyThroughputTimeseriesPath = amc.PathPrefix + "-" + amc.ClientLatencyThroughputTimeseriesPath + amc.ClientLatencyDistributionAllPath = amc.PathPrefix + "-" + amc.ClientLatencyDistributionAllPath + amc.ClientLatencyDistributionPercentilePath = amc.PathPrefix + "-" + amc.ClientLatencyDistributionPercentilePath + amc.ClientLatencyDistributionSummaryPath = amc.PathPrefix + "-" + amc.ClientLatencyDistributionSummaryPath + amc.ClientLatencyByKeyNumberPath = amc.PathPrefix + "-" + amc.ClientLatencyByKeyNumberPath + amc.ServerDiskSpaceUsageSummaryPath = amc.PathPrefix + "-" + amc.ServerDiskSpaceUsageSummaryPath + amc.ServerMemoryByKeyNumberPath = amc.PathPrefix + "-" + amc.ServerMemoryByKeyNumberPath + amc.ServerReadBytesDeltaByKeyNumberPath = amc.PathPrefix + "-" + amc.ServerReadBytesDeltaByKeyNumberPath + amc.ServerWriteBytesDeltaByKeyNumberPath = amc.PathPrefix + "-" + amc.ServerWriteBytesDeltaByKeyNumberPath + for i := range amc.ServerSystemMetricsInterpolatedPathList { + amc.ServerSystemMetricsInterpolatedPathList[i] = amc.PathPrefix + "-" + amc.ServerSystemMetricsInterpolatedPathList[i] } - testdata.AllAggregatedOutputPath = testdata.PathPrefix + "-" + testdata.AllAggregatedOutputPath + amc.AllAggregatedOutputPath = amc.PathPrefix + "-" + amc.AllAggregatedOutputPath } - cfg.DatabaseIDToTestData[databaseID] = testdata + cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID] = amc } - for databaseID, group := range cfg.DatabaseIDToTestGroup { - if databaseID != "etcdv3" && group.BenchmarkOptions.ConnectionNumber != group.BenchmarkOptions.ClientNumber { - return nil, fmt.Errorf("%q got connected %d != clients %d", databaseID, group.BenchmarkOptions.ConnectionNumber, group.BenchmarkOptions.ClientNumber) + for databaseID, ctrl := range cfg.DatabaseIDToConfigClientMachineAgentControl { + if databaseID != dbtesterpb.DatabaseID_etcd__v3_1.String() && ctrl.ConfigClientMachineBenchmarkOptions.ConnectionNumber != ctrl.ConfigClientMachineBenchmarkOptions.ClientNumber { + return nil, fmt.Errorf("%q got connected %d != clients %d", databaseID, ctrl.ConfigClientMachineBenchmarkOptions.ConnectionNumber, ctrl.ConfigClientMachineBenchmarkOptions.ClientNumber) } } - var ( - defaultEtcdSnapCount int64 = 100000 + const ( + defaultAgentPort int64 = 3500 + defaultEtcdClientPort int64 = 2379 + defaultZookeeperClientPort int64 = 2181 + defaultConsulClientPort int64 = 8500 + + defaultEtcdSnapshotCount int64 = 100000 + defaultEtcdQuotaSizeBytes int64 = 8000000000 defaultZookeeperSnapCount int64 = 100000 defaultZookeeperTickTime int64 = 2000 defaultZookeeperInitLimit int64 = 5 defaultZookeeperSyncLimit int64 = 5 defaultZookeeperMaxClientConnections int64 = 5000 ) - if v, ok := cfg.DatabaseIDToTestGroup["etcdv3"]; ok { - if v.Etcdv3.SnapCount == 0 { - v.Etcdv3.SnapCount = defaultEtcdSnapCount + + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v2_3.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort } - cfg.DatabaseIDToTestGroup["etcdv3"] = v + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultEtcdClientPort + } + if v.Flag_Etcd_V2_3.SnapshotCount == 0 { + v.Flag_Etcd_V2_3.SnapshotCount = defaultEtcdSnapshotCount + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v2_3.String()] = v } - if v, ok := cfg.DatabaseIDToTestGroup["etcdtip"]; ok { - if v.Etcdv3.SnapCount == 0 { - v.Etcdv3.SnapCount = defaultEtcdSnapCount + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_1.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort } - cfg.DatabaseIDToTestGroup["etcdtip"] = v + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultEtcdClientPort + } + if v.Flag_Etcd_V3_1.SnapshotCount == 0 { + v.Flag_Etcd_V3_1.SnapshotCount = defaultEtcdSnapshotCount + } + if v.Flag_Etcd_V3_1.QuotaSizeBytes == 0 { + v.Flag_Etcd_V3_1.QuotaSizeBytes = defaultEtcdQuotaSizeBytes + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_1.String()] = v } - if v, ok := cfg.DatabaseIDToTestGroup["zookeeper"]; ok { - if v.Zookeeper.TickTime == 0 { - v.Zookeeper.TickTime = defaultZookeeperTickTime + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_2.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort } - if v.Zookeeper.InitLimit == 0 { - v.Zookeeper.InitLimit = defaultZookeeperInitLimit + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultEtcdClientPort } - if v.Zookeeper.SyncLimit == 0 { - v.Zookeeper.SyncLimit = defaultZookeeperSyncLimit + if v.Flag_Etcd_V3_2.SnapshotCount == 0 { + v.Flag_Etcd_V3_2.SnapshotCount = defaultEtcdSnapshotCount } - if v.Zookeeper.SnapCount == 0 { - v.Zookeeper.SnapCount = defaultZookeeperSnapCount + if v.Flag_Etcd_V3_2.QuotaSizeBytes == 0 { + v.Flag_Etcd_V3_2.QuotaSizeBytes = defaultEtcdQuotaSizeBytes } - if v.Zookeeper.MaxClientConnections == 0 { - v.Zookeeper.MaxClientConnections = defaultZookeeperMaxClientConnections + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_2.String()] = v + } + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__tip.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort } - cfg.DatabaseIDToTestGroup["zookeeper"] = v + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultEtcdClientPort + } + if v.Flag_Etcd_Tip.SnapshotCount == 0 { + v.Flag_Etcd_Tip.SnapshotCount = defaultEtcdSnapshotCount + } + if v.Flag_Etcd_Tip.QuotaSizeBytes == 0 { + v.Flag_Etcd_Tip.QuotaSizeBytes = defaultEtcdQuotaSizeBytes + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__tip.String()] = v } - if cfg.Control.GoogleCloudStorageKeyPath != "" && !analyze { - bts, err = ioutil.ReadFile(cfg.Control.GoogleCloudStorageKeyPath) + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_zookeeper__r3_4_9.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort + } + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultZookeeperClientPort + } + + v.Flag_Zookeeper_R3_4_9.ClientPort = v.DatabasePortToConnect + if v.Flag_Zookeeper_R3_4_9.TickTime == 0 { + v.Flag_Zookeeper_R3_4_9.TickTime = defaultZookeeperTickTime + } + if v.Flag_Zookeeper_R3_4_9.InitLimit == 0 { + v.Flag_Zookeeper_R3_4_9.InitLimit = defaultZookeeperInitLimit + } + if v.Flag_Zookeeper_R3_4_9.SyncLimit == 0 { + v.Flag_Zookeeper_R3_4_9.SyncLimit = defaultZookeeperSyncLimit + } + if v.Flag_Zookeeper_R3_4_9.SnapCount == 0 { + v.Flag_Zookeeper_R3_4_9.SnapCount = defaultZookeeperSnapCount + } + if v.Flag_Zookeeper_R3_4_9.MaxClientConnections == 0 { + v.Flag_Zookeeper_R3_4_9.MaxClientConnections = defaultZookeeperMaxClientConnections + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_zookeeper__r3_4_9.String()] = v + } + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort + } + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultZookeeperClientPort + } + + v.Flag_Zookeeper_R3_5_2Alpha.ClientPort = v.DatabasePortToConnect + if v.Flag_Zookeeper_R3_5_2Alpha.TickTime == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.TickTime = defaultZookeeperTickTime + } + if v.Flag_Zookeeper_R3_5_2Alpha.TickTime == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.TickTime = defaultZookeeperTickTime + } + if v.Flag_Zookeeper_R3_5_2Alpha.InitLimit == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.InitLimit = defaultZookeeperInitLimit + } + if v.Flag_Zookeeper_R3_5_2Alpha.SyncLimit == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.SyncLimit = defaultZookeeperSyncLimit + } + if v.Flag_Zookeeper_R3_5_2Alpha.SnapCount == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.SnapCount = defaultZookeeperSnapCount + } + if v.Flag_Zookeeper_R3_5_2Alpha.MaxClientConnections == 0 { + v.Flag_Zookeeper_R3_5_2Alpha.MaxClientConnections = defaultZookeeperMaxClientConnections + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha.String()] = v + } + + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_consul__v0_7_5.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort + } + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultConsulClientPort + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_consul__v0_7_5.String()] = v + } + if v, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_consul__v0_8_0.String()]; ok { + if v.AgentPortToConnect == 0 { + v.AgentPortToConnect = defaultAgentPort + } + if v.DatabasePortToConnect == 0 { + v.DatabasePortToConnect = defaultConsulClientPort + } + cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_consul__v0_8_0.String()] = v + } + + // need etcd configs since it's backed by etcd + if _, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_zetcd__beta.String()]; ok { + _, ok1 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v2_3.String()] + _, ok2 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_1.String()] + _, ok3 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_2.String()] + _, ok4 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__tip.String()] + if !ok1 && !ok2 && !ok3 && !ok4 { + return nil, fmt.Errorf("got %q config, but no etcd config is given", dbtesterpb.DatabaseID_zetcd__beta.String()) + } + } + if _, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_cetcd__beta.String()]; ok { + _, ok1 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v2_3.String()] + _, ok2 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_1.String()] + _, ok3 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__v3_2.String()] + _, ok4 := cfg.DatabaseIDToConfigClientMachineAgentControl[dbtesterpb.DatabaseID_etcd__tip.String()] + if !ok1 && !ok2 && !ok3 && !ok4 { + return nil, fmt.Errorf("got %q config, but no etcd config is given", dbtesterpb.DatabaseID_cetcd__beta.String()) + } + } + + if cfg.ConfigClientMachineInitial.GoogleCloudStorageKeyPath != "" && !analyze { + bts, err = ioutil.ReadFile(cfg.ConfigClientMachineInitial.GoogleCloudStorageKeyPath) if err != nil { return nil, err } - cfg.Control.GoogleCloudStorageKey = string(bts) + cfg.ConfigClientMachineInitial.GoogleCloudStorageKey = string(bts) } - for i := range cfg.PlotList { - cfg.PlotList[i].OutputPathCSV = filepath.Join(cfg.PlotPathPrefix, cfg.PlotList[i].Column+".csv") - cfg.PlotList[i].OutputPathList = make([]string, 2) - cfg.PlotList[i].OutputPathList[0] = filepath.Join(cfg.PlotPathPrefix, cfg.PlotList[i].Column+".svg") - cfg.PlotList[i].OutputPathList[1] = filepath.Join(cfg.PlotPathPrefix, cfg.PlotList[i].Column+".png") + for i := range cfg.AnalyzePlotList { + cfg.AnalyzePlotList[i].OutputPathCSV = filepath.Join(cfg.AnalyzePlotPathPrefix, cfg.AnalyzePlotList[i].Column+".csv") + cfg.AnalyzePlotList[i].OutputPathList = make([]string, 2) + cfg.AnalyzePlotList[i].OutputPathList[0] = filepath.Join(cfg.AnalyzePlotPathPrefix, cfg.AnalyzePlotList[i].Column+".svg") + cfg.AnalyzePlotList[i].OutputPathList[1] = filepath.Join(cfg.AnalyzePlotPathPrefix, cfg.AnalyzePlotList[i].Column+".png") } return &cfg, nil } -// MakeTag converts database scription to database tag. -func MakeTag(desc string) string { - s := strings.ToLower(desc) - s = strings.Replace(s, "go ", "go", -1) - s = strings.Replace(s, "java ", "java", -1) - s = strings.Replace(s, "(", "", -1) - s = strings.Replace(s, ")", "", -1) - return strings.Replace(s, " ", "-", -1) -} +const maxEtcdQuotaSize = 8000000000 // ToRequest converts configuration to 'dbtesterpb.Request'. -func (cfg *Config) ToRequest(databaseID string, op dbtesterpb.Request_Operation, idx int) (req *dbtesterpb.Request, err error) { - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] +func (cfg *Config) ToRequest(databaseID string, op dbtesterpb.Operation, idx int) (req *dbtesterpb.Request, err error) { + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { - err = fmt.Errorf("%q is not defined", databaseID) + err = fmt.Errorf("database ID %q is not defined", databaseID) return } + did := dbtesterpb.DatabaseID(dbtesterpb.DatabaseID_value[databaseID]) req = &dbtesterpb.Request{ Operation: op, - TriggerLogUpload: gcfg.BenchmarkSteps.Step4UploadLogs, - DatabaseID: dbtesterpb.Request_Database(dbtesterpb.Request_Database_value[databaseID]), + TriggerLogUpload: gcfg.ConfigClientMachineBenchmarkSteps.Step4UploadLogs, + DatabaseID: did, DatabaseTag: gcfg.DatabaseTag, PeerIPsString: gcfg.PeerIPsString, - IpIndex: uint32(idx), - CurrentClientNumber: gcfg.BenchmarkOptions.ClientNumber, - Control: &dbtesterpb.Request_Control{ - GoogleCloudProjectName: cfg.Control.GoogleCloudProjectName, - GoogleCloudStorageKey: cfg.Control.GoogleCloudStorageKey, - GoogleCloudStorageBucketName: cfg.Control.GoogleCloudStorageBucketName, - GoogleCloudStorageSubDirectory: cfg.Control.GoogleCloudStorageSubDirectory, + IPIndex: uint32(idx), + CurrentClientNumber: gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber, + ConfigClientMachineInitial: &dbtesterpb.ConfigClientMachineInitial{ + GoogleCloudProjectName: cfg.ConfigClientMachineInitial.GoogleCloudProjectName, + GoogleCloudStorageKey: cfg.ConfigClientMachineInitial.GoogleCloudStorageKey, + GoogleCloudStorageBucketName: cfg.ConfigClientMachineInitial.GoogleCloudStorageBucketName, + GoogleCloudStorageSubDirectory: cfg.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, }, } switch req.DatabaseID { - case dbtesterpb.Request_etcdv2: - - case dbtesterpb.Request_etcdv3: - req.Etcdv3Config = &dbtesterpb.Request_Etcdv3{ - SnapCount: gcfg.Etcdv3.SnapCount, - QuotaSizeBytes: gcfg.Etcdv3.QuotaSizeBytes, + case dbtesterpb.DatabaseID_etcd__v2_3: + req.Flag_Etcd_V2_3 = &dbtesterpb.Flag_Etcd_V2_3{ + SnapshotCount: gcfg.Flag_Etcd_V2_3.SnapshotCount, + } + case dbtesterpb.DatabaseID_etcd__v3_1: + if gcfg.Flag_Etcd_V3_1.QuotaSizeBytes > maxEtcdQuotaSize { + err = fmt.Errorf("maximum etcd quota is 8 GB (%d), got %d", maxEtcdQuotaSize, gcfg.Flag_Etcd_V3_1.QuotaSizeBytes) + return + } + req.Flag_Etcd_V3_1 = &dbtesterpb.Flag_Etcd_V3_1{ + SnapshotCount: gcfg.Flag_Etcd_V3_1.SnapshotCount, + QuotaSizeBytes: gcfg.Flag_Etcd_V3_1.QuotaSizeBytes, + } + case dbtesterpb.DatabaseID_etcd__v3_2: + if gcfg.Flag_Etcd_V3_2.QuotaSizeBytes > maxEtcdQuotaSize { + err = fmt.Errorf("maximum etcd quota is 8 GB (%d), got %d", maxEtcdQuotaSize, gcfg.Flag_Etcd_V3_2.QuotaSizeBytes) + return + } + req.Flag_Etcd_V3_2 = &dbtesterpb.Flag_Etcd_V3_2{ + SnapshotCount: gcfg.Flag_Etcd_V3_2.SnapshotCount, + QuotaSizeBytes: gcfg.Flag_Etcd_V3_2.QuotaSizeBytes, + } + case dbtesterpb.DatabaseID_etcd__tip: + if gcfg.Flag_Etcd_Tip.QuotaSizeBytes > maxEtcdQuotaSize { + err = fmt.Errorf("maximum etcd quota is 8 GB (%d), got %d", maxEtcdQuotaSize, gcfg.Flag_Etcd_Tip.QuotaSizeBytes) + return + } + req.Flag_Etcd_Tip = &dbtesterpb.Flag_Etcd_Tip{ + SnapshotCount: gcfg.Flag_Etcd_Tip.SnapshotCount, + QuotaSizeBytes: gcfg.Flag_Etcd_Tip.QuotaSizeBytes, } - case dbtesterpb.Request_zookeeper: - req.ZookeeperConfig = &dbtesterpb.Request_Zookeeper{ + case dbtesterpb.DatabaseID_zookeeper__r3_4_9: + req.Flag_Zookeeper_R3_4_9 = &dbtesterpb.Flag_Zookeeper_R3_4_9{ + JavaDJuteMaxBuffer: gcfg.Flag_Zookeeper_R3_4_9.JavaDJuteMaxBuffer, + JavaXms: gcfg.Flag_Zookeeper_R3_4_9.JavaXms, + JavaXmx: gcfg.Flag_Zookeeper_R3_4_9.JavaXmx, MyID: uint32(idx + 1), - TickTime: gcfg.Zookeeper.TickTime, - ClientPort: int64(gcfg.DatabasePortToConnect), - InitLimit: gcfg.Zookeeper.InitLimit, - SyncLimit: gcfg.Zookeeper.SyncLimit, - SnapCount: gcfg.Zookeeper.SnapCount, - MaxClientConnections: gcfg.Zookeeper.MaxClientConnections, + ClientPort: gcfg.Flag_Zookeeper_R3_4_9.ClientPort, + TickTime: gcfg.Flag_Zookeeper_R3_4_9.TickTime, + InitLimit: gcfg.Flag_Zookeeper_R3_4_9.InitLimit, + SyncLimit: gcfg.Flag_Zookeeper_R3_4_9.SyncLimit, + SnapCount: gcfg.Flag_Zookeeper_R3_4_9.SnapCount, + MaxClientConnections: gcfg.Flag_Zookeeper_R3_4_9.MaxClientConnections, + } + case dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha: + req.Flag_Zookeeper_R3_5_2Alpha = &dbtesterpb.Flag_Zookeeper_R3_5_2Alpha{ + JavaDJuteMaxBuffer: gcfg.Flag_Zookeeper_R3_5_2Alpha.JavaDJuteMaxBuffer, + JavaXms: gcfg.Flag_Zookeeper_R3_5_2Alpha.JavaXms, + JavaXmx: gcfg.Flag_Zookeeper_R3_5_2Alpha.JavaXmx, + MyID: uint32(idx + 1), + ClientPort: gcfg.Flag_Zookeeper_R3_5_2Alpha.ClientPort, + TickTime: gcfg.Flag_Zookeeper_R3_5_2Alpha.TickTime, + InitLimit: gcfg.Flag_Zookeeper_R3_5_2Alpha.InitLimit, + SyncLimit: gcfg.Flag_Zookeeper_R3_5_2Alpha.SyncLimit, + SnapCount: gcfg.Flag_Zookeeper_R3_5_2Alpha.SnapCount, + MaxClientConnections: gcfg.Flag_Zookeeper_R3_5_2Alpha.MaxClientConnections, } - case dbtesterpb.Request_consul: - case dbtesterpb.Request_zetcd: - case dbtesterpb.Request_cetcd: + case dbtesterpb.DatabaseID_consul__v0_7_5: + case dbtesterpb.DatabaseID_consul__v0_8_0: + + case dbtesterpb.DatabaseID_zetcd__beta: + case dbtesterpb.DatabaseID_cetcd__beta: default: err = fmt.Errorf("unknown %v", req.DatabaseID) - return } return diff --git a/config_dbtester_test.go b/config_dbtester_test.go index e4a4978b..ea35d562 100644 --- a/config_dbtester_test.go +++ b/config_dbtester_test.go @@ -29,17 +29,18 @@ func TestConfig(t *testing.T) { expected := &Config{ TestTitle: "Write 1M keys, 256-byte key, 1KB value value, clients 1 to 1,000", TestDescription: `- Google Cloud Compute Engine -- 4 machines of 16 vCPUs + 30 GB Memory + 300 GB SSD (1 for client) +- 4 machines of 16 vCPUs + 60 GB Memory + 300 GB SSD (1 for client) - Ubuntu 16.10 -- etcd v3.1 (Go 1.7.5) -- Zookeeper r3.4.9 +- etcd tip (Go 1.8.0) +- Zookeeper r3.5.2-alpha - Java 8 - javac 1.8.0_121 - Java(TM) SE Runtime Environment (build 1.8.0_121-b13) - Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) -- Consul v0.7.4 (Go 1.7.5) + - ` + "`/usr/bin/java -Djute.maxbuffer=33554432 -Xms50G -Xmx50G`" + ` +- Consul v0.7.5 (Go 1.8.0) `, - Control: Control{ + ConfigClientMachineInitial: dbtesterpb.ConfigClientMachineInitial{ PathPrefix: "/home/gyuho", LogPath: "/home/gyuho/client-control.log", ClientSystemMetricsPath: "/home/gyuho/client-system-metrics.csv", @@ -54,25 +55,25 @@ func TestConfig(t *testing.T) { GoogleCloudStorageKeyPath: "config-dbtester-gcloud-key.json", GoogleCloudStorageKey: "test-key", GoogleCloudStorageBucketName: "dbtester-results", - GoogleCloudStorageSubDirectory: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable", + GoogleCloudStorageSubDirectory: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable", }, - AllDatabaseIDList: []string{"etcdv3", "zookeeper", "consul"}, - DatabaseIDToTestGroup: map[string]TestGroup{ - "etcdv3": { - DatabaseID: "etcdv3", - DatabaseTag: "etcd-v3.1-go1.7.5", - DatabaseDescription: "etcd v3.1 (Go 1.7.5)", - PeerIPs: []string{"10.240.0.20", "10.240.0.21", "10.240.0.22"}, - PeerIPsString: "10.240.0.20___10.240.0.21___10.240.0.22", + AllDatabaseIDList: []string{"etcd__tip", "zookeeper__r3_5_2_alpha", "consul__v0_7_5"}, + DatabaseIDToConfigClientMachineAgentControl: map[string]dbtesterpb.ConfigClientMachineAgentControl{ + "etcd__tip": { + DatabaseID: "etcd__tip", + DatabaseTag: "etcd-tip-go1.8.0", + DatabaseDescription: "etcd tip (Go 1.8.0)", + PeerIPs: []string{"10.240.0.7", "10.240.0.8", "10.240.0.12"}, + PeerIPsString: "10.240.0.7___10.240.0.8___10.240.0.12", DatabasePortToConnect: 2379, - DatabaseEndpoints: []string{"10.240.0.20:2379", "10.240.0.21:2379", "10.240.0.22:2379"}, + DatabaseEndpoints: []string{"10.240.0.7:2379", "10.240.0.8:2379", "10.240.0.12:2379"}, AgentPortToConnect: 3500, - AgentEndpoints: []string{"10.240.0.20:3500", "10.240.0.21:3500", "10.240.0.22:3500"}, - Etcdv3: Etcdv3{ - SnapCount: 100000, + AgentEndpoints: []string{"10.240.0.7:3500", "10.240.0.8:3500", "10.240.0.12:3500"}, + Flag_Etcd_Tip: &dbtesterpb.Flag_Etcd_Tip{ + SnapshotCount: 100000, QuotaSizeBytes: 8000000000, }, - BenchmarkOptions: BenchmarkOptions{ + ConfigClientMachineBenchmarkOptions: &dbtesterpb.ConfigClientMachineBenchmarkOptions{ Type: "write", RequestNumber: 1000000, ConnectionNumber: 0, @@ -84,31 +85,35 @@ func TestConfig(t *testing.T) { ValueSizeBytes: 1024, StaleRead: false, }, - BenchmarkSteps: BenchmarkSteps{ + ConfigClientMachineBenchmarkSteps: &dbtesterpb.ConfigClientMachineBenchmarkSteps{ Step1StartDatabase: true, Step2StressDatabase: true, Step3StopDatabase: true, Step4UploadLogs: true, }, }, - "zookeeper": { - DatabaseID: "zookeeper", - DatabaseTag: "zookeeper-r3.4.9-java8", - DatabaseDescription: "Zookeeper r3.4.9 (Java 8)", - PeerIPs: []string{"10.240.0.25", "10.240.0.27", "10.240.0.28"}, - PeerIPsString: "10.240.0.25___10.240.0.27___10.240.0.28", + "zookeeper__r3_5_2_alpha": { + DatabaseID: "zookeeper__r3_5_2_alpha", + DatabaseTag: "zookeeper-r3.5.2-alpha-java8", + DatabaseDescription: "Zookeeper r3.5.2-alpha (Java 8)", + PeerIPs: []string{"10.240.0.21", "10.240.0.22", "10.240.0.23"}, + PeerIPsString: "10.240.0.21___10.240.0.22___10.240.0.23", DatabasePortToConnect: 2181, - DatabaseEndpoints: []string{"10.240.0.25:2181", "10.240.0.27:2181", "10.240.0.28:2181"}, + DatabaseEndpoints: []string{"10.240.0.21:2181", "10.240.0.22:2181", "10.240.0.23:2181"}, AgentPortToConnect: 3500, - AgentEndpoints: []string{"10.240.0.25:3500", "10.240.0.27:3500", "10.240.0.28:3500"}, - Zookeeper: Zookeeper{ + AgentEndpoints: []string{"10.240.0.21:3500", "10.240.0.22:3500", "10.240.0.23:3500"}, + Flag_Zookeeper_R3_5_2Alpha: &dbtesterpb.Flag_Zookeeper_R3_5_2Alpha{ + JavaDJuteMaxBuffer: 33554432, + JavaXms: "50G", + JavaXmx: "50G", + ClientPort: 2181, TickTime: 2000, InitLimit: 5, SyncLimit: 5, SnapCount: 100000, MaxClientConnections: 5000, }, - BenchmarkOptions: BenchmarkOptions{ + ConfigClientMachineBenchmarkOptions: &dbtesterpb.ConfigClientMachineBenchmarkOptions{ Type: "write", RequestNumber: 1000000, ConnectionNumber: 0, @@ -120,24 +125,24 @@ func TestConfig(t *testing.T) { ValueSizeBytes: 1024, StaleRead: false, }, - BenchmarkSteps: BenchmarkSteps{ + ConfigClientMachineBenchmarkSteps: &dbtesterpb.ConfigClientMachineBenchmarkSteps{ Step1StartDatabase: true, Step2StressDatabase: true, Step3StopDatabase: true, Step4UploadLogs: true, }, }, - "consul": { - DatabaseID: "consul", - DatabaseTag: "consul-v0.7.4-go1.7.5", - DatabaseDescription: "Consul v0.7.4 (Go 1.7.5)", - PeerIPs: []string{"10.240.0.30", "10.240.0.31", "10.240.0.33"}, - PeerIPsString: "10.240.0.30___10.240.0.31___10.240.0.33", + "consul__v0_7_5": { + DatabaseID: "consul__v0_7_5", + DatabaseTag: "consul-v0.7.5-go1.8.0", + DatabaseDescription: "Consul v0.7.5 (Go 1.8.0)", + PeerIPs: []string{"10.240.0.27", "10.240.0.28", "10.240.0.29"}, + PeerIPsString: "10.240.0.27___10.240.0.28___10.240.0.29", DatabasePortToConnect: 8500, - DatabaseEndpoints: []string{"10.240.0.30:8500", "10.240.0.31:8500", "10.240.0.33:8500"}, + DatabaseEndpoints: []string{"10.240.0.27:8500", "10.240.0.28:8500", "10.240.0.29:8500"}, AgentPortToConnect: 3500, - AgentEndpoints: []string{"10.240.0.30:3500", "10.240.0.31:3500", "10.240.0.33:3500"}, - BenchmarkOptions: BenchmarkOptions{ + AgentEndpoints: []string{"10.240.0.27:3500", "10.240.0.28:3500", "10.240.0.29:3500"}, + ConfigClientMachineBenchmarkOptions: &dbtesterpb.ConfigClientMachineBenchmarkOptions{ Type: "write", RequestNumber: 1000000, ConnectionNumber: 0, @@ -149,7 +154,7 @@ func TestConfig(t *testing.T) { ValueSizeBytes: 1024, StaleRead: false, }, - BenchmarkSteps: BenchmarkSteps{ + ConfigClientMachineBenchmarkSteps: &dbtesterpb.ConfigClientMachineBenchmarkSteps{ Step1StartDatabase: true, Step2StressDatabase: true, Step3StopDatabase: true, @@ -157,331 +162,331 @@ func TestConfig(t *testing.T) { }, }, }, - DatabaseIDToTestData: map[string]TestData{ - "etcdv3": { - DatabaseID: "etcdv3", - DatabaseTag: "etcd-v3.1-go1.7.5", - DatabaseDescription: "etcd v3.1 (Go 1.7.5)", - PathPrefix: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5", + DatabaseIDToConfigAnalyzeMachineInitial: map[string]dbtesterpb.ConfigAnalyzeMachineInitial{ + "etcd__tip": { + DatabaseID: "etcd__tip", + DatabaseTag: "etcd-tip-go1.8.0", + DatabaseDescription: "etcd tip (Go 1.8.0)", + PathPrefix: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0", - ClientSystemMetricsInterpolatedPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-system-metrics-interpolated.csv", - ClientLatencyThroughputTimeseriesPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-latency-throughput-timeseries.csv", - ClientLatencyDistributionAllPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-latency-distribution-all.csv", - ClientLatencyDistributionPercentilePath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-latency-distribution-percentile.csv", - ClientLatencyDistributionSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-latency-distribution-summary.csv", - ClientLatencyByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-client-latency-by-key-number.csv", - ServerMemoryByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-server-memory-by-key-number.csv", - ServerReadBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-server-read-bytes-delta-by-key-number.csv", - ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-server-write-bytes-delta-by-key-number.csv", - ServerDiskSpaceUsageSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-server-disk-space-usage-summary.csv", + ClientSystemMetricsInterpolatedPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-system-metrics-interpolated.csv", + ClientLatencyThroughputTimeseriesPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-latency-throughput-timeseries.csv", + ClientLatencyDistributionAllPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-latency-distribution-all.csv", + ClientLatencyDistributionPercentilePath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-latency-distribution-percentile.csv", + ClientLatencyDistributionSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-latency-distribution-summary.csv", + ClientLatencyByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-client-latency-by-key-number.csv", + ServerMemoryByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-server-memory-by-key-number.csv", + ServerReadBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-server-read-bytes-delta-by-key-number.csv", + ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-server-write-bytes-delta-by-key-number.csv", + ServerDiskSpaceUsageSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-server-disk-space-usage-summary.csv", ServerSystemMetricsInterpolatedPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-1-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-2-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-3-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-1-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-2-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-3-server-system-metrics-interpolated.csv", }, - AllAggregatedOutputPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5-all-aggregated.csv", + AllAggregatedOutputPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0-all-aggregated.csv", }, - "zookeeper": { - DatabaseID: "zookeeper", - DatabaseTag: "zookeeper-r3.4.9-java8", - DatabaseDescription: "Zookeeper r3.4.9 (Java 8)", - PathPrefix: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8", + "zookeeper__r3_5_2_alpha": { + DatabaseID: "zookeeper__r3_5_2_alpha", + DatabaseTag: "zookeeper-r3.5.2-alpha-java8", + DatabaseDescription: "Zookeeper r3.5.2-alpha (Java 8)", + PathPrefix: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8", - ClientSystemMetricsInterpolatedPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-system-metrics-interpolated.csv", - ClientLatencyThroughputTimeseriesPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-latency-throughput-timeseries.csv", - ClientLatencyDistributionAllPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-latency-distribution-all.csv", - ClientLatencyDistributionPercentilePath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-latency-distribution-percentile.csv", - ClientLatencyDistributionSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-latency-distribution-summary.csv", - ClientLatencyByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-client-latency-by-key-number.csv", - ServerMemoryByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-server-memory-by-key-number.csv", - ServerReadBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-server-read-bytes-delta-by-key-number.csv", - ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-server-write-bytes-delta-by-key-number.csv", - ServerDiskSpaceUsageSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-server-disk-space-usage-summary.csv", + ClientSystemMetricsInterpolatedPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-system-metrics-interpolated.csv", + ClientLatencyThroughputTimeseriesPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-latency-throughput-timeseries.csv", + ClientLatencyDistributionAllPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-latency-distribution-all.csv", + ClientLatencyDistributionPercentilePath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-latency-distribution-percentile.csv", + ClientLatencyDistributionSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-latency-distribution-summary.csv", + ClientLatencyByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-client-latency-by-key-number.csv", + ServerMemoryByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-server-memory-by-key-number.csv", + ServerReadBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-server-read-bytes-delta-by-key-number.csv", + ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-server-write-bytes-delta-by-key-number.csv", + ServerDiskSpaceUsageSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-server-disk-space-usage-summary.csv", ServerSystemMetricsInterpolatedPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-1-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-2-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-3-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-1-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-2-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-3-server-system-metrics-interpolated.csv", }, - AllAggregatedOutputPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8-all-aggregated.csv", + AllAggregatedOutputPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8-all-aggregated.csv", }, - "consul": { - DatabaseID: "consul", - DatabaseTag: "consul-v0.7.4-go1.7.5", - DatabaseDescription: "Consul v0.7.4 (Go 1.7.5)", - PathPrefix: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5", + "consul__v0_7_5": { + DatabaseID: "consul__v0_7_5", + DatabaseTag: "consul-v0.7.5-go1.8.0", + DatabaseDescription: "Consul v0.7.5 (Go 1.8.0)", + PathPrefix: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0", - ClientSystemMetricsInterpolatedPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-system-metrics-interpolated.csv", - ClientLatencyThroughputTimeseriesPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-latency-throughput-timeseries.csv", - ClientLatencyDistributionAllPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-latency-distribution-all.csv", - ClientLatencyDistributionPercentilePath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-latency-distribution-percentile.csv", - ClientLatencyDistributionSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-latency-distribution-summary.csv", - ClientLatencyByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-client-latency-by-key-number.csv", - ServerMemoryByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-server-memory-by-key-number.csv", - ServerReadBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-server-read-bytes-delta-by-key-number.csv", - ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-server-write-bytes-delta-by-key-number.csv", - ServerDiskSpaceUsageSummaryPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-server-disk-space-usage-summary.csv", + ClientSystemMetricsInterpolatedPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-system-metrics-interpolated.csv", + ClientLatencyThroughputTimeseriesPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-latency-throughput-timeseries.csv", + ClientLatencyDistributionAllPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-latency-distribution-all.csv", + ClientLatencyDistributionPercentilePath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-latency-distribution-percentile.csv", + ClientLatencyDistributionSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-latency-distribution-summary.csv", + ClientLatencyByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-client-latency-by-key-number.csv", + ServerMemoryByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-server-memory-by-key-number.csv", + ServerReadBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-server-read-bytes-delta-by-key-number.csv", + ServerWriteBytesDeltaByKeyNumberPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-server-write-bytes-delta-by-key-number.csv", + ServerDiskSpaceUsageSummaryPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-server-disk-space-usage-summary.csv", ServerSystemMetricsInterpolatedPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-1-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-2-server-system-metrics-interpolated.csv", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-3-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-1-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-2-server-system-metrics-interpolated.csv", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-3-server-system-metrics-interpolated.csv", }, - AllAggregatedOutputPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5-all-aggregated.csv", + AllAggregatedOutputPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0-all-aggregated.csv", }, }, - Analyze: Analyze{ - AllAggregatedOutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv", - AllAggregatedOutputPathTXT: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt", + ConfigAnalyzeMachineAllAggregatedOutput: dbtesterpb.ConfigAnalyzeMachineAllAggregatedOutput{ + AllAggregatedOutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv", + AllAggregatedOutputPathTXT: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt", }, - PlotPathPrefix: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable", - PlotList: []Plot{ + AnalyzePlotPathPrefix: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable", + AnalyzePlotList: []dbtesterpb.ConfigAnalyzeMachinePlot{ { Column: "AVG-LATENCY-MS", XAxis: "Second", YAxis: "Latency(millisecond)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.png", }, }, { Column: "AVG-THROUGHPUT", XAxis: "Second", YAxis: "Throughput(Requests/Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.png", }, }, { Column: "AVG-VOLUNTARY-CTXT-SWITCHES", XAxis: "Second", YAxis: "Voluntary Context Switches", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.png", }, }, { Column: "AVG-NON-VOLUNTARY-CTXT-SWITCHES", XAxis: "Second", YAxis: "Non-voluntary Context Switches", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.png", }, }, { Column: "AVG-CPU", XAxis: "Second", YAxis: "CPU(%)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.png", }, }, { Column: "MAX-CPU", XAxis: "Second", YAxis: "CPU(%)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.png", }, }, { Column: "AVG-VMRSS-MB", XAxis: "Second", YAxis: "Memory(MB)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.png", }, }, { Column: "AVG-READS-COMPLETED-DELTA", XAxis: "Second", YAxis: "Disk Reads (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.png", }, }, { Column: "AVG-SECTORS-READ-DELTA", XAxis: "Second", YAxis: "Sectors Read (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.png", }, }, { Column: "AVG-WRITES-COMPLETED-DELTA", XAxis: "Second", YAxis: "Disk Writes (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.png", }, }, { Column: "AVG-SECTORS-WRITTEN-DELTA", XAxis: "Second", YAxis: "Sectors Written (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.png", }, }, { Column: "AVG-READ-BYTES-DELTA", XAxis: "Second", YAxis: "Read Bytes (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.png", }, }, { Column: "AVG-WRITE-BYTES-DELTA", XAxis: "Second", YAxis: "Write Bytes (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.png", }, }, { Column: "AVG-RECEIVE-BYTES-NUM-DELTA", XAxis: "Second", YAxis: "Network Receive(bytes) (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.png", }, }, { Column: "AVG-TRANSMIT-BYTES-NUM-DELTA", XAxis: "Second", YAxis: "Network Transmit(bytes) (Delta per Second)", - OutputPathCSV: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.csv", + OutputPathCSV: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.csv", OutputPathList: []string{ - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg", - "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.png", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg", + "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.png", }, }, }, - README: README{ - OutputPath: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md", + ConfigAnalyzeMachineREADME: dbtesterpb.ConfigAnalyzeMachineREADME{ + OutputPath: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md", - Images: []Image{ + Images: []*dbtesterpb.ConfigAnalyzeMachineImage{ { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg", Type: "remote", }, { - Title: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA", - Path: "https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg", + Title: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA", + Path: "https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg", Type: "remote", }, }, @@ -491,26 +496,26 @@ func TestConfig(t *testing.T) { t.Fatalf("configuration expected\n%+v\n, got\n%+v\n", expected, cfg) } - req1, err := cfg.ToRequest("etcdv3", dbtesterpb.Request_Start, 0) + req1, err := cfg.ToRequest("etcd__tip", dbtesterpb.Operation_Start, 0) if err != nil { t.Fatal(err) } expected1 := &dbtesterpb.Request{ - Operation: dbtesterpb.Request_Start, + Operation: dbtesterpb.Operation_Start, TriggerLogUpload: true, - DatabaseID: dbtesterpb.Request_etcdv3, - DatabaseTag: "etcd-v3.1-go1.7.5", - PeerIPsString: "10.240.0.20___10.240.0.21___10.240.0.22", - IpIndex: 0, + DatabaseID: dbtesterpb.DatabaseID_etcd__tip, + DatabaseTag: "etcd-tip-go1.8.0", + PeerIPsString: "10.240.0.7___10.240.0.8___10.240.0.12", + IPIndex: 0, CurrentClientNumber: 0, - Control: &dbtesterpb.Request_Control{ + ConfigClientMachineInitial: &dbtesterpb.ConfigClientMachineInitial{ GoogleCloudProjectName: "etcd-development", GoogleCloudStorageKey: "test-key", GoogleCloudStorageBucketName: "dbtester-results", - GoogleCloudStorageSubDirectory: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable", + GoogleCloudStorageSubDirectory: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable", }, - Etcdv3Config: &dbtesterpb.Request_Etcdv3{ - SnapCount: 100000, + Flag_Etcd_Tip: &dbtesterpb.Flag_Etcd_Tip{ + SnapshotCount: 100000, QuotaSizeBytes: 8000000000, }, } @@ -518,28 +523,31 @@ func TestConfig(t *testing.T) { t.Fatalf("configuration expected\n%+v\n, got\n%+v\n", expected1, req1) } - req2, err := cfg.ToRequest("zookeeper", dbtesterpb.Request_Start, 2) + req2, err := cfg.ToRequest("zookeeper__r3_5_2_alpha", dbtesterpb.Operation_Start, 2) if err != nil { t.Fatal(err) } expected2 := &dbtesterpb.Request{ - Operation: dbtesterpb.Request_Start, + Operation: dbtesterpb.Operation_Start, TriggerLogUpload: true, - DatabaseID: dbtesterpb.Request_zookeeper, - DatabaseTag: "zookeeper-r3.4.9-java8", - PeerIPsString: "10.240.0.25___10.240.0.27___10.240.0.28", - IpIndex: 2, + DatabaseID: dbtesterpb.DatabaseID_zookeeper__r3_5_2_alpha, + DatabaseTag: "zookeeper-r3.5.2-alpha-java8", + PeerIPsString: "10.240.0.21___10.240.0.22___10.240.0.23", + IPIndex: 2, CurrentClientNumber: 0, - Control: &dbtesterpb.Request_Control{ + ConfigClientMachineInitial: &dbtesterpb.ConfigClientMachineInitial{ GoogleCloudProjectName: "etcd-development", GoogleCloudStorageKey: "test-key", GoogleCloudStorageBucketName: "dbtester-results", - GoogleCloudStorageSubDirectory: "2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable", + GoogleCloudStorageSubDirectory: "2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable", }, - ZookeeperConfig: &dbtesterpb.Request_Zookeeper{ + Flag_Zookeeper_R3_5_2Alpha: &dbtesterpb.Flag_Zookeeper_R3_5_2Alpha{ + JavaDJuteMaxBuffer: 33554432, + JavaXms: "50G", + JavaXmx: "50G", MyID: 3, - TickTime: 2000, ClientPort: 2181, + TickTime: 2000, InitLimit: 5, SyncLimit: 5, SnapCount: 100000, diff --git a/config_dbtester_test.yaml b/config_dbtester_test.yaml index 31ae0fe7..cc56d6ee 100644 --- a/config_dbtester_test.yaml +++ b/config_dbtester_test.yaml @@ -1,18 +1,19 @@ test_title: Write 1M keys, 256-byte key, 1KB value value, clients 1 to 1,000 test_description: | - Google Cloud Compute Engine - - 4 machines of 16 vCPUs + 30 GB Memory + 300 GB SSD (1 for client) + - 4 machines of 16 vCPUs + 60 GB Memory + 300 GB SSD (1 for client) - Ubuntu 16.10 - - etcd v3.1 (Go 1.7.5) - - Zookeeper r3.4.9 + - etcd tip (Go 1.8.0) + - Zookeeper r3.5.2-alpha - Java 8 - javac 1.8.0_121 - Java(TM) SE Runtime Environment (build 1.8.0_121-b13) - Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) - - Consul v0.7.4 (Go 1.7.5) + - `/usr/bin/java -Djute.maxbuffer=33554432 -Xms50G -Xmx50G` + - Consul v0.7.5 (Go 1.8.0) # common control options for all client machines -control: +config_client_machine_initial: # if not empty, all test data paths are prefixed path_prefix: /home/gyuho log_path: client-control.log @@ -28,24 +29,23 @@ control: # (optional) to automatically upload all files in client machine google_cloud_project_name: etcd-development # set this in 'control' machine, to automate log uploading in remote 'agent' machines - # google_cloud_storage_key_path: /home/gyuho/gcloud-key.json google_cloud_storage_key_path: config-dbtester-gcloud-key.json google_cloud_storage_bucket_name: dbtester-results - google_cloud_storage_sub_directory: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable + google_cloud_storage_sub_directory: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable -all_database_id_list: [etcdv3, zookeeper, consul] +all_database_id_list: [etcd__tip, zookeeper__r3_5_2_alpha, consul__v0_7_5] -datatbase_id_to_test_group: - etcdv3: - database_description: etcd v3.1 (Go 1.7.5) +datatbase_id_to_config_client_machine_agent_control: + etcd__tip: + database_description: etcd tip (Go 1.8.0) peer_ips: - - 10.240.0.20 - - 10.240.0.21 - - 10.240.0.22 + - 10.240.0.7 + - 10.240.0.8 + - 10.240.0.12 database_port_to_connect: 2379 agent_port_to_connect: 3500 - etcdv3: + etcd__tip: # --snapshot-count snap_count: 100000 # --quota-backend-bytes; 8 GB @@ -75,17 +75,25 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - zookeeper: - database_description: Zookeeper r3.4.9 (Java 8) + zookeeper__r3_5_2_alpha: + database_description: Zookeeper r3.5.2-alpha (Java 8) peer_ips: - - 10.240.0.25 - - 10.240.0.27 - - 10.240.0.28 + - 10.240.0.21 + - 10.240.0.22 + - 10.240.0.23 database_port_to_connect: 2181 agent_port_to_connect: 3500 # http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html - zookeeper: + zookeeper__r3_5_2_alpha: + # maximum size, in bytes, of a request or response + # set it to 33 MB + java_d_jute_max_buffer: 33554432 + + # JVM min,max heap size + java_xms: 50G + java_xmx: 50G + # tickTime; the length of a single tick, which is the basic time unit used by ZooKeeper, # as measured in milliseconds. tick_time: 2000 @@ -131,12 +139,12 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - consul: - database_description: Consul v0.7.4 (Go 1.7.5) + consul__v0_7_5: + database_description: Consul v0.7.5 (Go 1.8.0) peer_ips: - - 10.240.0.30 - - 10.240.0.31 - - 10.240.0.33 + - 10.240.0.27 + - 10.240.0.28 + - 10.240.0.29 database_port_to_connect: 8500 agent_port_to_connect: 3500 @@ -165,10 +173,10 @@ datatbase_id_to_test_group: step4_upload_logs: true -datatbase_id_to_test_data: - etcdv3: +datatbase_id_to_config_analyze_machine_initial: + etcd__tip: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -185,9 +193,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - zookeeper: + zookeeper__r3_5_2_alpha: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -204,9 +212,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - consul: + consul__v0_7_5: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -223,12 +231,12 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv -analyze: - all_aggregated_output_path_csv: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv - all_aggregated_output_path_txt: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt +analyze_all_aggregated_output: + all_aggregated_output_path_csv: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv + all_aggregated_output_path_txt: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt -plot_path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable -plot_list: +analyze_plot_path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable +analyze_plot_list: - column: AVG-LATENCY-MS x_axis: Second y_axis: Latency(millisecond) @@ -289,82 +297,82 @@ plot_list: x_axis: Second y_axis: Network Transmit(bytes) (Delta per Second) -readme: - output_path: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md +analyze_readme: + output_path: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md images: - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg type: remote diff --git a/config_etcdv2.go b/config_etcdv2.go deleted file mode 100644 index 409b5616..00000000 --- a/config_etcdv2.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Etcdv2 is etcdv2-specific flags -// (https://github.com/coreos/etcd/blob/master/etcdmain/help.go). -type Etcdv2 struct { - // no options needed yet -} diff --git a/config_etcdv3.go b/config_etcdv3.go deleted file mode 100644 index 0ab44c9e..00000000 --- a/config_etcdv3.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Etcdv3 is etcdv3-specific flags -// (https://github.com/coreos/etcd/blob/master/etcdmain/help.go). -type Etcdv3 struct { - SnapCount int64 `yaml:"snap_count"` - QuotaSizeBytes int64 `yaml:"quota_size_bytes"` -} diff --git a/config_zetcd.go b/config_zetcd.go deleted file mode 100644 index 2480f923..00000000 --- a/config_zetcd.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Zetcd is zetcd-specific flags -// (https://github.com/coreos/zetcd). -type Zetcd struct { - // no options needed yet -} diff --git a/config_zookeeper.go b/config_zookeeper.go deleted file mode 100644 index 169998e8..00000000 --- a/config_zookeeper.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 CoreOS, Inc. -// -// 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 dbtester - -// Zookeeper is Zookeeper-specific flags -// (http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html). -type Zookeeper struct { - TickTime int64 `yaml:"tick_time"` - InitLimit int64 `yaml:"init_limit"` - SyncLimit int64 `yaml:"sync_limit"` - SnapCount int64 `yaml:"snap_count"` - MaxClientConnections int64 `yaml:"max_client_connections"` -} diff --git a/control/command.go b/control/command.go index 6ee2f5a9..802a0d57 100644 --- a/control/command.go +++ b/control/command.go @@ -55,47 +55,39 @@ func init() { break } - Command.PersistentFlags().StringVar(&databaseID, "database-id", "etcdv3", "etcdv2, etcdv3, zookeeper, consul, zetcd, cetcd.") + Command.PersistentFlags().StringVar(&databaseID, "database-id", "etcd__tip", "See dbtesterpb/database_id.pb.go") Command.PersistentFlags().StringVarP(&configPath, "config", "c", "", "YAML configuration file path.") Command.PersistentFlags().StringVar(&diskDevice, "disk-device", dn, "Disk device to collect disk statistics metrics from.") Command.PersistentFlags().StringVar(&networkInterface, "network-interface", nt, "Network interface to record in/outgoing packets.") } func commandFunc(cmd *cobra.Command, args []string) error { - switch databaseID { - case "etcdv2": - case "etcdv3": - case "zookeeper": - case "zetcd": - case "consul": - case "cetcd": - default: - return fmt.Errorf("%q is not supported", databaseID) + if !dbtesterpb.IsValidDatabaseID(databaseID) { + return fmt.Errorf("database id %q is unknown", databaseID) } cfg, err := dbtester.ReadConfig(configPath, false) if err != nil { return err } - - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { return fmt.Errorf("%q is not found", databaseID) } - if gcfg.BenchmarkSteps.Step2StressDatabase { - switch gcfg.BenchmarkOptions.Type { + if gcfg.ConfigClientMachineBenchmarkSteps.Step2StressDatabase { + switch gcfg.ConfigClientMachineBenchmarkOptions.Type { case "write": case "read": case "read-oneshot": default: - return fmt.Errorf("%q is not supported", gcfg.BenchmarkOptions.Type) + return fmt.Errorf("%q is not supported", gcfg.ConfigClientMachineBenchmarkOptions.Type) } } pid := int64(os.Getpid()) - plog.Infof("starting collecting system metrics at %q [disk device: %q | network interface: %q | PID: %d]", cfg.Control.ClientSystemMetricsPath, diskDevice, networkInterface, pid) - if err = os.RemoveAll(cfg.Control.ClientSystemMetricsPath); err != nil { + plog.Infof("starting collecting system metrics at %q [disk device: %q | network interface: %q | PID: %d]", cfg.ConfigClientMachineInitial.ClientSystemMetricsPath, diskDevice, networkInterface, pid) + if err = os.RemoveAll(cfg.ConfigClientMachineInitial.ClientSystemMetricsPath); err != nil { return err } tcfg := &psn.TopConfig{ @@ -105,7 +97,7 @@ func commandFunc(cmd *cobra.Command, args []string) error { } var metricsCSV *psn.CSV metricsCSV, err = psn.NewCSV( - cfg.Control.ClientSystemMetricsPath, + cfg.ConfigClientMachineInitial.ClientSystemMetricsPath, pid, diskDevice, networkInterface, @@ -127,7 +119,7 @@ func commandFunc(cmd *cobra.Command, args []string) error { } case <-donec: - plog.Infof("finishing collecting system metrics; saving CSV at %q", cfg.Control.ClientSystemMetricsPath) + plog.Infof("finishing collecting system metrics; saving CSV at %q", cfg.ConfigClientMachineInitial.ClientSystemMetricsPath) if err := metricsCSV.Save(); err != nil { plog.Errorf("psn.CSV.Save(%q) error %v", metricsCSV.FilePath, err) @@ -139,7 +131,7 @@ func commandFunc(cmd *cobra.Command, args []string) error { if err != nil { plog.Fatalf("psn.CSV.Interpolate(%q) failed with %v", metricsCSV.FilePath, err) } - interpolated.FilePath = cfg.Control.ClientSystemMetricsInterpolatedPath + interpolated.FilePath = cfg.ConfigClientMachineInitial.ClientSystemMetricsInterpolatedPath if err := interpolated.Save(); err != nil { plog.Errorf("psn.CSV.Save(%q) error %v", interpolated.FilePath, err) } else { @@ -158,14 +150,14 @@ func commandFunc(cmd *cobra.Command, args []string) error { plog.Infof("npt update error: %v", nerr) println() - if gcfg.BenchmarkSteps.Step1StartDatabase { + if gcfg.ConfigClientMachineBenchmarkSteps.Step1StartDatabase { plog.Info("step 1: starting databases...") - if _, err = cfg.BroadcaseRequest(databaseID, dbtesterpb.Request_Start); err != nil { + if _, err = cfg.BroadcaseRequest(databaseID, dbtesterpb.Operation_Start); err != nil { return err } } - if gcfg.BenchmarkSteps.Step2StressDatabase { + if gcfg.ConfigClientMachineBenchmarkSteps.Step2StressDatabase { println() time.Sleep(5 * time.Second) println() @@ -175,14 +167,14 @@ func commandFunc(cmd *cobra.Command, args []string) error { } } - if gcfg.BenchmarkSteps.Step3StopDatabase { + if gcfg.ConfigClientMachineBenchmarkSteps.Step3StopDatabase { println() time.Sleep(5 * time.Second) println() plog.Info("step 3: stopping tests...") var idxToResp map[int]dbtesterpb.Response for i := 0; i < 5; i++ { - idxToResp, err = cfg.BroadcaseRequest(databaseID, dbtesterpb.Request_Stop) + idxToResp, err = cfg.BroadcaseRequest(databaseID, dbtesterpb.Operation_Stop) if err != nil { plog.Warningf("#%d: STOP failed at %v", i, err) time.Sleep(300 * time.Millisecond) @@ -206,36 +198,36 @@ func commandFunc(cmd *cobra.Command, args []string) error { close(donec) <-sysdonec - if gcfg.BenchmarkSteps.Step4UploadLogs { + if gcfg.ConfigClientMachineBenchmarkSteps.Step4UploadLogs { println() time.Sleep(3 * time.Second) println() plog.Info("step 4: uploading logs...") - if err = cfg.UploadToGoogle(databaseID, cfg.Control.LogPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.LogPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientSystemMetricsPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientSystemMetricsPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientSystemMetricsInterpolatedPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientSystemMetricsInterpolatedPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientLatencyThroughputTimeseriesPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientLatencyThroughputTimeseriesPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientLatencyDistributionAllPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientLatencyDistributionAllPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientLatencyDistributionPercentilePath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientLatencyDistributionPercentilePath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientLatencyDistributionSummaryPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientLatencyDistributionSummaryPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ClientLatencyByKeyNumberPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ClientLatencyByKeyNumberPath); err != nil { return err } - if err = cfg.UploadToGoogle(databaseID, cfg.Control.ServerDiskSpaceUsageSummaryPath); err != nil { + if err = cfg.UploadToGoogle(databaseID, cfg.ConfigClientMachineInitial.ServerDiskSpaceUsageSummaryPath); err != nil { return err } } diff --git a/dbtesterpb/config_analyze_machine.pb.go b/dbtesterpb/config_analyze_machine.pb.go new file mode 100644 index 00000000..fd6b8d7e --- /dev/null +++ b/dbtesterpb/config_analyze_machine.pb.go @@ -0,0 +1,1863 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/config_analyze_machine.proto +// DO NOT EDIT! + +/* + Package dbtesterpb is a generated protocol buffer package. + + It is generated from these files: + dbtesterpb/config_analyze_machine.proto + dbtesterpb/config_client_machine.proto + dbtesterpb/database_id.proto + dbtesterpb/flag_cetcd.proto + dbtesterpb/flag_consul.proto + dbtesterpb/flag_etcd.proto + dbtesterpb/flag_zetcd.proto + dbtesterpb/flag_zookeeper.proto + dbtesterpb/message.proto + + It has these top-level messages: + ConfigAnalyzeMachineInitial + ConfigAnalyzeMachineAllAggregatedOutput + ConfigAnalyzeMachinePlot + ConfigAnalyzeMachineImage + ConfigAnalyzeMachineREADME + ConfigClientMachineInitial + ConfigClientMachineBenchmarkOptions + ConfigClientMachineBenchmarkSteps + ConfigClientMachineAgentControl + Flag_Cetcd_Beta + Flag_Consul_V0_7_5 + Flag_Consul_V0_8_0 + Flag_Etcd_V2_3 + Flag_Etcd_V3_1 + Flag_Etcd_V3_2 + Flag_Etcd_Tip + Flag_Zetcd_Beta + Flag_Zookeeper_R3_4_9 + Flag_Zookeeper_R3_5_2Alpha + Request + Response +*/ +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// ConfigAnalyzeMachineInitial represents common control options and test data information for analyzer machine. +type ConfigAnalyzeMachineInitial struct { + DatabaseID string `protobuf:"bytes,1,opt,name=DatabaseID,proto3" json:"DatabaseID,omitempty"` + DatabaseTag string `protobuf:"bytes,2,opt,name=DatabaseTag,proto3" json:"DatabaseTag,omitempty"` + DatabaseDescription string `protobuf:"bytes,3,opt,name=DatabaseDescription,proto3" json:"DatabaseDescription,omitempty"` + PathPrefix string `protobuf:"bytes,4,opt,name=PathPrefix,proto3" json:"PathPrefix,omitempty" yaml:"path_prefix"` + ClientSystemMetricsInterpolatedPath string `protobuf:"bytes,5,opt,name=ClientSystemMetricsInterpolatedPath,proto3" json:"ClientSystemMetricsInterpolatedPath,omitempty" yaml:"client_system_metrics_interpolated_path"` + ClientLatencyThroughputTimeseriesPath string `protobuf:"bytes,6,opt,name=ClientLatencyThroughputTimeseriesPath,proto3" json:"ClientLatencyThroughputTimeseriesPath,omitempty" yaml:"client_latency_throughput_timeseries_path"` + ClientLatencyDistributionAllPath string `protobuf:"bytes,7,opt,name=ClientLatencyDistributionAllPath,proto3" json:"ClientLatencyDistributionAllPath,omitempty" yaml:"client_latency_distribution_all_path"` + ClientLatencyDistributionPercentilePath string `protobuf:"bytes,8,opt,name=ClientLatencyDistributionPercentilePath,proto3" json:"ClientLatencyDistributionPercentilePath,omitempty" yaml:"client_latency_distribution_percentile_path"` + ClientLatencyDistributionSummaryPath string `protobuf:"bytes,9,opt,name=ClientLatencyDistributionSummaryPath,proto3" json:"ClientLatencyDistributionSummaryPath,omitempty" yaml:"client_latency_distribution_summary_path"` + ClientLatencyByKeyNumberPath string `protobuf:"bytes,10,opt,name=ClientLatencyByKeyNumberPath,proto3" json:"ClientLatencyByKeyNumberPath,omitempty" yaml:"client_latency_by_key_number_path"` + ServerDiskSpaceUsageSummaryPath string `protobuf:"bytes,11,opt,name=ServerDiskSpaceUsageSummaryPath,proto3" json:"ServerDiskSpaceUsageSummaryPath,omitempty" yaml:"server_disk_space_usage_summary_path"` + ServerMemoryByKeyNumberPath string `protobuf:"bytes,12,opt,name=ServerMemoryByKeyNumberPath,proto3" json:"ServerMemoryByKeyNumberPath,omitempty" yaml:"server_memory_by_key_number_path"` + ServerReadBytesDeltaByKeyNumberPath string `protobuf:"bytes,13,opt,name=ServerReadBytesDeltaByKeyNumberPath,proto3" json:"ServerReadBytesDeltaByKeyNumberPath,omitempty" yaml:"server_read_bytes_delta_by_key_number_path"` + ServerWriteBytesDeltaByKeyNumberPath string `protobuf:"bytes,14,opt,name=ServerWriteBytesDeltaByKeyNumberPath,proto3" json:"ServerWriteBytesDeltaByKeyNumberPath,omitempty" yaml:"server_write_bytes_delta_by_key_number_path"` + ServerSystemMetricsInterpolatedPathList []string `protobuf:"bytes,15,rep,name=ServerSystemMetricsInterpolatedPathList" json:"ServerSystemMetricsInterpolatedPathList,omitempty" yaml:"server_system_metrics_interpolated_path_list"` + AllAggregatedOutputPath string `protobuf:"bytes,16,opt,name=AllAggregatedOutputPath,proto3" json:"AllAggregatedOutputPath,omitempty" yaml:"all_aggregated_output_path"` +} + +func (m *ConfigAnalyzeMachineInitial) Reset() { *m = ConfigAnalyzeMachineInitial{} } +func (m *ConfigAnalyzeMachineInitial) String() string { return proto.CompactTextString(m) } +func (*ConfigAnalyzeMachineInitial) ProtoMessage() {} +func (*ConfigAnalyzeMachineInitial) Descriptor() ([]byte, []int) { + return fileDescriptorConfigAnalyzeMachine, []int{0} +} + +type ConfigAnalyzeMachineAllAggregatedOutput struct { + AllAggregatedOutputPathCSV string `protobuf:"bytes,1,opt,name=AllAggregatedOutputPathCSV,proto3" json:"AllAggregatedOutputPathCSV,omitempty" yaml:"all_aggregated_output_path_csv"` + AllAggregatedOutputPathTXT string `protobuf:"bytes,2,opt,name=AllAggregatedOutputPathTXT,proto3" json:"AllAggregatedOutputPathTXT,omitempty" yaml:"all_aggregated_output_path_txt"` +} + +func (m *ConfigAnalyzeMachineAllAggregatedOutput) Reset() { + *m = ConfigAnalyzeMachineAllAggregatedOutput{} +} +func (m *ConfigAnalyzeMachineAllAggregatedOutput) String() string { return proto.CompactTextString(m) } +func (*ConfigAnalyzeMachineAllAggregatedOutput) ProtoMessage() {} +func (*ConfigAnalyzeMachineAllAggregatedOutput) Descriptor() ([]byte, []int) { + return fileDescriptorConfigAnalyzeMachine, []int{1} +} + +// ConfigAnalyzeMachinePlot defines plot configuration. +type ConfigAnalyzeMachinePlot struct { + Column string `protobuf:"bytes,1,opt,name=Column,proto3" json:"Column,omitempty" yaml:"column"` + XAxis string `protobuf:"bytes,2,opt,name=XAxis,proto3" json:"XAxis,omitempty" yaml:"x_axis"` + YAxis string `protobuf:"bytes,3,opt,name=YAxis,proto3" json:"YAxis,omitempty" yaml:"y_axis"` + OutputPathCSV string `protobuf:"bytes,4,opt,name=OutputPathCSV,proto3" json:"OutputPathCSV,omitempty" yaml:"output_path_csv"` + OutputPathList []string `protobuf:"bytes,5,rep,name=OutputPathList" json:"OutputPathList,omitempty" yaml:"output_path_list"` +} + +func (m *ConfigAnalyzeMachinePlot) Reset() { *m = ConfigAnalyzeMachinePlot{} } +func (m *ConfigAnalyzeMachinePlot) String() string { return proto.CompactTextString(m) } +func (*ConfigAnalyzeMachinePlot) ProtoMessage() {} +func (*ConfigAnalyzeMachinePlot) Descriptor() ([]byte, []int) { + return fileDescriptorConfigAnalyzeMachine, []int{2} +} + +// ConfigAnalyzeMachineImage defines image configuration. +type ConfigAnalyzeMachineImage struct { + Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty" yaml:"title"` + Path string `protobuf:"bytes,2,opt,name=Path,proto3" json:"Path,omitempty" yaml:"path"` + Type string `protobuf:"bytes,3,opt,name=Type,proto3" json:"Type,omitempty" yaml:"type"` +} + +func (m *ConfigAnalyzeMachineImage) Reset() { *m = ConfigAnalyzeMachineImage{} } +func (m *ConfigAnalyzeMachineImage) String() string { return proto.CompactTextString(m) } +func (*ConfigAnalyzeMachineImage) ProtoMessage() {} +func (*ConfigAnalyzeMachineImage) Descriptor() ([]byte, []int) { + return fileDescriptorConfigAnalyzeMachine, []int{3} +} + +// ConfigAnalyzeMachineREADME defines read configuration. +type ConfigAnalyzeMachineREADME struct { + OutputPath string `protobuf:"bytes,1,opt,name=OutputPath,proto3" json:"OutputPath,omitempty" yaml:"output_path"` + Images []*ConfigAnalyzeMachineImage `protobuf:"bytes,2,rep,name=Images" json:"Images,omitempty" yaml:"images"` +} + +func (m *ConfigAnalyzeMachineREADME) Reset() { *m = ConfigAnalyzeMachineREADME{} } +func (m *ConfigAnalyzeMachineREADME) String() string { return proto.CompactTextString(m) } +func (*ConfigAnalyzeMachineREADME) ProtoMessage() {} +func (*ConfigAnalyzeMachineREADME) Descriptor() ([]byte, []int) { + return fileDescriptorConfigAnalyzeMachine, []int{4} +} + +func init() { + proto.RegisterType((*ConfigAnalyzeMachineInitial)(nil), "dbtesterpb.ConfigAnalyzeMachineInitial") + proto.RegisterType((*ConfigAnalyzeMachineAllAggregatedOutput)(nil), "dbtesterpb.ConfigAnalyzeMachineAllAggregatedOutput") + proto.RegisterType((*ConfigAnalyzeMachinePlot)(nil), "dbtesterpb.ConfigAnalyzeMachinePlot") + proto.RegisterType((*ConfigAnalyzeMachineImage)(nil), "dbtesterpb.ConfigAnalyzeMachineImage") + proto.RegisterType((*ConfigAnalyzeMachineREADME)(nil), "dbtesterpb.ConfigAnalyzeMachineREADME") +} +func (m *ConfigAnalyzeMachineInitial) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigAnalyzeMachineInitial) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.DatabaseID) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.DatabaseID))) + i += copy(dAtA[i:], m.DatabaseID) + } + if len(m.DatabaseTag) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.DatabaseTag))) + i += copy(dAtA[i:], m.DatabaseTag) + } + if len(m.DatabaseDescription) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.DatabaseDescription))) + i += copy(dAtA[i:], m.DatabaseDescription) + } + if len(m.PathPrefix) > 0 { + dAtA[i] = 0x22 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.PathPrefix))) + i += copy(dAtA[i:], m.PathPrefix) + } + if len(m.ClientSystemMetricsInterpolatedPath) > 0 { + dAtA[i] = 0x2a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientSystemMetricsInterpolatedPath))) + i += copy(dAtA[i:], m.ClientSystemMetricsInterpolatedPath) + } + if len(m.ClientLatencyThroughputTimeseriesPath) > 0 { + dAtA[i] = 0x32 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientLatencyThroughputTimeseriesPath))) + i += copy(dAtA[i:], m.ClientLatencyThroughputTimeseriesPath) + } + if len(m.ClientLatencyDistributionAllPath) > 0 { + dAtA[i] = 0x3a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionAllPath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionAllPath) + } + if len(m.ClientLatencyDistributionPercentilePath) > 0 { + dAtA[i] = 0x42 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionPercentilePath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionPercentilePath) + } + if len(m.ClientLatencyDistributionSummaryPath) > 0 { + dAtA[i] = 0x4a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionSummaryPath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionSummaryPath) + } + if len(m.ClientLatencyByKeyNumberPath) > 0 { + dAtA[i] = 0x52 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ClientLatencyByKeyNumberPath))) + i += copy(dAtA[i:], m.ClientLatencyByKeyNumberPath) + } + if len(m.ServerDiskSpaceUsageSummaryPath) > 0 { + dAtA[i] = 0x5a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ServerDiskSpaceUsageSummaryPath))) + i += copy(dAtA[i:], m.ServerDiskSpaceUsageSummaryPath) + } + if len(m.ServerMemoryByKeyNumberPath) > 0 { + dAtA[i] = 0x62 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ServerMemoryByKeyNumberPath))) + i += copy(dAtA[i:], m.ServerMemoryByKeyNumberPath) + } + if len(m.ServerReadBytesDeltaByKeyNumberPath) > 0 { + dAtA[i] = 0x6a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ServerReadBytesDeltaByKeyNumberPath))) + i += copy(dAtA[i:], m.ServerReadBytesDeltaByKeyNumberPath) + } + if len(m.ServerWriteBytesDeltaByKeyNumberPath) > 0 { + dAtA[i] = 0x72 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.ServerWriteBytesDeltaByKeyNumberPath))) + i += copy(dAtA[i:], m.ServerWriteBytesDeltaByKeyNumberPath) + } + if len(m.ServerSystemMetricsInterpolatedPathList) > 0 { + for _, s := range m.ServerSystemMetricsInterpolatedPathList { + dAtA[i] = 0x7a + 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.AllAggregatedOutputPath) > 0 { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.AllAggregatedOutputPath))) + i += copy(dAtA[i:], m.AllAggregatedOutputPath) + } + return i, nil +} + +func (m *ConfigAnalyzeMachineAllAggregatedOutput) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigAnalyzeMachineAllAggregatedOutput) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.AllAggregatedOutputPathCSV) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.AllAggregatedOutputPathCSV))) + i += copy(dAtA[i:], m.AllAggregatedOutputPathCSV) + } + if len(m.AllAggregatedOutputPathTXT) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.AllAggregatedOutputPathTXT))) + i += copy(dAtA[i:], m.AllAggregatedOutputPathTXT) + } + return i, nil +} + +func (m *ConfigAnalyzeMachinePlot) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigAnalyzeMachinePlot) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Column) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.Column))) + i += copy(dAtA[i:], m.Column) + } + if len(m.XAxis) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.XAxis))) + i += copy(dAtA[i:], m.XAxis) + } + if len(m.YAxis) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.YAxis))) + i += copy(dAtA[i:], m.YAxis) + } + if len(m.OutputPathCSV) > 0 { + dAtA[i] = 0x22 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.OutputPathCSV))) + i += copy(dAtA[i:], m.OutputPathCSV) + } + if len(m.OutputPathList) > 0 { + for _, s := range m.OutputPathList { + dAtA[i] = 0x2a + 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) + } + } + return i, nil +} + +func (m *ConfigAnalyzeMachineImage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigAnalyzeMachineImage) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Title) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.Title))) + i += copy(dAtA[i:], m.Title) + } + if len(m.Path) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + } + if len(m.Type) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + } + return i, nil +} + +func (m *ConfigAnalyzeMachineREADME) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigAnalyzeMachineREADME) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.OutputPath) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(len(m.OutputPath))) + i += copy(dAtA[i:], m.OutputPath) + } + if len(m.Images) > 0 { + for _, msg := range m.Images { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigAnalyzeMachine(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64ConfigAnalyzeMachine(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32ConfigAnalyzeMachine(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintConfigAnalyzeMachine(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ConfigAnalyzeMachineInitial) Size() (n int) { + var l int + _ = l + l = len(m.DatabaseID) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.DatabaseTag) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.DatabaseDescription) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.PathPrefix) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientSystemMetricsInterpolatedPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientLatencyThroughputTimeseriesPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionAllPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionPercentilePath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionSummaryPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ClientLatencyByKeyNumberPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ServerDiskSpaceUsageSummaryPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ServerMemoryByKeyNumberPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ServerReadBytesDeltaByKeyNumberPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.ServerWriteBytesDeltaByKeyNumberPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + if len(m.ServerSystemMetricsInterpolatedPathList) > 0 { + for _, s := range m.ServerSystemMetricsInterpolatedPathList { + l = len(s) + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + } + l = len(m.AllAggregatedOutputPath) + if l > 0 { + n += 2 + l + sovConfigAnalyzeMachine(uint64(l)) + } + return n +} + +func (m *ConfigAnalyzeMachineAllAggregatedOutput) Size() (n int) { + var l int + _ = l + l = len(m.AllAggregatedOutputPathCSV) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.AllAggregatedOutputPathTXT) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + return n +} + +func (m *ConfigAnalyzeMachinePlot) Size() (n int) { + var l int + _ = l + l = len(m.Column) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.XAxis) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.YAxis) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.OutputPathCSV) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + if len(m.OutputPathList) > 0 { + for _, s := range m.OutputPathList { + l = len(s) + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + } + return n +} + +func (m *ConfigAnalyzeMachineImage) Size() (n int) { + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + return n +} + +func (m *ConfigAnalyzeMachineREADME) Size() (n int) { + var l int + _ = l + l = len(m.OutputPath) + if l > 0 { + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + if len(m.Images) > 0 { + for _, e := range m.Images { + l = e.Size() + n += 1 + l + sovConfigAnalyzeMachine(uint64(l)) + } + } + return n +} + +func sovConfigAnalyzeMachine(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozConfigAnalyzeMachine(x uint64) (n int) { + return sovConfigAnalyzeMachine(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ConfigAnalyzeMachineInitial) 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 ErrIntOverflowConfigAnalyzeMachine + } + 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: ConfigAnalyzeMachineInitial: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigAnalyzeMachineInitial: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseTag", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseTag = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseDescription", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseDescription = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PathPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PathPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientSystemMetricsInterpolatedPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientSystemMetricsInterpolatedPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyThroughputTimeseriesPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyThroughputTimeseriesPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionAllPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionAllPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionPercentilePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionPercentilePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionSummaryPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionSummaryPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyByKeyNumberPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyByKeyNumberPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerDiskSpaceUsageSummaryPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerDiskSpaceUsageSummaryPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerMemoryByKeyNumberPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerMemoryByKeyNumberPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerReadBytesDeltaByKeyNumberPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerReadBytesDeltaByKeyNumberPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerWriteBytesDeltaByKeyNumberPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerWriteBytesDeltaByKeyNumberPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerSystemMetricsInterpolatedPathList", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerSystemMetricsInterpolatedPathList = append(m.ServerSystemMetricsInterpolatedPathList, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllAggregatedOutputPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllAggregatedOutputPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigAnalyzeMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigAnalyzeMachineAllAggregatedOutput) 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 ErrIntOverflowConfigAnalyzeMachine + } + 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: ConfigAnalyzeMachineAllAggregatedOutput: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigAnalyzeMachineAllAggregatedOutput: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllAggregatedOutputPathCSV", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllAggregatedOutputPathCSV = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllAggregatedOutputPathTXT", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllAggregatedOutputPathTXT = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigAnalyzeMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigAnalyzeMachinePlot) 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 ErrIntOverflowConfigAnalyzeMachine + } + 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: ConfigAnalyzeMachinePlot: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigAnalyzeMachinePlot: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Column", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Column = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field XAxis", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.XAxis = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field YAxis", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.YAxis = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputPathCSV", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputPathCSV = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputPathList", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputPathList = append(m.OutputPathList, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigAnalyzeMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigAnalyzeMachineImage) 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 ErrIntOverflowConfigAnalyzeMachine + } + 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: ConfigAnalyzeMachineImage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigAnalyzeMachineImage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigAnalyzeMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigAnalyzeMachineREADME) 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 ErrIntOverflowConfigAnalyzeMachine + } + 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: ConfigAnalyzeMachineREADME: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigAnalyzeMachineREADME: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + 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 ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigAnalyzeMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Images = append(m.Images, &ConfigAnalyzeMachineImage{}) + if err := m.Images[len(m.Images)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigAnalyzeMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigAnalyzeMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipConfigAnalyzeMachine(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigAnalyzeMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigAnalyzeMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigAnalyzeMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthConfigAnalyzeMachine + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigAnalyzeMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipConfigAnalyzeMachine(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthConfigAnalyzeMachine = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowConfigAnalyzeMachine = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("dbtesterpb/config_analyze_machine.proto", fileDescriptorConfigAnalyzeMachine) +} + +var fileDescriptorConfigAnalyzeMachine = []byte{ + // 999 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcf, 0x6e, 0xdc, 0x44, + 0x18, 0xaf, 0x9b, 0x26, 0x90, 0x49, 0xd3, 0x96, 0x01, 0xb5, 0x4b, 0x82, 0xd6, 0xc1, 0x69, 0x48, + 0xaa, 0x42, 0x52, 0x12, 0x28, 0x12, 0x27, 0x76, 0xb3, 0x3d, 0x44, 0x34, 0x10, 0x39, 0x0b, 0x84, + 0xd3, 0x68, 0xec, 0x9d, 0x78, 0x47, 0xf1, 0x3f, 0x79, 0xc6, 0x65, 0x0d, 0x57, 0x24, 0x24, 0x24, + 0x24, 0xb8, 0x71, 0xe2, 0xc8, 0xb3, 0xf4, 0xc8, 0x13, 0x18, 0x08, 0x6f, 0xe0, 0x17, 0xa0, 0x9a, + 0x6f, 0x9c, 0xc4, 0xbb, 0xf1, 0xfe, 0xb9, 0xad, 0xe7, 0xfb, 0xfd, 0xfb, 0x3e, 0xcf, 0x8e, 0x07, + 0x6d, 0xf6, 0x1c, 0xc9, 0x84, 0x64, 0x49, 0xec, 0xec, 0xb8, 0x51, 0x78, 0xca, 0x3d, 0x42, 0x43, + 0xea, 0x67, 0xdf, 0x33, 0x12, 0x50, 0xb7, 0xcf, 0x43, 0xb6, 0x1d, 0x27, 0x91, 0x8c, 0x30, 0xba, + 0x02, 0xae, 0x7c, 0xe0, 0x71, 0xd9, 0x4f, 0x9d, 0x6d, 0x37, 0x0a, 0x76, 0xbc, 0xc8, 0x8b, 0x76, + 0x00, 0xe2, 0xa4, 0xa7, 0xf0, 0x04, 0x0f, 0xf0, 0x4b, 0x53, 0xad, 0xbf, 0x97, 0xd1, 0xea, 0x3e, + 0x68, 0xb7, 0xb4, 0xf4, 0xa1, 0x56, 0x3e, 0x08, 0xb9, 0xe4, 0xd4, 0xc7, 0x4d, 0x84, 0x3a, 0x54, + 0x52, 0x87, 0x0a, 0x76, 0xd0, 0x69, 0x18, 0x6b, 0xc6, 0xd6, 0xa2, 0x5d, 0x59, 0xc1, 0x6b, 0x68, + 0xe9, 0xe2, 0xa9, 0x4b, 0xbd, 0xc6, 0x4d, 0x00, 0x54, 0x97, 0xf0, 0x13, 0xf4, 0xe6, 0xc5, 0x63, + 0x87, 0x09, 0x37, 0xe1, 0xb1, 0xe4, 0x51, 0xd8, 0x98, 0x03, 0x64, 0x5d, 0x09, 0x3f, 0x45, 0xe8, + 0x88, 0xca, 0xfe, 0x51, 0xc2, 0x4e, 0xf9, 0xa0, 0x71, 0x4b, 0x01, 0xdb, 0xf7, 0x8b, 0xdc, 0xc4, + 0x19, 0x0d, 0xfc, 0x4f, 0xad, 0x98, 0xca, 0x3e, 0x89, 0xa1, 0x68, 0xd9, 0x15, 0x24, 0xfe, 0xd1, + 0x40, 0xeb, 0xfb, 0x3e, 0x67, 0xa1, 0x3c, 0xce, 0x84, 0x64, 0xc1, 0x21, 0x93, 0x09, 0x77, 0xc5, + 0x41, 0xa8, 0x26, 0x13, 0xf9, 0x54, 0xb2, 0x9e, 0x42, 0x37, 0xe6, 0x41, 0x71, 0xb7, 0xc8, 0xcd, + 0x6d, 0xad, 0xe8, 0x02, 0x89, 0x08, 0x60, 0x91, 0x40, 0xd3, 0x08, 0xaf, 0xf0, 0x88, 0x32, 0xb5, + 0xec, 0x59, 0xe4, 0xf1, 0xcf, 0x06, 0xda, 0xd0, 0xb8, 0xe7, 0x54, 0xb2, 0xd0, 0xcd, 0xba, 0xfd, + 0x24, 0x4a, 0xbd, 0x7e, 0x9c, 0xca, 0x2e, 0x0f, 0x98, 0x60, 0x09, 0x67, 0x02, 0x82, 0x2c, 0x40, + 0x90, 0x8f, 0x8a, 0xdc, 0x7c, 0x32, 0x14, 0xc4, 0xd7, 0x3c, 0x22, 0x2f, 0x89, 0x44, 0x5e, 0x32, + 0xcb, 0x28, 0xb3, 0x59, 0xe0, 0x1f, 0xd0, 0xda, 0x10, 0xb0, 0xc3, 0x85, 0x4c, 0xb8, 0x93, 0xaa, + 0x41, 0xb7, 0x7c, 0x1f, 0x62, 0xbc, 0x06, 0x31, 0x76, 0x8a, 0xdc, 0x7c, 0x5c, 0x1b, 0xa3, 0x57, + 0xe1, 0x10, 0xea, 0xfb, 0x65, 0x82, 0xa9, 0xc2, 0xf8, 0x57, 0x03, 0x6d, 0x8e, 0x05, 0x1d, 0xb1, + 0xc4, 0x65, 0xa1, 0xe4, 0x3e, 0x83, 0x10, 0xaf, 0x43, 0x88, 0xa7, 0x45, 0x6e, 0xee, 0x4e, 0x0f, + 0x11, 0x5f, 0x72, 0xcb, 0x2c, 0xb3, 0xda, 0xe0, 0x9f, 0x0c, 0xf4, 0x70, 0x2c, 0xf6, 0x38, 0x0d, + 0x02, 0x9a, 0x64, 0x90, 0x67, 0x11, 0xf2, 0xec, 0x15, 0xb9, 0xb9, 0x33, 0x3d, 0x8f, 0xd0, 0xc4, + 0x32, 0xcc, 0x4c, 0x06, 0x38, 0x46, 0xef, 0x0c, 0xe1, 0xda, 0xd9, 0xe7, 0x2c, 0xfb, 0x22, 0x0d, + 0x1c, 0x96, 0x40, 0x00, 0x04, 0x01, 0xde, 0x2f, 0x72, 0x73, 0xab, 0x36, 0x80, 0x93, 0x91, 0x33, + 0x96, 0x91, 0x10, 0x18, 0xa5, 0xf3, 0x44, 0x45, 0x9c, 0x21, 0xf3, 0x98, 0x25, 0x2f, 0x58, 0xd2, + 0xe1, 0xe2, 0xec, 0x38, 0xa6, 0x2e, 0xfb, 0x4a, 0x50, 0x8f, 0x55, 0xbb, 0x5e, 0x1a, 0xdd, 0x0a, + 0x02, 0x08, 0xaa, 0xdb, 0x33, 0x22, 0x14, 0x85, 0xa4, 0x8a, 0x33, 0xd2, 0xf1, 0x34, 0x5d, 0x1c, + 0xa0, 0x55, 0x0d, 0x39, 0x64, 0x41, 0x94, 0x5c, 0xeb, 0xf5, 0x36, 0xd8, 0x3e, 0x2e, 0x72, 0x73, + 0x73, 0xc8, 0x36, 0x00, 0x74, 0x6d, 0xab, 0x93, 0xf4, 0xd4, 0x5b, 0x5e, 0xd7, 0x75, 0x9b, 0xd1, + 0x5e, 0x3b, 0x93, 0x4c, 0x74, 0x98, 0x2f, 0xe9, 0xa8, 0xef, 0x32, 0xf8, 0x7e, 0x5c, 0xe4, 0xe6, + 0x87, 0x43, 0xbe, 0x09, 0xa3, 0x3d, 0xe2, 0x28, 0x1a, 0xe9, 0x29, 0x5e, 0x6d, 0x82, 0x59, 0x1c, + 0xd4, 0x61, 0xf0, 0x50, 0xe3, 0xbe, 0x49, 0xb8, 0x64, 0xe3, 0xa3, 0xdc, 0x19, 0xdd, 0xff, 0x65, + 0x94, 0xef, 0x14, 0x6d, 0x6a, 0x96, 0x99, 0x3c, 0xf0, 0x6f, 0x06, 0xda, 0xd4, 0xc0, 0x89, 0x27, + 0xd8, 0x73, 0x2e, 0x64, 0xe3, 0xee, 0xda, 0xdc, 0xd6, 0x62, 0xfb, 0x93, 0x22, 0x37, 0xf7, 0x86, + 0xf2, 0x4c, 0x3b, 0x24, 0x89, 0xcf, 0x85, 0xb4, 0xec, 0x59, 0x7d, 0x30, 0x41, 0x0f, 0x5a, 0xbe, + 0xdf, 0xf2, 0xbc, 0x84, 0x79, 0xaa, 0xf0, 0x65, 0x2a, 0xe3, 0x54, 0xc2, 0x48, 0xee, 0xc1, 0x48, + 0x36, 0x8a, 0xdc, 0x7c, 0x57, 0x47, 0x50, 0x67, 0x0f, 0xbd, 0x44, 0x92, 0x08, 0xa0, 0xe5, 0x04, + 0xc6, 0xa9, 0x58, 0xff, 0xab, 0x43, 0xa8, 0xe6, 0x0b, 0x57, 0x83, 0xc7, 0x1c, 0xad, 0x8c, 0x91, + 0xd9, 0x3f, 0xfe, 0x5a, 0x7f, 0xfd, 0xda, 0x8f, 0x8a, 0xdc, 0xdc, 0x98, 0x96, 0x87, 0xb8, 0xe2, + 0x85, 0x65, 0x4f, 0x10, 0x9b, 0x60, 0xd5, 0x3d, 0xe9, 0xea, 0xef, 0xe8, 0x8c, 0x56, 0x72, 0x20, + 0xc7, 0x5b, 0x75, 0x4f, 0xba, 0xd6, 0x1f, 0x37, 0x51, 0xa3, 0x6e, 0x02, 0x47, 0x7e, 0x24, 0xf1, + 0x23, 0xb4, 0xb0, 0x1f, 0xf9, 0x69, 0x10, 0x96, 0xed, 0xbd, 0x51, 0xe4, 0xe6, 0x72, 0x79, 0xe0, + 0xc0, 0xba, 0x65, 0x97, 0x00, 0xbc, 0x89, 0xe6, 0x4f, 0x5a, 0x03, 0x2e, 0xca, 0x74, 0x15, 0xe4, + 0x80, 0xd0, 0x01, 0x17, 0x96, 0xad, 0xeb, 0x0a, 0xf8, 0x2d, 0x00, 0xe7, 0x46, 0x81, 0xd9, 0x05, + 0x10, 0xea, 0xf8, 0x33, 0xb4, 0x3c, 0x3c, 0x62, 0xfd, 0xb1, 0x5f, 0x29, 0x72, 0xf3, 0xbe, 0x26, + 0x5c, 0x9b, 0xe9, 0x30, 0x01, 0xef, 0xa3, 0x3b, 0x57, 0x0b, 0xb0, 0x71, 0xe7, 0x61, 0xe3, 0xae, + 0x16, 0xb9, 0xf9, 0xe0, 0xba, 0x84, 0xde, 0x9c, 0x23, 0x14, 0xeb, 0x17, 0x03, 0xbd, 0x5d, 0x7b, + 0x09, 0x0a, 0xa8, 0xc7, 0xf0, 0x7b, 0x68, 0xbe, 0xcb, 0xa5, 0xcf, 0xca, 0x01, 0xdd, 0x2b, 0x72, + 0xf3, 0xb6, 0x56, 0x96, 0x6a, 0xd9, 0xb2, 0x75, 0x19, 0xaf, 0xa3, 0x5b, 0xb0, 0x6d, 0xf5, 0x74, + 0xee, 0x16, 0xb9, 0xb9, 0x74, 0x75, 0x61, 0xb1, 0x6c, 0x28, 0x2a, 0x50, 0x37, 0x8b, 0x59, 0x39, + 0x99, 0x0a, 0x48, 0x66, 0x31, 0xb3, 0x6c, 0x28, 0x5a, 0x7f, 0x1a, 0x68, 0xa5, 0x2e, 0x8f, 0xfd, + 0xac, 0xd5, 0x39, 0x7c, 0xa6, 0xee, 0x47, 0x95, 0x7f, 0x89, 0x31, 0x7a, 0x3f, 0x1a, 0xfa, 0x5b, + 0x54, 0x90, 0xf8, 0x08, 0x2d, 0x40, 0x47, 0xea, 0x05, 0xce, 0x6d, 0x2d, 0xed, 0x6e, 0x6c, 0x5f, + 0xdd, 0x1b, 0xb7, 0xc7, 0xf6, 0x5f, 0x7d, 0x7d, 0x1c, 0xe8, 0x96, 0x5d, 0xea, 0xb4, 0xdf, 0x7a, + 0xf9, 0x6f, 0xf3, 0xc6, 0xcb, 0xf3, 0xa6, 0xf1, 0xd7, 0x79, 0xd3, 0xf8, 0xe7, 0xbc, 0x69, 0xfc, + 0xfe, 0x5f, 0xf3, 0x86, 0xb3, 0x00, 0x57, 0xcb, 0xbd, 0x57, 0x01, 0x00, 0x00, 0xff, 0xff, 0x47, + 0x8f, 0xbe, 0x24, 0xc0, 0x0a, 0x00, 0x00, +} diff --git a/dbtesterpb/config_analyze_machine.proto b/dbtesterpb/config_analyze_machine.proto new file mode 100644 index 00000000..22ec3650 --- /dev/null +++ b/dbtesterpb/config_analyze_machine.proto @@ -0,0 +1,57 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// ConfigAnalyzeMachineInitial represents common control options and test data information for analyzer machine. +message ConfigAnalyzeMachineInitial { + string DatabaseID = 1; + string DatabaseTag = 2; + string DatabaseDescription = 3; + + string PathPrefix = 4 [(gogoproto.moretags) = "yaml:\"path_prefix\""]; + string ClientSystemMetricsInterpolatedPath = 5 [(gogoproto.moretags) = "yaml:\"client_system_metrics_interpolated_path\""]; + string ClientLatencyThroughputTimeseriesPath = 6 [(gogoproto.moretags) = "yaml:\"client_latency_throughput_timeseries_path\""]; + string ClientLatencyDistributionAllPath = 7 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_all_path\""]; + string ClientLatencyDistributionPercentilePath = 8 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_percentile_path\""]; + string ClientLatencyDistributionSummaryPath = 9 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_summary_path\""]; + string ClientLatencyByKeyNumberPath = 10 [(gogoproto.moretags) = "yaml:\"client_latency_by_key_number_path\""]; + string ServerDiskSpaceUsageSummaryPath = 11 [(gogoproto.moretags) = "yaml:\"server_disk_space_usage_summary_path\""]; + string ServerMemoryByKeyNumberPath = 12 [(gogoproto.moretags) = "yaml:\"server_memory_by_key_number_path\""]; + string ServerReadBytesDeltaByKeyNumberPath = 13 [(gogoproto.moretags) = "yaml:\"server_read_bytes_delta_by_key_number_path\""]; + string ServerWriteBytesDeltaByKeyNumberPath = 14 [(gogoproto.moretags) = "yaml:\"server_write_bytes_delta_by_key_number_path\""]; + repeated string ServerSystemMetricsInterpolatedPathList = 15 [(gogoproto.moretags) = "yaml:\"server_system_metrics_interpolated_path_list\""]; + string AllAggregatedOutputPath = 16 [(gogoproto.moretags) = "yaml:\"all_aggregated_output_path\""]; +} + +message ConfigAnalyzeMachineAllAggregatedOutput { + string AllAggregatedOutputPathCSV = 1 [(gogoproto.moretags) = "yaml:\"all_aggregated_output_path_csv\""]; + string AllAggregatedOutputPathTXT = 2 [(gogoproto.moretags) = "yaml:\"all_aggregated_output_path_txt\""]; +} + +// ConfigAnalyzeMachinePlot defines plot configuration. +message ConfigAnalyzeMachinePlot { + string Column = 1 [(gogoproto.moretags) = "yaml:\"column\""]; + string XAxis = 2 [(gogoproto.moretags) = "yaml:\"x_axis\""]; + string YAxis = 3 [(gogoproto.moretags) = "yaml:\"y_axis\""]; + string OutputPathCSV = 4 [(gogoproto.moretags) = "yaml:\"output_path_csv\""]; + repeated string OutputPathList = 5 [(gogoproto.moretags) = "yaml:\"output_path_list\""]; +} + +// ConfigAnalyzeMachineImage defines image configuration. +message ConfigAnalyzeMachineImage { + string Title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; + string Path = 2 [(gogoproto.moretags) = "yaml:\"path\""]; + string Type = 3 [(gogoproto.moretags) = "yaml:\"type\""]; +} + +// ConfigAnalyzeMachineREADME defines read configuration. +message ConfigAnalyzeMachineREADME { + string OutputPath = 1 [(gogoproto.moretags) = "yaml:\"output_path\""]; + repeated ConfigAnalyzeMachineImage Images = 2 [(gogoproto.moretags) = "yaml:\"images\""]; +} diff --git a/dbtesterpb/config_client_machine.pb.go b/dbtesterpb/config_client_machine.pb.go new file mode 100644 index 00000000..ea5b25e6 --- /dev/null +++ b/dbtesterpb/config_client_machine.pb.go @@ -0,0 +1,2706 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/config_client_machine.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// ConfigClientMachineInitial represents common control options on client machine. +type ConfigClientMachineInitial struct { + PathPrefix string `protobuf:"bytes,1,opt,name=PathPrefix,proto3" json:"PathPrefix,omitempty" yaml:"path_prefix"` + LogPath string `protobuf:"bytes,2,opt,name=LogPath,proto3" json:"LogPath,omitempty" yaml:"log_path"` + ClientSystemMetricsPath string `protobuf:"bytes,3,opt,name=ClientSystemMetricsPath,proto3" json:"ClientSystemMetricsPath,omitempty" yaml:"client_system_metrics_path"` + ClientSystemMetricsInterpolatedPath string `protobuf:"bytes,4,opt,name=ClientSystemMetricsInterpolatedPath,proto3" json:"ClientSystemMetricsInterpolatedPath,omitempty" yaml:"client_system_metrics_interpolated_path"` + ClientLatencyThroughputTimeseriesPath string `protobuf:"bytes,5,opt,name=ClientLatencyThroughputTimeseriesPath,proto3" json:"ClientLatencyThroughputTimeseriesPath,omitempty" yaml:"client_latency_throughput_timeseries_path"` + ClientLatencyDistributionAllPath string `protobuf:"bytes,6,opt,name=ClientLatencyDistributionAllPath,proto3" json:"ClientLatencyDistributionAllPath,omitempty" yaml:"client_latency_distribution_all_path"` + ClientLatencyDistributionPercentilePath string `protobuf:"bytes,7,opt,name=ClientLatencyDistributionPercentilePath,proto3" json:"ClientLatencyDistributionPercentilePath,omitempty" yaml:"client_latency_distribution_percentile_path"` + ClientLatencyDistributionSummaryPath string `protobuf:"bytes,8,opt,name=ClientLatencyDistributionSummaryPath,proto3" json:"ClientLatencyDistributionSummaryPath,omitempty" yaml:"client_latency_distribution_summary_path"` + ClientLatencyByKeyNumberPath string `protobuf:"bytes,9,opt,name=ClientLatencyByKeyNumberPath,proto3" json:"ClientLatencyByKeyNumberPath,omitempty" yaml:"client_latency_by_key_number_path"` + ServerDiskSpaceUsageSummaryPath string `protobuf:"bytes,10,opt,name=ServerDiskSpaceUsageSummaryPath,proto3" json:"ServerDiskSpaceUsageSummaryPath,omitempty" yaml:"server_disk_space_usage_summary_path"` + GoogleCloudProjectName string `protobuf:"bytes,100,opt,name=GoogleCloudProjectName,proto3" json:"GoogleCloudProjectName,omitempty" yaml:"google_cloud_project_name"` + GoogleCloudStorageKeyPath string `protobuf:"bytes,101,opt,name=GoogleCloudStorageKeyPath,proto3" json:"GoogleCloudStorageKeyPath,omitempty" yaml:"google_cloud_storage_key_path"` + GoogleCloudStorageKey string `protobuf:"bytes,102,opt,name=GoogleCloudStorageKey,proto3" json:"GoogleCloudStorageKey,omitempty"` + GoogleCloudStorageBucketName string `protobuf:"bytes,103,opt,name=GoogleCloudStorageBucketName,proto3" json:"GoogleCloudStorageBucketName,omitempty" yaml:"google_cloud_storage_bucket_name"` + GoogleCloudStorageSubDirectory string `protobuf:"bytes,104,opt,name=GoogleCloudStorageSubDirectory,proto3" json:"GoogleCloudStorageSubDirectory,omitempty" yaml:"google_cloud_storage_sub_directory"` +} + +func (m *ConfigClientMachineInitial) Reset() { *m = ConfigClientMachineInitial{} } +func (m *ConfigClientMachineInitial) String() string { return proto.CompactTextString(m) } +func (*ConfigClientMachineInitial) ProtoMessage() {} +func (*ConfigClientMachineInitial) Descriptor() ([]byte, []int) { + return fileDescriptorConfigClientMachine, []int{0} +} + +// ConfigClientMachineBenchmarkOptions represents benchmark options. +type ConfigClientMachineBenchmarkOptions struct { + Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty" yaml:"type"` + RequestNumber int64 `protobuf:"varint,2,opt,name=RequestNumber,proto3" json:"RequestNumber,omitempty" yaml:"request_number"` + ConnectionNumber int64 `protobuf:"varint,3,opt,name=ConnectionNumber,proto3" json:"ConnectionNumber,omitempty" yaml:"connection_number"` + ClientNumber int64 `protobuf:"varint,4,opt,name=ClientNumber,proto3" json:"ClientNumber,omitempty" yaml:"client_number"` + ConnectionClientNumbers []int64 `protobuf:"varint,5,rep,packed,name=ConnectionClientNumbers" json:"ConnectionClientNumbers,omitempty" yaml:"connection_client_numbers"` + RateLimitRequestsPerSecond int64 `protobuf:"varint,6,opt,name=RateLimitRequestsPerSecond,proto3" json:"RateLimitRequestsPerSecond,omitempty" yaml:"rate_limit_requests_per_second"` + SameKey bool `protobuf:"varint,7,opt,name=SameKey,proto3" json:"SameKey,omitempty" yaml:"same_key"` + KeySizeBytes int64 `protobuf:"varint,8,opt,name=KeySizeBytes,proto3" json:"KeySizeBytes,omitempty" yaml:"key_size_bytes"` + ValueSizeBytes int64 `protobuf:"varint,9,opt,name=ValueSizeBytes,proto3" json:"ValueSizeBytes,omitempty" yaml:"value_size_bytes"` + StaleRead bool `protobuf:"varint,10,opt,name=StaleRead,proto3" json:"StaleRead,omitempty" yaml:"stale_read"` +} + +func (m *ConfigClientMachineBenchmarkOptions) Reset() { *m = ConfigClientMachineBenchmarkOptions{} } +func (m *ConfigClientMachineBenchmarkOptions) String() string { return proto.CompactTextString(m) } +func (*ConfigClientMachineBenchmarkOptions) ProtoMessage() {} +func (*ConfigClientMachineBenchmarkOptions) Descriptor() ([]byte, []int) { + return fileDescriptorConfigClientMachine, []int{1} +} + +// ConfigClientMachineBenchmarkSteps represents benchmark steps. +type ConfigClientMachineBenchmarkSteps struct { + Step1StartDatabase bool `protobuf:"varint,1,opt,name=Step1StartDatabase,proto3" json:"Step1StartDatabase,omitempty" yaml:"step1_start_database"` + Step2StressDatabase bool `protobuf:"varint,2,opt,name=Step2StressDatabase,proto3" json:"Step2StressDatabase,omitempty" yaml:"step2_stress_database"` + Step3StopDatabase bool `protobuf:"varint,3,opt,name=Step3StopDatabase,proto3" json:"Step3StopDatabase,omitempty" yaml:"step3_stop_database"` + Step4UploadLogs bool `protobuf:"varint,4,opt,name=Step4UploadLogs,proto3" json:"Step4UploadLogs,omitempty" yaml:"step4_upload_logs"` +} + +func (m *ConfigClientMachineBenchmarkSteps) Reset() { *m = ConfigClientMachineBenchmarkSteps{} } +func (m *ConfigClientMachineBenchmarkSteps) String() string { return proto.CompactTextString(m) } +func (*ConfigClientMachineBenchmarkSteps) ProtoMessage() {} +func (*ConfigClientMachineBenchmarkSteps) Descriptor() ([]byte, []int) { + return fileDescriptorConfigClientMachine, []int{2} +} + +// ConfigClientMachineAgentControl represents control options on client machine. +type ConfigClientMachineAgentControl struct { + DatabaseID string `protobuf:"bytes,1,opt,name=DatabaseID,proto3" json:"DatabaseID,omitempty" yaml:"database_id"` + DatabaseDescription string `protobuf:"bytes,2,opt,name=DatabaseDescription,proto3" json:"DatabaseDescription,omitempty" yaml:"database_description"` + DatabaseTag string `protobuf:"bytes,3,opt,name=DatabaseTag,proto3" json:"DatabaseTag,omitempty" yaml:"database_tag"` + PeerIPs []string `protobuf:"bytes,4,rep,name=PeerIPs" json:"PeerIPs,omitempty" yaml:"peer_ips"` + PeerIPsString string `protobuf:"bytes,5,opt,name=PeerIPsString,proto3" json:"PeerIPsString,omitempty" yaml:"peer_ips_string"` + AgentPortToConnect int64 `protobuf:"varint,6,opt,name=AgentPortToConnect,proto3" json:"AgentPortToConnect,omitempty" yaml:"agent_port_to_connect"` + AgentEndpoints []string `protobuf:"bytes,7,rep,name=AgentEndpoints" json:"AgentEndpoints,omitempty" yaml:"agent_endpoints"` + DatabasePortToConnect int64 `protobuf:"varint,8,opt,name=DatabasePortToConnect,proto3" json:"DatabasePortToConnect,omitempty" yaml:"database_port_to_connect"` + DatabaseEndpoints []string `protobuf:"bytes,9,rep,name=DatabaseEndpoints" json:"DatabaseEndpoints,omitempty" yaml:"database_endpoints"` + Flag_Etcd_V2_3 *Flag_Etcd_V2_3 `protobuf:"bytes,100,opt,name=flag__etcd__v2_3,json=flagEtcdV23" json:"flag__etcd__v2_3,omitempty" yaml:"etcd__v2_3"` + Flag_Etcd_V3_1 *Flag_Etcd_V3_1 `protobuf:"bytes,101,opt,name=flag__etcd__v3_1,json=flagEtcdV31" json:"flag__etcd__v3_1,omitempty" yaml:"etcd__v3_1"` + Flag_Etcd_V3_2 *Flag_Etcd_V3_2 `protobuf:"bytes,102,opt,name=flag__etcd__v3_2,json=flagEtcdV32" json:"flag__etcd__v3_2,omitempty" yaml:"etcd__v3_2"` + Flag_Etcd_Tip *Flag_Etcd_Tip `protobuf:"bytes,103,opt,name=flag__etcd__tip,json=flagEtcdTip" json:"flag__etcd__tip,omitempty" yaml:"etcd__tip"` + Flag_Zookeeper_R3_4_9 *Flag_Zookeeper_R3_4_9 `protobuf:"bytes,200,opt,name=flag__zookeeper__r3_4_9,json=flagZookeeperR349" json:"flag__zookeeper__r3_4_9,omitempty" yaml:"zookeeper__r3_4_9"` + Flag_Zookeeper_R3_5_2Alpha *Flag_Zookeeper_R3_5_2Alpha `protobuf:"bytes,201,opt,name=flag__zookeeper__r3_5_2_alpha,json=flagZookeeperR352Alpha" json:"flag__zookeeper__r3_5_2_alpha,omitempty" yaml:"zookeeper__r3_5_2_alpha"` + Flag_Consul_V0_7_5 *Flag_Consul_V0_7_5 `protobuf:"bytes,300,opt,name=flag__consul__v0_7_5,json=flagConsulV075" json:"flag__consul__v0_7_5,omitempty" yaml:"consul__v0_7_5"` + Flag_Consul_V0_8_0 *Flag_Consul_V0_8_0 `protobuf:"bytes,301,opt,name=flag__consul__v0_8_0,json=flagConsulV080" json:"flag__consul__v0_8_0,omitempty" yaml:"consul__v0_8_0"` + Flag_Cetcd_Beta *Flag_Cetcd_Beta `protobuf:"bytes,400,opt,name=flag__cetcd__beta,json=flagCetcdBeta" json:"flag__cetcd__beta,omitempty" yaml:"cetcd__beta"` + Flag_Zetcd_Beta *Flag_Zetcd_Beta `protobuf:"bytes,500,opt,name=flag__zetcd__beta,json=flagZetcdBeta" json:"flag__zetcd__beta,omitempty" yaml:"zetcd__beta"` + ConfigClientMachineBenchmarkOptions *ConfigClientMachineBenchmarkOptions `protobuf:"bytes,1000,opt,name=ConfigClientMachineBenchmarkOptions" json:"ConfigClientMachineBenchmarkOptions,omitempty" yaml:"benchmark_options"` + ConfigClientMachineBenchmarkSteps *ConfigClientMachineBenchmarkSteps `protobuf:"bytes,1001,opt,name=ConfigClientMachineBenchmarkSteps" json:"ConfigClientMachineBenchmarkSteps,omitempty" yaml:"benchmark_steps"` +} + +func (m *ConfigClientMachineAgentControl) Reset() { *m = ConfigClientMachineAgentControl{} } +func (m *ConfigClientMachineAgentControl) String() string { return proto.CompactTextString(m) } +func (*ConfigClientMachineAgentControl) ProtoMessage() {} +func (*ConfigClientMachineAgentControl) Descriptor() ([]byte, []int) { + return fileDescriptorConfigClientMachine, []int{3} +} + +func init() { + proto.RegisterType((*ConfigClientMachineInitial)(nil), "dbtesterpb.ConfigClientMachineInitial") + proto.RegisterType((*ConfigClientMachineBenchmarkOptions)(nil), "dbtesterpb.ConfigClientMachineBenchmarkOptions") + proto.RegisterType((*ConfigClientMachineBenchmarkSteps)(nil), "dbtesterpb.ConfigClientMachineBenchmarkSteps") + proto.RegisterType((*ConfigClientMachineAgentControl)(nil), "dbtesterpb.ConfigClientMachineAgentControl") +} +func (m *ConfigClientMachineInitial) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigClientMachineInitial) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.PathPrefix) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.PathPrefix))) + i += copy(dAtA[i:], m.PathPrefix) + } + if len(m.LogPath) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.LogPath))) + i += copy(dAtA[i:], m.LogPath) + } + if len(m.ClientSystemMetricsPath) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientSystemMetricsPath))) + i += copy(dAtA[i:], m.ClientSystemMetricsPath) + } + if len(m.ClientSystemMetricsInterpolatedPath) > 0 { + dAtA[i] = 0x22 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientSystemMetricsInterpolatedPath))) + i += copy(dAtA[i:], m.ClientSystemMetricsInterpolatedPath) + } + if len(m.ClientLatencyThroughputTimeseriesPath) > 0 { + dAtA[i] = 0x2a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientLatencyThroughputTimeseriesPath))) + i += copy(dAtA[i:], m.ClientLatencyThroughputTimeseriesPath) + } + if len(m.ClientLatencyDistributionAllPath) > 0 { + dAtA[i] = 0x32 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionAllPath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionAllPath) + } + if len(m.ClientLatencyDistributionPercentilePath) > 0 { + dAtA[i] = 0x3a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionPercentilePath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionPercentilePath) + } + if len(m.ClientLatencyDistributionSummaryPath) > 0 { + dAtA[i] = 0x42 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientLatencyDistributionSummaryPath))) + i += copy(dAtA[i:], m.ClientLatencyDistributionSummaryPath) + } + if len(m.ClientLatencyByKeyNumberPath) > 0 { + dAtA[i] = 0x4a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ClientLatencyByKeyNumberPath))) + i += copy(dAtA[i:], m.ClientLatencyByKeyNumberPath) + } + if len(m.ServerDiskSpaceUsageSummaryPath) > 0 { + dAtA[i] = 0x52 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.ServerDiskSpaceUsageSummaryPath))) + i += copy(dAtA[i:], m.ServerDiskSpaceUsageSummaryPath) + } + if len(m.GoogleCloudProjectName) > 0 { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.GoogleCloudProjectName))) + i += copy(dAtA[i:], m.GoogleCloudProjectName) + } + if len(m.GoogleCloudStorageKeyPath) > 0 { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.GoogleCloudStorageKeyPath))) + i += copy(dAtA[i:], m.GoogleCloudStorageKeyPath) + } + if len(m.GoogleCloudStorageKey) > 0 { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.GoogleCloudStorageKey))) + i += copy(dAtA[i:], m.GoogleCloudStorageKey) + } + if len(m.GoogleCloudStorageBucketName) > 0 { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.GoogleCloudStorageBucketName))) + i += copy(dAtA[i:], m.GoogleCloudStorageBucketName) + } + if len(m.GoogleCloudStorageSubDirectory) > 0 { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.GoogleCloudStorageSubDirectory))) + i += copy(dAtA[i:], m.GoogleCloudStorageSubDirectory) + } + return i, nil +} + +func (m *ConfigClientMachineBenchmarkOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigClientMachineBenchmarkOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Type) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + } + if m.RequestNumber != 0 { + dAtA[i] = 0x10 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.RequestNumber)) + } + if m.ConnectionNumber != 0 { + dAtA[i] = 0x18 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.ConnectionNumber)) + } + if m.ClientNumber != 0 { + dAtA[i] = 0x20 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.ClientNumber)) + } + if len(m.ConnectionClientNumbers) > 0 { + dAtA2 := make([]byte, len(m.ConnectionClientNumbers)*10) + var j1 int + for _, num1 := range m.ConnectionClientNumbers { + num := uint64(num1) + for num >= 1<<7 { + dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA2[j1] = uint8(num) + j1++ + } + dAtA[i] = 0x2a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(j1)) + i += copy(dAtA[i:], dAtA2[:j1]) + } + if m.RateLimitRequestsPerSecond != 0 { + dAtA[i] = 0x30 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.RateLimitRequestsPerSecond)) + } + if m.SameKey { + dAtA[i] = 0x38 + i++ + if m.SameKey { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.KeySizeBytes != 0 { + dAtA[i] = 0x40 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.KeySizeBytes)) + } + if m.ValueSizeBytes != 0 { + dAtA[i] = 0x48 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.ValueSizeBytes)) + } + if m.StaleRead { + dAtA[i] = 0x50 + i++ + if m.StaleRead { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ConfigClientMachineBenchmarkSteps) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigClientMachineBenchmarkSteps) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Step1StartDatabase { + dAtA[i] = 0x8 + i++ + if m.Step1StartDatabase { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.Step2StressDatabase { + dAtA[i] = 0x10 + i++ + if m.Step2StressDatabase { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.Step3StopDatabase { + dAtA[i] = 0x18 + i++ + if m.Step3StopDatabase { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.Step4UploadLogs { + dAtA[i] = 0x20 + i++ + if m.Step4UploadLogs { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ConfigClientMachineAgentControl) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigClientMachineAgentControl) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.DatabaseID) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.DatabaseID))) + i += copy(dAtA[i:], m.DatabaseID) + } + if len(m.DatabaseDescription) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.DatabaseDescription))) + i += copy(dAtA[i:], m.DatabaseDescription) + } + if len(m.DatabaseTag) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.DatabaseTag))) + i += copy(dAtA[i:], m.DatabaseTag) + } + if len(m.PeerIPs) > 0 { + for _, s := range m.PeerIPs { + dAtA[i] = 0x22 + 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.PeerIPsString) > 0 { + dAtA[i] = 0x2a + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(len(m.PeerIPsString))) + i += copy(dAtA[i:], m.PeerIPsString) + } + if m.AgentPortToConnect != 0 { + dAtA[i] = 0x30 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.AgentPortToConnect)) + } + if len(m.AgentEndpoints) > 0 { + for _, s := range m.AgentEndpoints { + dAtA[i] = 0x3a + 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.DatabasePortToConnect != 0 { + dAtA[i] = 0x40 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.DatabasePortToConnect)) + } + if len(m.DatabaseEndpoints) > 0 { + for _, s := range m.DatabaseEndpoints { + dAtA[i] = 0x4a + 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.Flag_Etcd_V2_3 != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Etcd_V2_3.Size())) + n3, err := m.Flag_Etcd_V2_3.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + if m.Flag_Etcd_V3_1 != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Etcd_V3_1.Size())) + n4, err := m.Flag_Etcd_V3_1.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.Flag_Etcd_V3_2 != nil { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Etcd_V3_2.Size())) + n5, err := m.Flag_Etcd_V3_2.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.Flag_Etcd_Tip != nil { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Etcd_Tip.Size())) + n6, err := m.Flag_Etcd_Tip.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if m.Flag_Zookeeper_R3_4_9 != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Zookeeper_R3_4_9.Size())) + n7, err := m.Flag_Zookeeper_R3_4_9.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.Flag_Zookeeper_R3_5_2Alpha != nil { + dAtA[i] = 0xca + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Zookeeper_R3_5_2Alpha.Size())) + n8, err := m.Flag_Zookeeper_R3_5_2Alpha.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.Flag_Consul_V0_7_5 != nil { + dAtA[i] = 0xe2 + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Consul_V0_7_5.Size())) + n9, err := m.Flag_Consul_V0_7_5.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.Flag_Consul_V0_8_0 != nil { + dAtA[i] = 0xea + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Consul_V0_8_0.Size())) + n10, err := m.Flag_Consul_V0_8_0.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + if m.Flag_Cetcd_Beta != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x19 + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Cetcd_Beta.Size())) + n11, err := m.Flag_Cetcd_Beta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.Flag_Zetcd_Beta != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1f + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.Flag_Zetcd_Beta.Size())) + n12, err := m.Flag_Zetcd_Beta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.ConfigClientMachineBenchmarkOptions != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x3e + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.ConfigClientMachineBenchmarkOptions.Size())) + n13, err := m.ConfigClientMachineBenchmarkOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + if m.ConfigClientMachineBenchmarkSteps != nil { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x3e + i++ + i = encodeVarintConfigClientMachine(dAtA, i, uint64(m.ConfigClientMachineBenchmarkSteps.Size())) + n14, err := m.ConfigClientMachineBenchmarkSteps.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + return i, nil +} + +func encodeFixed64ConfigClientMachine(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32ConfigClientMachine(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintConfigClientMachine(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ConfigClientMachineInitial) Size() (n int) { + var l int + _ = l + l = len(m.PathPrefix) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.LogPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientSystemMetricsPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientSystemMetricsInterpolatedPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientLatencyThroughputTimeseriesPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionAllPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionPercentilePath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientLatencyDistributionSummaryPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ClientLatencyByKeyNumberPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.ServerDiskSpaceUsageSummaryPath) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.GoogleCloudProjectName) + if l > 0 { + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.GoogleCloudStorageKeyPath) + if l > 0 { + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.GoogleCloudStorageKey) + if l > 0 { + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.GoogleCloudStorageBucketName) + if l > 0 { + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.GoogleCloudStorageSubDirectory) + if l > 0 { + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + return n +} + +func (m *ConfigClientMachineBenchmarkOptions) Size() (n int) { + var l int + _ = l + l = len(m.Type) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + if m.RequestNumber != 0 { + n += 1 + sovConfigClientMachine(uint64(m.RequestNumber)) + } + if m.ConnectionNumber != 0 { + n += 1 + sovConfigClientMachine(uint64(m.ConnectionNumber)) + } + if m.ClientNumber != 0 { + n += 1 + sovConfigClientMachine(uint64(m.ClientNumber)) + } + if len(m.ConnectionClientNumbers) > 0 { + l = 0 + for _, e := range m.ConnectionClientNumbers { + l += sovConfigClientMachine(uint64(e)) + } + n += 1 + sovConfigClientMachine(uint64(l)) + l + } + if m.RateLimitRequestsPerSecond != 0 { + n += 1 + sovConfigClientMachine(uint64(m.RateLimitRequestsPerSecond)) + } + if m.SameKey { + n += 2 + } + if m.KeySizeBytes != 0 { + n += 1 + sovConfigClientMachine(uint64(m.KeySizeBytes)) + } + if m.ValueSizeBytes != 0 { + n += 1 + sovConfigClientMachine(uint64(m.ValueSizeBytes)) + } + if m.StaleRead { + n += 2 + } + return n +} + +func (m *ConfigClientMachineBenchmarkSteps) Size() (n int) { + var l int + _ = l + if m.Step1StartDatabase { + n += 2 + } + if m.Step2StressDatabase { + n += 2 + } + if m.Step3StopDatabase { + n += 2 + } + if m.Step4UploadLogs { + n += 2 + } + return n +} + +func (m *ConfigClientMachineAgentControl) Size() (n int) { + var l int + _ = l + l = len(m.DatabaseID) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.DatabaseDescription) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + l = len(m.DatabaseTag) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + if len(m.PeerIPs) > 0 { + for _, s := range m.PeerIPs { + l = len(s) + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + } + l = len(m.PeerIPsString) + if l > 0 { + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + if m.AgentPortToConnect != 0 { + n += 1 + sovConfigClientMachine(uint64(m.AgentPortToConnect)) + } + if len(m.AgentEndpoints) > 0 { + for _, s := range m.AgentEndpoints { + l = len(s) + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + } + if m.DatabasePortToConnect != 0 { + n += 1 + sovConfigClientMachine(uint64(m.DatabasePortToConnect)) + } + if len(m.DatabaseEndpoints) > 0 { + for _, s := range m.DatabaseEndpoints { + l = len(s) + n += 1 + l + sovConfigClientMachine(uint64(l)) + } + } + if m.Flag_Etcd_V2_3 != nil { + l = m.Flag_Etcd_V2_3.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Etcd_V3_1 != nil { + l = m.Flag_Etcd_V3_1.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Etcd_V3_2 != nil { + l = m.Flag_Etcd_V3_2.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Etcd_Tip != nil { + l = m.Flag_Etcd_Tip.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Zookeeper_R3_4_9 != nil { + l = m.Flag_Zookeeper_R3_4_9.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Zookeeper_R3_5_2Alpha != nil { + l = m.Flag_Zookeeper_R3_5_2Alpha.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Consul_V0_7_5 != nil { + l = m.Flag_Consul_V0_7_5.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Consul_V0_8_0 != nil { + l = m.Flag_Consul_V0_8_0.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Cetcd_Beta != nil { + l = m.Flag_Cetcd_Beta.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.Flag_Zetcd_Beta != nil { + l = m.Flag_Zetcd_Beta.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.ConfigClientMachineBenchmarkOptions != nil { + l = m.ConfigClientMachineBenchmarkOptions.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + if m.ConfigClientMachineBenchmarkSteps != nil { + l = m.ConfigClientMachineBenchmarkSteps.Size() + n += 2 + l + sovConfigClientMachine(uint64(l)) + } + return n +} + +func sovConfigClientMachine(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozConfigClientMachine(x uint64) (n int) { + return sovConfigClientMachine(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ConfigClientMachineInitial) 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 ErrIntOverflowConfigClientMachine + } + 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: ConfigClientMachineInitial: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigClientMachineInitial: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PathPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PathPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LogPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LogPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientSystemMetricsPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientSystemMetricsPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientSystemMetricsInterpolatedPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientSystemMetricsInterpolatedPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyThroughputTimeseriesPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyThroughputTimeseriesPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionAllPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionAllPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionPercentilePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionPercentilePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyDistributionSummaryPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyDistributionSummaryPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientLatencyByKeyNumberPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientLatencyByKeyNumberPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerDiskSpaceUsageSummaryPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerDiskSpaceUsageSummaryPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 100: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudProjectName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoogleCloudProjectName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 101: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageKeyPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoogleCloudStorageKeyPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 102: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoogleCloudStorageKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 103: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageBucketName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoogleCloudStorageBucketName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 104: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageSubDirectory", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoogleCloudStorageSubDirectory = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigClientMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigClientMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigClientMachineBenchmarkOptions) 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 ErrIntOverflowConfigClientMachine + } + 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: ConfigClientMachineBenchmarkOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigClientMachineBenchmarkOptions: 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 ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestNumber", wireType) + } + m.RequestNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RequestNumber |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionNumber", wireType) + } + m.ConnectionNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConnectionNumber |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientNumber", wireType) + } + m.ClientNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClientNumber |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ConnectionClientNumbers = append(m.ConnectionClientNumbers, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ConnectionClientNumbers = append(m.ConnectionClientNumbers, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionClientNumbers", wireType) + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RateLimitRequestsPerSecond", wireType) + } + m.RateLimitRequestsPerSecond = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RateLimitRequestsPerSecond |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SameKey", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SameKey = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field KeySizeBytes", wireType) + } + m.KeySizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.KeySizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ValueSizeBytes", wireType) + } + m.ValueSizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ValueSizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StaleRead", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.StaleRead = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipConfigClientMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigClientMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigClientMachineBenchmarkSteps) 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 ErrIntOverflowConfigClientMachine + } + 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: ConfigClientMachineBenchmarkSteps: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigClientMachineBenchmarkSteps: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Step1StartDatabase", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Step1StartDatabase = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Step2StressDatabase", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Step2StressDatabase = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Step3StopDatabase", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Step3StopDatabase = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Step4UploadLogs", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Step4UploadLogs = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipConfigClientMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigClientMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigClientMachineAgentControl) 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 ErrIntOverflowConfigClientMachine + } + 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: ConfigClientMachineAgentControl: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigClientMachineAgentControl: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseDescription", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseDescription = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseTag", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseTag = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PeerIPs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PeerIPs = append(m.PeerIPs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PeerIPsString", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PeerIPsString = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentPortToConnect", wireType) + } + m.AgentPortToConnect = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AgentPortToConnect |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentEndpoints", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AgentEndpoints = append(m.AgentEndpoints, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabasePortToConnect", wireType) + } + m.DatabasePortToConnect = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DatabasePortToConnect |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseEndpoints", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + 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 ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatabaseEndpoints = append(m.DatabaseEndpoints, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 100: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V2_3", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Etcd_V2_3 == nil { + m.Flag_Etcd_V2_3 = &Flag_Etcd_V2_3{} + } + if err := m.Flag_Etcd_V2_3.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 101: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V3_1", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Etcd_V3_1 == nil { + m.Flag_Etcd_V3_1 = &Flag_Etcd_V3_1{} + } + if err := m.Flag_Etcd_V3_1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 102: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V3_2", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Etcd_V3_2 == nil { + m.Flag_Etcd_V3_2 = &Flag_Etcd_V3_2{} + } + if err := m.Flag_Etcd_V3_2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 103: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_Tip", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Etcd_Tip == nil { + m.Flag_Etcd_Tip = &Flag_Etcd_Tip{} + } + if err := m.Flag_Etcd_Tip.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 200: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zookeeper_R3_4_9", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Zookeeper_R3_4_9 == nil { + m.Flag_Zookeeper_R3_4_9 = &Flag_Zookeeper_R3_4_9{} + } + if err := m.Flag_Zookeeper_R3_4_9.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 201: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zookeeper_R3_5_2Alpha", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Zookeeper_R3_5_2Alpha == nil { + m.Flag_Zookeeper_R3_5_2Alpha = &Flag_Zookeeper_R3_5_2Alpha{} + } + if err := m.Flag_Zookeeper_R3_5_2Alpha.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 300: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Consul_V0_7_5", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Consul_V0_7_5 == nil { + m.Flag_Consul_V0_7_5 = &Flag_Consul_V0_7_5{} + } + if err := m.Flag_Consul_V0_7_5.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 301: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Consul_V0_8_0", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Consul_V0_8_0 == nil { + m.Flag_Consul_V0_8_0 = &Flag_Consul_V0_8_0{} + } + if err := m.Flag_Consul_V0_8_0.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 400: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Cetcd_Beta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Cetcd_Beta == nil { + m.Flag_Cetcd_Beta = &Flag_Cetcd_Beta{} + } + if err := m.Flag_Cetcd_Beta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 500: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zetcd_Beta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Zetcd_Beta == nil { + m.Flag_Zetcd_Beta = &Flag_Zetcd_Beta{} + } + if err := m.Flag_Zetcd_Beta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 1000: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigClientMachineBenchmarkOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigClientMachineBenchmarkOptions == nil { + m.ConfigClientMachineBenchmarkOptions = &ConfigClientMachineBenchmarkOptions{} + } + if err := m.ConfigClientMachineBenchmarkOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 1001: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigClientMachineBenchmarkSteps", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfigClientMachine + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigClientMachineBenchmarkSteps == nil { + m.ConfigClientMachineBenchmarkSteps = &ConfigClientMachineBenchmarkSteps{} + } + if err := m.ConfigClientMachineBenchmarkSteps.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfigClientMachine(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfigClientMachine + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipConfigClientMachine(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthConfigClientMachine + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfigClientMachine + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipConfigClientMachine(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthConfigClientMachine = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowConfigClientMachine = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("dbtesterpb/config_client_machine.proto", fileDescriptorConfigClientMachine) +} + +var fileDescriptorConfigClientMachine = []byte{ + // 1761 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x6d, 0x6f, 0x1b, 0x49, + 0x1d, 0x3f, 0xd7, 0xed, 0x35, 0x99, 0xb4, 0x4d, 0x33, 0x7d, 0x88, 0x9b, 0xa6, 0x99, 0xdc, 0xa6, + 0xe5, 0x5a, 0x1d, 0xcd, 0x83, 0x9d, 0xde, 0xb5, 0x08, 0x04, 0x75, 0x72, 0x40, 0x95, 0xdc, 0x9d, + 0x59, 0xe7, 0x8a, 0xa8, 0x10, 0xc3, 0x78, 0x3d, 0x59, 0xef, 0x65, 0xbd, 0xb3, 0xec, 0x8c, 0x23, + 0x1c, 0xde, 0x22, 0x21, 0x21, 0x21, 0xdd, 0xcb, 0x7b, 0xc9, 0x07, 0x80, 0xaf, 0x81, 0xca, 0x3b, + 0x3e, 0xc1, 0x0a, 0x7a, 0x42, 0x82, 0xb7, 0x2b, 0x3e, 0x00, 0x9a, 0xff, 0xae, 0xed, 0x59, 0x7b, + 0xe3, 0xf8, 0x9d, 0x77, 0xfe, 0xbf, 0xa7, 0x99, 0x9d, 0xa7, 0x35, 0xfa, 0x4e, 0xbb, 0xa5, 0xb8, + 0x54, 0x3c, 0x0a, 0x5b, 0x5b, 0x8e, 0x08, 0x8e, 0x3d, 0x97, 0x3a, 0xbe, 0xc7, 0x03, 0x45, 0xbb, + 0xcc, 0xe9, 0x78, 0x01, 0xdf, 0x0c, 0x23, 0xa1, 0x04, 0x46, 0x23, 0xdc, 0xca, 0x53, 0xd7, 0x53, + 0x9d, 0x5e, 0x6b, 0xd3, 0x11, 0xdd, 0x2d, 0x57, 0xb8, 0x62, 0x0b, 0x20, 0xad, 0xde, 0x31, 0x3c, + 0xc1, 0x03, 0xfc, 0x4a, 0xa9, 0x2b, 0x2b, 0x86, 0xc5, 0xb1, 0xcf, 0x5c, 0xca, 0x95, 0xd3, 0xce, + 0x6a, 0x64, 0xbc, 0x76, 0x26, 0xc4, 0x09, 0xe7, 0x21, 0x8f, 0x32, 0xc0, 0xea, 0x38, 0xc0, 0x11, + 0x81, 0xec, 0xf9, 0x59, 0xf5, 0xfe, 0x04, 0xdd, 0xd0, 0x9e, 0x28, 0x3a, 0xa3, 0xa2, 0xf5, 0xed, + 0x35, 0xb4, 0xb2, 0x07, 0xfd, 0xdd, 0x83, 0xee, 0x7e, 0x96, 0xf6, 0xf6, 0x55, 0xe0, 0x29, 0x8f, + 0xf9, 0xf8, 0x63, 0x84, 0x1a, 0x4c, 0x75, 0x1a, 0x11, 0x3f, 0xf6, 0x7e, 0x5b, 0x29, 0xad, 0x97, + 0x1e, 0xcf, 0xd7, 0xef, 0x26, 0x31, 0xc1, 0x7d, 0xd6, 0xf5, 0xbf, 0x67, 0x85, 0x4c, 0x75, 0x68, + 0x08, 0x45, 0xcb, 0x36, 0x90, 0xf8, 0x29, 0xba, 0x7a, 0x28, 0x5c, 0xdd, 0x50, 0xb9, 0x04, 0xa4, + 0x5b, 0x49, 0x4c, 0x16, 0x53, 0x92, 0x2f, 0x5c, 0xaa, 0x89, 0x96, 0x3d, 0xc0, 0x60, 0x8a, 0x96, + 0x53, 0xfb, 0x66, 0x5f, 0x2a, 0xde, 0xfd, 0x8c, 0xab, 0xc8, 0x73, 0x24, 0xd0, 0xcb, 0x40, 0x7f, + 0x94, 0xc4, 0xe4, 0x83, 0x94, 0x9e, 0xbd, 0x16, 0x09, 0x48, 0xda, 0x4d, 0xa1, 0x99, 0xe0, 0x79, + 0x2a, 0xf8, 0xf7, 0x25, 0xb4, 0x51, 0x50, 0x7b, 0x15, 0xe8, 0x61, 0x11, 0x3e, 0x53, 0xbc, 0x0d, + 0x6e, 0x97, 0xc1, 0xad, 0x9a, 0xc4, 0x64, 0x73, 0x9a, 0x9b, 0x67, 0xf0, 0x32, 0xeb, 0x59, 0xe4, + 0xf1, 0x1f, 0x4b, 0xe8, 0x51, 0x8a, 0x3b, 0x64, 0x8a, 0x07, 0x4e, 0xff, 0xa8, 0x13, 0x89, 0x9e, + 0xdb, 0x09, 0x7b, 0xea, 0xc8, 0xeb, 0x72, 0xc9, 0x23, 0x8f, 0xa7, 0xdd, 0xbe, 0x02, 0x41, 0x76, + 0x93, 0x98, 0x6c, 0xe7, 0x82, 0xf8, 0x29, 0x8f, 0xaa, 0x21, 0x91, 0xaa, 0x21, 0x33, 0x8b, 0x32, + 0x9b, 0x05, 0xfe, 0x1d, 0x5a, 0xcf, 0x01, 0xf7, 0x3d, 0xa9, 0x22, 0xaf, 0xd5, 0x53, 0x9e, 0x08, + 0x5e, 0xfa, 0x3e, 0xc4, 0x78, 0x1f, 0x62, 0x6c, 0x25, 0x31, 0xf9, 0xa8, 0x30, 0x46, 0xdb, 0xe0, + 0x50, 0xe6, 0xfb, 0x59, 0x82, 0x0b, 0x85, 0xf1, 0xd7, 0x25, 0xf4, 0xe1, 0xb9, 0xa0, 0x06, 0x8f, + 0x1c, 0x1e, 0x28, 0xcf, 0xe7, 0x10, 0xe2, 0x2a, 0x84, 0xf8, 0x38, 0x89, 0x49, 0xf5, 0xe2, 0x10, + 0xe1, 0x90, 0x9b, 0x65, 0x99, 0xd5, 0x06, 0xff, 0xa1, 0x84, 0x1e, 0x9e, 0x8b, 0x6d, 0xf6, 0xba, + 0x5d, 0x16, 0xf5, 0x21, 0xcf, 0x1c, 0xe4, 0xa9, 0x25, 0x31, 0xd9, 0xba, 0x38, 0x8f, 0x4c, 0x89, + 0x59, 0x98, 0x99, 0x0c, 0x70, 0x88, 0x56, 0x73, 0xb8, 0x7a, 0xff, 0x80, 0xf7, 0x3f, 0xef, 0x75, + 0x5b, 0x3c, 0x82, 0x00, 0xf3, 0x10, 0xe0, 0xbb, 0x49, 0x4c, 0x1e, 0x17, 0x06, 0x68, 0xf5, 0xe9, + 0x09, 0xef, 0xd3, 0x00, 0x18, 0x99, 0xf3, 0x54, 0x45, 0xdc, 0x47, 0xa4, 0xc9, 0xa3, 0x53, 0x1e, + 0xed, 0x7b, 0xf2, 0xa4, 0x19, 0x32, 0x87, 0x7f, 0x29, 0x99, 0xcb, 0xcd, 0x5e, 0xa3, 0xf1, 0xa9, + 0x20, 0x81, 0xa0, 0x7b, 0x7b, 0x42, 0xa5, 0xa6, 0xd0, 0x9e, 0xe6, 0x8c, 0xf5, 0xf8, 0x22, 0x5d, + 0xfc, 0x4b, 0x74, 0xf7, 0x27, 0x42, 0xb8, 0x3e, 0xdf, 0xf3, 0x45, 0xaf, 0xdd, 0x88, 0xc4, 0x57, + 0xdc, 0x51, 0x9f, 0xb3, 0x2e, 0xaf, 0xb4, 0xc1, 0xf1, 0x61, 0x12, 0x93, 0xf5, 0xd4, 0xd1, 0x05, + 0x1c, 0x75, 0x34, 0x90, 0x86, 0x29, 0x92, 0x06, 0xac, 0xcb, 0x2d, 0xfb, 0x1c, 0x0d, 0x7c, 0x8c, + 0xee, 0x19, 0x95, 0xa6, 0x12, 0x11, 0x73, 0xf9, 0x01, 0x4f, 0xbb, 0xc4, 0xc1, 0xe0, 0x71, 0x12, + 0x93, 0x87, 0x05, 0x06, 0x32, 0x05, 0xc3, 0x50, 0xa6, 0x7d, 0x39, 0x5f, 0x0a, 0xef, 0xa2, 0x3b, + 0x85, 0xc5, 0xca, 0xb1, 0xf6, 0xb0, 0x8b, 0x8b, 0x58, 0xa0, 0xd5, 0xc9, 0x42, 0xbd, 0xe7, 0x9c, + 0xf0, 0x74, 0x04, 0x5c, 0x08, 0xf8, 0x51, 0x12, 0x93, 0x0f, 0xa7, 0x04, 0x6c, 0x01, 0x21, 0x1b, + 0x88, 0xa9, 0x82, 0xb8, 0x87, 0xd6, 0x26, 0xeb, 0xcd, 0x5e, 0x6b, 0xdf, 0x8b, 0xb8, 0xa3, 0x44, + 0xd4, 0xaf, 0x74, 0xc0, 0xf2, 0x69, 0x12, 0x93, 0x27, 0x53, 0x2c, 0x65, 0xaf, 0x45, 0xdb, 0x03, + 0x8e, 0x65, 0x5f, 0x20, 0x6a, 0xfd, 0xed, 0x0a, 0xda, 0x28, 0x38, 0x65, 0xea, 0x3c, 0x70, 0x3a, + 0x5d, 0x16, 0x9d, 0x7c, 0x11, 0xea, 0x25, 0x20, 0xf1, 0x06, 0xba, 0x7c, 0xd4, 0x0f, 0x79, 0x76, + 0xd0, 0x2c, 0x26, 0x31, 0x59, 0x48, 0x43, 0xa8, 0x7e, 0xc8, 0x2d, 0x1b, 0x8a, 0xf8, 0x87, 0xe8, + 0xba, 0xcd, 0x7f, 0xd3, 0xe3, 0x52, 0xa5, 0x13, 0x18, 0x4e, 0x98, 0x72, 0xfd, 0x5e, 0x12, 0x93, + 0x3b, 0x29, 0x3a, 0x4a, 0xcb, 0xd9, 0x02, 0xb0, 0xec, 0x3c, 0x1e, 0xff, 0x14, 0xdd, 0xdc, 0x13, + 0x41, 0xc0, 0x1d, 0x6d, 0x9a, 0x69, 0x94, 0x41, 0x63, 0x35, 0x89, 0x49, 0x25, 0x5b, 0x52, 0x43, + 0xc4, 0x50, 0x66, 0x82, 0x85, 0xbf, 0x8f, 0xae, 0xa5, 0x1d, 0xca, 0x54, 0x2e, 0x83, 0x4a, 0x25, + 0x89, 0xc9, 0xed, 0xdc, 0xc2, 0x1c, 0x28, 0xe4, 0xd0, 0xf8, 0x57, 0x68, 0x79, 0xa4, 0x68, 0x56, + 0x64, 0xe5, 0xca, 0x7a, 0xf9, 0x71, 0xd9, 0x9c, 0xfa, 0x46, 0x9c, 0x9c, 0xa6, 0xd4, 0x87, 0x5e, + 0xb1, 0x08, 0xf6, 0xd0, 0x8a, 0xcd, 0x14, 0x3f, 0xf4, 0xba, 0x9e, 0xca, 0x46, 0x40, 0x36, 0x78, + 0xd4, 0xe4, 0x8e, 0x08, 0xda, 0xb0, 0xb5, 0x97, 0xeb, 0x4f, 0x92, 0x98, 0x3c, 0xca, 0x46, 0x8d, + 0x29, 0x4e, 0x7d, 0x0d, 0xa6, 0xd9, 0x00, 0x4a, 0xbd, 0x9b, 0x52, 0x09, 0x78, 0xcb, 0x9e, 0x22, + 0xa6, 0xcf, 0xfb, 0x26, 0xeb, 0xc2, 0x84, 0xd7, 0xbb, 0xf5, 0x9c, 0x79, 0xde, 0x4b, 0xd6, 0x85, + 0x45, 0x64, 0xd9, 0x03, 0x0c, 0xfe, 0x01, 0xba, 0x76, 0xc0, 0xfb, 0x4d, 0xef, 0x8c, 0xd7, 0xfb, + 0x8a, 0x4b, 0xd8, 0x51, 0x73, 0x6f, 0x50, 0xaf, 0x39, 0xe9, 0x9d, 0x71, 0xda, 0xd2, 0x75, 0xcb, + 0xce, 0xc1, 0xf1, 0x1e, 0xba, 0xf1, 0x9a, 0xf9, 0x3d, 0x3e, 0x12, 0x98, 0x07, 0x81, 0xfb, 0x49, + 0x4c, 0x96, 0x53, 0x81, 0x53, 0x5d, 0xcf, 0x49, 0x8c, 0x51, 0x70, 0x0d, 0xcd, 0x37, 0x15, 0xf3, + 0xb9, 0xcd, 0x59, 0x1b, 0x36, 0xb7, 0xb9, 0xfa, 0x9d, 0x24, 0x26, 0x4b, 0x59, 0x68, 0x5d, 0xa2, + 0x11, 0x67, 0x6d, 0xcb, 0x1e, 0xe1, 0xac, 0xf8, 0x12, 0xfa, 0x60, 0xda, 0x44, 0x6e, 0x2a, 0x1e, + 0x4a, 0xfc, 0x05, 0xc2, 0xfa, 0xc7, 0x4e, 0x53, 0xb1, 0x48, 0xed, 0x33, 0xc5, 0x5a, 0x4c, 0xa6, + 0x93, 0x7a, 0xae, 0x4e, 0x92, 0x98, 0xdc, 0x1f, 0x78, 0xf0, 0x70, 0x87, 0x4a, 0x0d, 0xa2, 0xed, + 0x0c, 0x65, 0xd9, 0x05, 0x54, 0x6c, 0xa3, 0x5b, 0xba, 0xb5, 0xda, 0x54, 0x11, 0x97, 0x72, 0xa8, + 0x78, 0x09, 0x14, 0xd7, 0x93, 0x98, 0xac, 0x8e, 0x14, 0xab, 0x54, 0x02, 0xca, 0x90, 0x2c, 0x22, + 0xe3, 0x43, 0xb4, 0xa4, 0x9b, 0x6b, 0x4d, 0x25, 0xc2, 0xa1, 0x62, 0x19, 0x14, 0xd7, 0x92, 0x98, + 0xac, 0x8c, 0x14, 0x6b, 0x7a, 0xd9, 0x87, 0x86, 0xde, 0x24, 0x11, 0xff, 0x18, 0x2d, 0xea, 0xc6, + 0xdd, 0x2f, 0x43, 0x5f, 0xb0, 0xf6, 0xa1, 0x70, 0x25, 0x2c, 0x86, 0x39, 0x73, 0x49, 0x69, 0xad, + 0x5d, 0xda, 0x03, 0x04, 0xf5, 0x85, 0x2b, 0x2d, 0x7b, 0x9c, 0x64, 0xfd, 0x7b, 0x11, 0x91, 0x82, + 0x01, 0x7e, 0xe9, 0xf2, 0x40, 0xed, 0x89, 0x40, 0x45, 0x02, 0x2e, 0xa5, 0x03, 0xdf, 0x57, 0xfb, + 0x93, 0x97, 0xd2, 0x41, 0x4e, 0xea, 0xb5, 0x2d, 0xdb, 0x40, 0xe2, 0x9f, 0xa1, 0x5b, 0x83, 0xa7, + 0x7d, 0x2e, 0x9d, 0xc8, 0x83, 0x5d, 0x27, 0xbb, 0xa0, 0x1a, 0xef, 0x65, 0x28, 0xd0, 0x1e, 0xa1, + 0x2c, 0xbb, 0x88, 0x8b, 0x5f, 0xa0, 0x85, 0x41, 0xf3, 0x11, 0x73, 0xb3, 0xcb, 0xea, 0x72, 0x12, + 0x93, 0x5b, 0x63, 0x52, 0x8a, 0xb9, 0x96, 0x6d, 0x62, 0xf5, 0x92, 0x69, 0x70, 0x1e, 0xbd, 0x6a, + 0xe8, 0x91, 0x2a, 0xe7, 0xaf, 0xc8, 0x21, 0xe7, 0x11, 0xf5, 0x42, 0x69, 0xd9, 0x03, 0x0c, 0xfe, + 0x11, 0xba, 0x9e, 0xfd, 0x6c, 0xaa, 0xc8, 0x0b, 0xdc, 0xec, 0x86, 0xb8, 0x92, 0xc4, 0xe4, 0x6e, + 0x9e, 0xa4, 0xdf, 0xbf, 0x17, 0xb8, 0x96, 0x9d, 0x27, 0xe0, 0x06, 0xc2, 0x30, 0x8c, 0x0d, 0x11, + 0xa9, 0x23, 0x91, 0x6d, 0x1a, 0xd9, 0x36, 0x60, 0xcc, 0x21, 0xa6, 0x31, 0x34, 0x14, 0x91, 0xa2, + 0x4a, 0xd0, 0x6c, 0xdf, 0xb1, 0xec, 0x02, 0x2e, 0xae, 0xa3, 0x1b, 0xd0, 0xfa, 0x69, 0xd0, 0x0e, + 0x85, 0x17, 0x28, 0x59, 0xb9, 0x0a, 0x3d, 0x31, 0x42, 0xa5, 0x6a, 0x7c, 0x00, 0xb0, 0xec, 0x31, + 0x06, 0xfe, 0x05, 0xba, 0x33, 0x18, 0x95, 0x7c, 0xb0, 0x74, 0x4f, 0xd8, 0x48, 0x62, 0x42, 0xc6, + 0xc6, 0x72, 0x22, 0x5b, 0xb1, 0x02, 0x3e, 0x40, 0x4b, 0x83, 0xc2, 0x28, 0xe1, 0x3c, 0x24, 0x7c, + 0x90, 0xc4, 0xe4, 0xde, 0x98, 0xac, 0x11, 0x72, 0x92, 0x87, 0xdf, 0xa0, 0x9b, 0xf0, 0xf1, 0x04, + 0x5f, 0x6d, 0x94, 0x9e, 0x56, 0x69, 0x0d, 0x2e, 0x28, 0x0b, 0xd5, 0xd5, 0xcd, 0xd1, 0x07, 0xd6, + 0xe6, 0x38, 0xc6, 0xdc, 0x53, 0x46, 0xad, 0x96, 0xbd, 0xa0, 0x81, 0x9f, 0x2a, 0xa7, 0xfd, 0xba, + 0x5a, 0x9b, 0xd0, 0xae, 0xd1, 0x1d, 0xb8, 0x9b, 0x4c, 0xd3, 0xae, 0xd1, 0x9d, 0x02, 0xed, 0x1a, + 0xdd, 0x31, 0xb5, 0x6b, 0x3b, 0x05, 0xda, 0x55, 0xb8, 0x93, 0x4c, 0xd7, 0xae, 0x16, 0x6a, 0x57, + 0x73, 0xda, 0x55, 0xfc, 0x73, 0xb4, 0x68, 0xf2, 0x94, 0x17, 0xc2, 0x8d, 0x65, 0xa1, 0x7a, 0xff, + 0x3c, 0x69, 0xe5, 0x85, 0xf5, 0xdb, 0x49, 0x4c, 0x6e, 0x9a, 0xca, 0xca, 0x0b, 0x0d, 0xe1, 0x23, + 0x2f, 0xc4, 0xa7, 0x68, 0x39, 0x65, 0x0d, 0x3f, 0x83, 0x29, 0x8d, 0x6a, 0x74, 0x97, 0xbe, 0xa8, + 0xbc, 0x2d, 0x81, 0xc3, 0xc6, 0xa4, 0xc3, 0x04, 0xd6, 0xdc, 0x7b, 0x26, 0x8a, 0x96, 0xbd, 0xa4, + 0x69, 0x6f, 0x06, 0xed, 0x76, 0x6d, 0xf7, 0x05, 0xfe, 0x53, 0x09, 0x3d, 0x28, 0x12, 0x7b, 0x46, + 0xab, 0x94, 0xf9, 0x61, 0x87, 0x55, 0xfe, 0x9e, 0xda, 0x3f, 0xb9, 0xc8, 0x7e, 0xc8, 0xa8, 0x5b, + 0x49, 0x4c, 0xd6, 0x8a, 0x42, 0x0c, 0x21, 0x96, 0x7d, 0x77, 0x2c, 0xca, 0xb3, 0xea, 0x4b, 0x5d, + 0xc0, 0x5f, 0xa1, 0xdb, 0xa9, 0x78, 0xfa, 0xb5, 0x4f, 0xe9, 0xe9, 0x36, 0xfd, 0x84, 0x3e, 0xab, + 0xfc, 0xe5, 0x12, 0xa4, 0x58, 0x9f, 0x4c, 0x91, 0x07, 0x9a, 0x47, 0x6a, 0xbe, 0x62, 0xd9, 0x37, + 0x34, 0x61, 0x0f, 0x1a, 0x5f, 0x6f, 0x7f, 0xf2, 0xac, 0xd0, 0xeb, 0x39, 0xdd, 0xae, 0xfc, 0x75, + 0x16, 0xaf, 0xe7, 0x74, 0xfb, 0x1c, 0xaf, 0xe7, 0x74, 0x7b, 0xcc, 0xeb, 0xf9, 0x36, 0xfe, 0x35, + 0x5a, 0xca, 0x24, 0xd2, 0x19, 0xd0, 0xe2, 0x8a, 0x55, 0xbe, 0x2e, 0x83, 0xd1, 0x83, 0x02, 0xa3, + 0x11, 0xca, 0xdc, 0xe8, 0x8d, 0x66, 0xcb, 0xbe, 0x0e, 0x16, 0xba, 0xa5, 0xce, 0x15, 0x1b, 0x39, + 0x9c, 0x19, 0x0e, 0xff, 0x3b, 0xd7, 0xe1, 0xac, 0xd8, 0xe1, 0x6c, 0xc2, 0xe1, 0xcd, 0xd0, 0xe1, + 0xcf, 0xa5, 0x99, 0xee, 0xb4, 0x95, 0xff, 0x5c, 0x05, 0xd3, 0x2d, 0xd3, 0x74, 0x06, 0x9e, 0x39, + 0x79, 0x5b, 0x83, 0x1a, 0x15, 0x69, 0xd1, 0xb2, 0x67, 0xba, 0x4e, 0x7f, 0x53, 0x9a, 0xe1, 0xb6, + 0x52, 0xf9, 0x6f, 0x1a, 0xf0, 0xe9, 0xac, 0x01, 0x81, 0x65, 0xee, 0xf1, 0xa3, 0x78, 0xfa, 0x84, + 0x97, 0x96, 0x7d, 0xb1, 0x69, 0xfd, 0xf6, 0xdb, 0x7f, 0xad, 0xbd, 0xf7, 0xf6, 0xdd, 0x5a, 0xe9, + 0x1f, 0xef, 0xd6, 0x4a, 0xff, 0x7c, 0xb7, 0x56, 0xfa, 0xe6, 0xdb, 0xb5, 0xf7, 0x5a, 0xef, 0xc3, + 0x9f, 0x52, 0xb5, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x09, 0x69, 0xa2, 0x8e, 0x13, 0x00, + 0x00, +} diff --git a/dbtesterpb/config_client_machine.proto b/dbtesterpb/config_client_machine.proto new file mode 100644 index 00000000..e38d4854 --- /dev/null +++ b/dbtesterpb/config_client_machine.proto @@ -0,0 +1,92 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +import "dbtesterpb/flag_etcd.proto"; +import "dbtesterpb/flag_zookeeper.proto"; +import "dbtesterpb/flag_consul.proto"; +import "dbtesterpb/flag_zetcd.proto"; +import "dbtesterpb/flag_cetcd.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// ConfigClientMachineInitial represents common control options on client machine. +message ConfigClientMachineInitial { + string PathPrefix = 1 [(gogoproto.moretags) = "yaml:\"path_prefix\""]; + string LogPath = 2 [(gogoproto.moretags) = "yaml:\"log_path\""]; + string ClientSystemMetricsPath = 3 [(gogoproto.moretags) = "yaml:\"client_system_metrics_path\""]; + string ClientSystemMetricsInterpolatedPath = 4 [(gogoproto.moretags) = "yaml:\"client_system_metrics_interpolated_path\""]; + string ClientLatencyThroughputTimeseriesPath = 5 [(gogoproto.moretags) = "yaml:\"client_latency_throughput_timeseries_path\""]; + string ClientLatencyDistributionAllPath = 6 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_all_path\""]; + string ClientLatencyDistributionPercentilePath = 7 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_percentile_path\""]; + string ClientLatencyDistributionSummaryPath = 8 [(gogoproto.moretags) = "yaml:\"client_latency_distribution_summary_path\""]; + string ClientLatencyByKeyNumberPath = 9 [(gogoproto.moretags) = "yaml:\"client_latency_by_key_number_path\""]; + string ServerDiskSpaceUsageSummaryPath = 10 [(gogoproto.moretags) = "yaml:\"server_disk_space_usage_summary_path\""]; + + string GoogleCloudProjectName = 100 [(gogoproto.moretags) = "yaml:\"google_cloud_project_name\""]; + string GoogleCloudStorageKeyPath = 101 [(gogoproto.moretags) = "yaml:\"google_cloud_storage_key_path\""]; + string GoogleCloudStorageKey = 102; + string GoogleCloudStorageBucketName = 103 [(gogoproto.moretags) = "yaml:\"google_cloud_storage_bucket_name\""]; + string GoogleCloudStorageSubDirectory = 104 [(gogoproto.moretags) = "yaml:\"google_cloud_storage_sub_directory\""]; +} + +// ConfigClientMachineBenchmarkOptions represents benchmark options. +message ConfigClientMachineBenchmarkOptions { + string Type = 1 [(gogoproto.moretags) = "yaml:\"type\""]; + int64 RequestNumber = 2 [(gogoproto.moretags) = "yaml:\"request_number\""]; + int64 ConnectionNumber = 3 [(gogoproto.moretags) = "yaml:\"connection_number\""]; + int64 ClientNumber = 4 [(gogoproto.moretags) = "yaml:\"client_number\""]; + repeated int64 ConnectionClientNumbers = 5 [(gogoproto.moretags) = "yaml:\"connection_client_numbers\""]; + int64 RateLimitRequestsPerSecond = 6 [(gogoproto.moretags) = "yaml:\"rate_limit_requests_per_second\""]; + + bool SameKey = 7 [(gogoproto.moretags) = "yaml:\"same_key\""]; + int64 KeySizeBytes = 8 [(gogoproto.moretags) = "yaml:\"key_size_bytes\""]; + int64 ValueSizeBytes = 9 [(gogoproto.moretags) = "yaml:\"value_size_bytes\""]; + + bool StaleRead = 10 [(gogoproto.moretags) = "yaml:\"stale_read\""]; +} + +// ConfigClientMachineBenchmarkSteps represents benchmark steps. +message ConfigClientMachineBenchmarkSteps { + bool Step1StartDatabase = 1 [(gogoproto.moretags) = "yaml:\"step1_start_database\""]; + bool Step2StressDatabase = 2 [(gogoproto.moretags) = "yaml:\"step2_stress_database\""]; + bool Step3StopDatabase = 3 [(gogoproto.moretags) = "yaml:\"step3_stop_database\""]; + bool Step4UploadLogs = 4 [(gogoproto.moretags) = "yaml:\"step4_upload_logs\""]; +} + +// ConfigClientMachineAgentControl represents control options on client machine. +message ConfigClientMachineAgentControl { + string DatabaseID = 1 [(gogoproto.moretags) = "yaml:\"database_id\""]; + string DatabaseDescription = 2 [(gogoproto.moretags) = "yaml:\"database_description\""]; + string DatabaseTag = 3 [(gogoproto.moretags) = "yaml:\"database_tag\""]; + + repeated string PeerIPs = 4 [(gogoproto.moretags) = "yaml:\"peer_ips\""]; + string PeerIPsString = 5 [(gogoproto.moretags) = "yaml:\"peer_ips_string\""]; + + int64 AgentPortToConnect = 6 [(gogoproto.moretags) = "yaml:\"agent_port_to_connect\""]; + repeated string AgentEndpoints = 7 [(gogoproto.moretags) = "yaml:\"agent_endpoints\""]; + + int64 DatabasePortToConnect = 8 [(gogoproto.moretags) = "yaml:\"database_port_to_connect\""]; + repeated string DatabaseEndpoints = 9 [(gogoproto.moretags) = "yaml:\"database_endpoints\""]; + + flag__etcd__v2_3 flag__etcd__v2_3 = 100 [(gogoproto.moretags) = "yaml:\"etcd__v2_3\""]; + flag__etcd__v3_1 flag__etcd__v3_1 = 101 [(gogoproto.moretags) = "yaml:\"etcd__v3_1\""]; + flag__etcd__v3_2 flag__etcd__v3_2 = 102 [(gogoproto.moretags) = "yaml:\"etcd__v3_2\""]; + flag__etcd__tip flag__etcd__tip = 103 [(gogoproto.moretags) = "yaml:\"etcd__tip\""]; + + flag__zookeeper__r3_4_9 flag__zookeeper__r3_4_9 = 200 [(gogoproto.moretags) = "yaml:\"zookeeper__r3_4_9\""]; + flag__zookeeper__r3_5_2_alpha flag__zookeeper__r3_5_2_alpha = 201 [(gogoproto.moretags) = "yaml:\"zookeeper__r3_5_2_alpha\""]; + + flag__consul__v0_7_5 flag__consul__v0_7_5 = 300 [(gogoproto.moretags) = "yaml:\"consul__v0_7_5\""]; + flag__consul__v0_8_0 flag__consul__v0_8_0 = 301 [(gogoproto.moretags) = "yaml:\"consul__v0_8_0\""]; + + flag__cetcd__beta flag__cetcd__beta = 400 [(gogoproto.moretags) = "yaml:\"cetcd__beta\""]; + flag__zetcd__beta flag__zetcd__beta = 500 [(gogoproto.moretags) = "yaml:\"zetcd__beta\""]; + + ConfigClientMachineBenchmarkOptions ConfigClientMachineBenchmarkOptions = 1000 [(gogoproto.moretags) = "yaml:\"benchmark_options\""]; + ConfigClientMachineBenchmarkSteps ConfigClientMachineBenchmarkSteps = 1001 [(gogoproto.moretags) = "yaml:\"benchmark_steps\""]; +} diff --git a/dbtesterpb/database_id.pb.go b/dbtesterpb/database_id.pb.go new file mode 100644 index 00000000..0e5a2362 --- /dev/null +++ b/dbtesterpb/database_id.pb.go @@ -0,0 +1,89 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/database_id.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// DatabaseID differentiates between major or minor releases (possibly different APIs) +// of each database. Make sure to make accordingn changes in 'flag_*' whenever an ID +// is added/removed. +type DatabaseID int32 + +const ( + DatabaseID_etcd__v2_3 DatabaseID = 0 + DatabaseID_etcd__v3_1 DatabaseID = 1 + DatabaseID_etcd__v3_2 DatabaseID = 2 + DatabaseID_etcd__tip DatabaseID = 3 + DatabaseID_zookeeper__r3_4_9 DatabaseID = 10 + DatabaseID_zookeeper__r3_5_2_alpha DatabaseID = 11 + DatabaseID_consul__v0_7_5 DatabaseID = 20 + DatabaseID_consul__v0_8_0 DatabaseID = 21 + DatabaseID_zetcd__beta DatabaseID = 30 + DatabaseID_cetcd__beta DatabaseID = 40 +) + +var DatabaseID_name = map[int32]string{ + 0: "etcd__v2_3", + 1: "etcd__v3_1", + 2: "etcd__v3_2", + 3: "etcd__tip", + 10: "zookeeper__r3_4_9", + 11: "zookeeper__r3_5_2_alpha", + 20: "consul__v0_7_5", + 21: "consul__v0_8_0", + 30: "zetcd__beta", + 40: "cetcd__beta", +} +var DatabaseID_value = map[string]int32{ + "etcd__v2_3": 0, + "etcd__v3_1": 1, + "etcd__v3_2": 2, + "etcd__tip": 3, + "zookeeper__r3_4_9": 10, + "zookeeper__r3_5_2_alpha": 11, + "consul__v0_7_5": 20, + "consul__v0_8_0": 21, + "zetcd__beta": 30, + "cetcd__beta": 40, +} + +func (x DatabaseID) String() string { + return proto.EnumName(DatabaseID_name, int32(x)) +} +func (DatabaseID) EnumDescriptor() ([]byte, []int) { return fileDescriptorDatabaseId, []int{0} } + +func init() { + proto.RegisterEnum("dbtesterpb.DatabaseID", DatabaseID_name, DatabaseID_value) +} + +func init() { proto.RegisterFile("dbtesterpb/database_id.proto", fileDescriptorDatabaseId) } + +var fileDescriptorDatabaseId = []byte{ + // 245 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x8f, 0xcf, 0x4a, 0xc3, 0x40, + 0x10, 0x87, 0xb3, 0x0a, 0x82, 0x53, 0xac, 0xe3, 0xd2, 0x22, 0xa8, 0xec, 0x59, 0x04, 0x9b, 0x9a, + 0x58, 0xd4, 0xab, 0xf4, 0xe2, 0x53, 0x0c, 0xbb, 0xc9, 0x9a, 0x06, 0xab, 0xbb, 0x24, 0x93, 0x1e, + 0xfa, 0x24, 0x3e, 0x52, 0xbd, 0xf9, 0x08, 0x1a, 0x5f, 0x44, 0xdc, 0x08, 0x36, 0xde, 0xe6, 0xfb, + 0xe6, 0x1f, 0x3f, 0x38, 0xcb, 0x0d, 0xdb, 0x9a, 0x6d, 0xe5, 0x4d, 0x9c, 0x6b, 0xd6, 0x46, 0xd7, + 0x96, 0xca, 0x7c, 0xe2, 0x2b, 0xc7, 0x4e, 0xc2, 0x5f, 0xf7, 0xe4, 0xb2, 0x28, 0x79, 0xd1, 0x98, + 0x49, 0xe6, 0x9e, 0xe3, 0xc2, 0x15, 0x2e, 0x0e, 0x23, 0xa6, 0x79, 0x0c, 0x14, 0x20, 0x54, 0xdd, + 0xea, 0xc5, 0x9b, 0x00, 0x98, 0xff, 0x1e, 0x7c, 0x98, 0xcb, 0x21, 0x80, 0xe5, 0x2c, 0x27, 0x5a, + 0x25, 0x94, 0x62, 0xb4, 0xc5, 0x29, 0x5d, 0xa1, 0xe8, 0x71, 0x82, 0x3b, 0xf2, 0x00, 0xf6, 0x3b, + 0xe6, 0xd2, 0xe3, 0xae, 0x1c, 0xc3, 0xd1, 0xda, 0xb9, 0x27, 0x6b, 0xbd, 0xad, 0x88, 0xaa, 0x94, + 0xae, 0xe9, 0x0e, 0x41, 0x9e, 0xc2, 0x71, 0x5f, 0xcf, 0x28, 0x21, 0xbd, 0xf4, 0x0b, 0x8d, 0x03, + 0x29, 0x61, 0x98, 0xb9, 0x97, 0xba, 0x59, 0x12, 0xad, 0xa6, 0x74, 0x43, 0x33, 0x1c, 0xfd, 0x73, + 0xb7, 0x34, 0xc5, 0xb1, 0x3c, 0x84, 0xc1, 0xba, 0xfb, 0x65, 0x2c, 0x6b, 0x54, 0x3f, 0x22, 0xdb, + 0x12, 0xe7, 0xf7, 0xa3, 0xcd, 0xa7, 0x8a, 0x36, 0xad, 0x12, 0xef, 0xad, 0x12, 0x1f, 0xad, 0x12, + 0xaf, 0x5f, 0x2a, 0x32, 0x7b, 0x21, 0x68, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x89, 0x6f, 0x4c, + 0x96, 0x43, 0x01, 0x00, 0x00, +} diff --git a/dbtesterpb/database_id.proto b/dbtesterpb/database_id.proto new file mode 100644 index 00000000..1798586c --- /dev/null +++ b/dbtesterpb/database_id.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// DatabaseID differentiates between major or minor releases (possibly different APIs) +// of each database. Make sure to make accordingn changes in 'flag_*' whenever an ID +// is added/removed. +enum DatabaseID { + etcd__v2_3 = 0; + etcd__v3_1 = 1; + etcd__v3_2 = 2; + etcd__tip = 3; + + zookeeper__r3_4_9 = 10; + zookeeper__r3_5_2_alpha = 11; + + consul__v0_7_5 = 20; + consul__v0_8_0 = 21; + + zetcd__beta = 30; + cetcd__beta = 40; +} diff --git a/dbtesterpb/flag_cetcd.pb.go b/dbtesterpb/flag_cetcd.pb.go new file mode 100644 index 00000000..cd1071c1 --- /dev/null +++ b/dbtesterpb/flag_cetcd.pb.go @@ -0,0 +1,264 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/flag_cetcd.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// Flag_Cetcd_Beta is cetcd-specific flags +// (https://github.com/coreos/cetcd). +type Flag_Cetcd_Beta struct { +} + +func (m *Flag_Cetcd_Beta) Reset() { *m = Flag_Cetcd_Beta{} } +func (m *Flag_Cetcd_Beta) String() string { return proto.CompactTextString(m) } +func (*Flag_Cetcd_Beta) ProtoMessage() {} +func (*Flag_Cetcd_Beta) Descriptor() ([]byte, []int) { return fileDescriptorFlagCetcd, []int{0} } + +func init() { + proto.RegisterType((*Flag_Cetcd_Beta)(nil), "dbtesterpb.flag__cetcd__beta") +} +func (m *Flag_Cetcd_Beta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Cetcd_Beta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func encodeFixed64FlagCetcd(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32FlagCetcd(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintFlagCetcd(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Flag_Cetcd_Beta) Size() (n int) { + var l int + _ = l + return n +} + +func sovFlagCetcd(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozFlagCetcd(x uint64) (n int) { + return sovFlagCetcd(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Flag_Cetcd_Beta) 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 ErrIntOverflowFlagCetcd + } + 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: flag__cetcd__beta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__cetcd__beta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFlagCetcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagCetcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFlagCetcd(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagCetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagCetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagCetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthFlagCetcd + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagCetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipFlagCetcd(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthFlagCetcd = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFlagCetcd = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("dbtesterpb/flag_cetcd.proto", fileDescriptorFlagCetcd) } + +var fileDescriptorFlagCetcd = []byte{ + // 130 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x49, 0x2a, 0x49, + 0x2d, 0x2e, 0x49, 0x2d, 0x2a, 0x48, 0xd2, 0x4f, 0xcb, 0x49, 0x4c, 0x8f, 0x4f, 0x4e, 0x2d, 0x49, + 0x4e, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0x48, 0x4a, 0xe9, 0xa6, 0x67, 0x96, + 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xa7, 0xe7, 0xeb, 0x83, 0x95, 0x24, + 0x95, 0xa6, 0x81, 0x79, 0x60, 0x0e, 0x98, 0x05, 0xd1, 0xaa, 0x24, 0xcc, 0x25, 0x08, 0x36, 0x0e, + 0x62, 0x5e, 0x7c, 0x7c, 0x52, 0x6a, 0x49, 0xa2, 0x93, 0xc8, 0x89, 0x87, 0x72, 0x0c, 0x27, 0x1e, + 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8c, 0xc7, 0x72, 0x0c, 0x49, + 0x6c, 0x60, 0x1d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x7e, 0x95, 0x6e, 0x8b, 0x00, + 0x00, 0x00, +} diff --git a/dbtesterpb/flag_cetcd.proto b/dbtesterpb/flag_cetcd.proto new file mode 100644 index 00000000..d83e3cd3 --- /dev/null +++ b/dbtesterpb/flag_cetcd.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// Flag_Cetcd_Beta is cetcd-specific flags +// (https://github.com/coreos/cetcd). +message flag__cetcd__beta { +} diff --git a/dbtesterpb/flag_consul.pb.go b/dbtesterpb/flag_consul.pb.go new file mode 100644 index 00000000..9cda5ffe --- /dev/null +++ b/dbtesterpb/flag_consul.pb.go @@ -0,0 +1,347 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/flag_consul.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// See https://github.com/hashicorp/consul for more. +type Flag_Consul_V0_7_5 struct { +} + +func (m *Flag_Consul_V0_7_5) Reset() { *m = Flag_Consul_V0_7_5{} } +func (m *Flag_Consul_V0_7_5) String() string { return proto.CompactTextString(m) } +func (*Flag_Consul_V0_7_5) ProtoMessage() {} +func (*Flag_Consul_V0_7_5) Descriptor() ([]byte, []int) { return fileDescriptorFlagConsul, []int{0} } + +// See https://github.com/hashicorp/consul for more. +type Flag_Consul_V0_8_0 struct { +} + +func (m *Flag_Consul_V0_8_0) Reset() { *m = Flag_Consul_V0_8_0{} } +func (m *Flag_Consul_V0_8_0) String() string { return proto.CompactTextString(m) } +func (*Flag_Consul_V0_8_0) ProtoMessage() {} +func (*Flag_Consul_V0_8_0) Descriptor() ([]byte, []int) { return fileDescriptorFlagConsul, []int{1} } + +func init() { + proto.RegisterType((*Flag_Consul_V0_7_5)(nil), "dbtesterpb.flag__consul__v0_7_5") + proto.RegisterType((*Flag_Consul_V0_8_0)(nil), "dbtesterpb.flag__consul__v0_8_0") +} +func (m *Flag_Consul_V0_7_5) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Consul_V0_7_5) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func (m *Flag_Consul_V0_8_0) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Consul_V0_8_0) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func encodeFixed64FlagConsul(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32FlagConsul(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintFlagConsul(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Flag_Consul_V0_7_5) Size() (n int) { + var l int + _ = l + return n +} + +func (m *Flag_Consul_V0_8_0) Size() (n int) { + var l int + _ = l + return n +} + +func sovFlagConsul(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozFlagConsul(x uint64) (n int) { + return sovFlagConsul(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Flag_Consul_V0_7_5) 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 ErrIntOverflowFlagConsul + } + 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: flag__consul__v0_7_5: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__consul__v0_7_5: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFlagConsul(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagConsul + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Flag_Consul_V0_8_0) 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 ErrIntOverflowFlagConsul + } + 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: flag__consul__v0_8_0: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__consul__v0_8_0: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFlagConsul(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagConsul + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFlagConsul(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagConsul + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagConsul + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagConsul + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthFlagConsul + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagConsul + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipFlagConsul(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthFlagConsul = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFlagConsul = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("dbtesterpb/flag_consul.proto", fileDescriptorFlagConsul) } + +var fileDescriptorFlagConsul = []byte{ + // 138 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x49, 0x2a, 0x49, + 0x2d, 0x2e, 0x49, 0x2d, 0x2a, 0x48, 0xd2, 0x4f, 0xcb, 0x49, 0x4c, 0x8f, 0x4f, 0xce, 0xcf, 0x2b, + 0x2e, 0xcd, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0xc8, 0x4a, 0xe9, 0xa6, 0x67, + 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xa7, 0xe7, 0xeb, 0x83, 0x95, + 0x24, 0x95, 0xa6, 0x81, 0x79, 0x60, 0x0e, 0x98, 0x05, 0xd1, 0xaa, 0x24, 0xc6, 0x25, 0x02, 0x36, + 0x0f, 0x6a, 0x60, 0x7c, 0x7c, 0x99, 0x41, 0xbc, 0x79, 0xbc, 0x29, 0x56, 0x71, 0x8b, 0x78, 0x03, + 0x27, 0x91, 0x13, 0x0f, 0xe5, 0x18, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, + 0x23, 0x39, 0xc6, 0x19, 0x8f, 0xe5, 0x18, 0x92, 0xd8, 0xc0, 0x86, 0x19, 0x03, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x93, 0xd4, 0x88, 0x26, 0xa7, 0x00, 0x00, 0x00, +} diff --git a/dbtesterpb/flag_consul.proto b/dbtesterpb/flag_consul.proto new file mode 100644 index 00000000..2c07e6c1 --- /dev/null +++ b/dbtesterpb/flag_consul.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// See https://github.com/hashicorp/consul for more. +message flag__consul__v0_7_5 { +} + +// See https://github.com/hashicorp/consul for more. +message flag__consul__v0_8_0 { +} diff --git a/dbtesterpb/flag_etcd.pb.go b/dbtesterpb/flag_etcd.pb.go new file mode 100644 index 00000000..10592b35 --- /dev/null +++ b/dbtesterpb/flag_etcd.pb.go @@ -0,0 +1,718 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/flag_etcd.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +type Flag_Etcd_V2_3 struct { + SnapshotCount int64 `protobuf:"varint,1,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot_count"` +} + +func (m *Flag_Etcd_V2_3) Reset() { *m = Flag_Etcd_V2_3{} } +func (m *Flag_Etcd_V2_3) String() string { return proto.CompactTextString(m) } +func (*Flag_Etcd_V2_3) ProtoMessage() {} +func (*Flag_Etcd_V2_3) Descriptor() ([]byte, []int) { return fileDescriptorFlagEtcd, []int{0} } + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +type Flag_Etcd_V3_1 struct { + SnapshotCount int64 `protobuf:"varint,1,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot_count"` + QuotaSizeBytes int64 `protobuf:"varint,2,opt,name=QuotaSizeBytes,proto3" json:"QuotaSizeBytes,omitempty" yaml:"quota_size_bytes"` +} + +func (m *Flag_Etcd_V3_1) Reset() { *m = Flag_Etcd_V3_1{} } +func (m *Flag_Etcd_V3_1) String() string { return proto.CompactTextString(m) } +func (*Flag_Etcd_V3_1) ProtoMessage() {} +func (*Flag_Etcd_V3_1) Descriptor() ([]byte, []int) { return fileDescriptorFlagEtcd, []int{1} } + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +type Flag_Etcd_V3_2 struct { + SnapshotCount int64 `protobuf:"varint,1,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot_count"` + QuotaSizeBytes int64 `protobuf:"varint,2,opt,name=QuotaSizeBytes,proto3" json:"QuotaSizeBytes,omitempty" yaml:"quota_size_bytes"` +} + +func (m *Flag_Etcd_V3_2) Reset() { *m = Flag_Etcd_V3_2{} } +func (m *Flag_Etcd_V3_2) String() string { return proto.CompactTextString(m) } +func (*Flag_Etcd_V3_2) ProtoMessage() {} +func (*Flag_Etcd_V3_2) Descriptor() ([]byte, []int) { return fileDescriptorFlagEtcd, []int{2} } + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +type Flag_Etcd_Tip struct { + SnapshotCount int64 `protobuf:"varint,1,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot_count"` + QuotaSizeBytes int64 `protobuf:"varint,2,opt,name=QuotaSizeBytes,proto3" json:"QuotaSizeBytes,omitempty" yaml:"quota_size_bytes"` +} + +func (m *Flag_Etcd_Tip) Reset() { *m = Flag_Etcd_Tip{} } +func (m *Flag_Etcd_Tip) String() string { return proto.CompactTextString(m) } +func (*Flag_Etcd_Tip) ProtoMessage() {} +func (*Flag_Etcd_Tip) Descriptor() ([]byte, []int) { return fileDescriptorFlagEtcd, []int{3} } + +func init() { + proto.RegisterType((*Flag_Etcd_V2_3)(nil), "dbtesterpb.flag__etcd__v2_3") + proto.RegisterType((*Flag_Etcd_V3_1)(nil), "dbtesterpb.flag__etcd__v3_1") + proto.RegisterType((*Flag_Etcd_V3_2)(nil), "dbtesterpb.flag__etcd__v3_2") + proto.RegisterType((*Flag_Etcd_Tip)(nil), "dbtesterpb.flag__etcd__tip") +} +func (m *Flag_Etcd_V2_3) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Etcd_V2_3) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SnapshotCount != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.SnapshotCount)) + } + return i, nil +} + +func (m *Flag_Etcd_V3_1) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Etcd_V3_1) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SnapshotCount != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + dAtA[i] = 0x10 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.QuotaSizeBytes)) + } + return i, nil +} + +func (m *Flag_Etcd_V3_2) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Etcd_V3_2) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SnapshotCount != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + dAtA[i] = 0x10 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.QuotaSizeBytes)) + } + return i, nil +} + +func (m *Flag_Etcd_Tip) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Etcd_Tip) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SnapshotCount != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + dAtA[i] = 0x10 + i++ + i = encodeVarintFlagEtcd(dAtA, i, uint64(m.QuotaSizeBytes)) + } + return i, nil +} + +func encodeFixed64FlagEtcd(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32FlagEtcd(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintFlagEtcd(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Flag_Etcd_V2_3) Size() (n int) { + var l int + _ = l + if m.SnapshotCount != 0 { + n += 1 + sovFlagEtcd(uint64(m.SnapshotCount)) + } + return n +} + +func (m *Flag_Etcd_V3_1) Size() (n int) { + var l int + _ = l + if m.SnapshotCount != 0 { + n += 1 + sovFlagEtcd(uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + n += 1 + sovFlagEtcd(uint64(m.QuotaSizeBytes)) + } + return n +} + +func (m *Flag_Etcd_V3_2) Size() (n int) { + var l int + _ = l + if m.SnapshotCount != 0 { + n += 1 + sovFlagEtcd(uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + n += 1 + sovFlagEtcd(uint64(m.QuotaSizeBytes)) + } + return n +} + +func (m *Flag_Etcd_Tip) Size() (n int) { + var l int + _ = l + if m.SnapshotCount != 0 { + n += 1 + sovFlagEtcd(uint64(m.SnapshotCount)) + } + if m.QuotaSizeBytes != 0 { + n += 1 + sovFlagEtcd(uint64(m.QuotaSizeBytes)) + } + return n +} + +func sovFlagEtcd(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozFlagEtcd(x uint64) (n int) { + return sovFlagEtcd(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Flag_Etcd_V2_3) 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 ErrIntOverflowFlagEtcd + } + 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: flag__etcd__v2_3: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__etcd__v2_3: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType) + } + m.SnapshotCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapshotCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagEtcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagEtcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Flag_Etcd_V3_1) 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 ErrIntOverflowFlagEtcd + } + 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: flag__etcd__v3_1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__etcd__v3_1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType) + } + m.SnapshotCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapshotCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuotaSizeBytes", wireType) + } + m.QuotaSizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuotaSizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagEtcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagEtcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Flag_Etcd_V3_2) 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 ErrIntOverflowFlagEtcd + } + 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: flag__etcd__v3_2: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__etcd__v3_2: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType) + } + m.SnapshotCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapshotCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuotaSizeBytes", wireType) + } + m.QuotaSizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuotaSizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagEtcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagEtcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Flag_Etcd_Tip) 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 ErrIntOverflowFlagEtcd + } + 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: flag__etcd__tip: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__etcd__tip: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType) + } + m.SnapshotCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapshotCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuotaSizeBytes", wireType) + } + m.QuotaSizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuotaSizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagEtcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagEtcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFlagEtcd(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthFlagEtcd + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagEtcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipFlagEtcd(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthFlagEtcd = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFlagEtcd = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("dbtesterpb/flag_etcd.proto", fileDescriptorFlagEtcd) } + +var fileDescriptorFlagEtcd = []byte{ + // 251 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0x49, 0x2a, 0x49, + 0x2d, 0x2e, 0x49, 0x2d, 0x2a, 0x48, 0xd2, 0x4f, 0xcb, 0x49, 0x4c, 0x8f, 0x4f, 0x2d, 0x49, 0x4e, + 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0xc8, 0x49, 0xe9, 0xa6, 0x67, 0x96, 0x64, + 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xa7, 0xe7, 0xeb, 0x83, 0x95, 0x24, 0x95, + 0xa6, 0x81, 0x79, 0x60, 0x0e, 0x98, 0x05, 0xd1, 0xaa, 0x14, 0xcc, 0x25, 0x00, 0x36, 0x0d, 0x6c, + 0x5c, 0x7c, 0x7c, 0x99, 0x51, 0xbc, 0xb1, 0x90, 0x3d, 0x17, 0x6f, 0x70, 0x5e, 0x62, 0x41, 0x71, + 0x46, 0x7e, 0x89, 0x73, 0x7e, 0x69, 0x5e, 0x89, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb3, 0x93, 0xe4, + 0xa7, 0x7b, 0xf2, 0xa2, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0xc5, 0x50, 0xe9, 0xf8, 0x64, 0x90, + 0xbc, 0x52, 0x10, 0xaa, 0x7a, 0xa5, 0x19, 0x8c, 0x68, 0xa6, 0x1a, 0xc7, 0x1b, 0x52, 0x6c, 0xaa, + 0x90, 0x33, 0x17, 0x5f, 0x60, 0x69, 0x7e, 0x49, 0x62, 0x70, 0x66, 0x55, 0xaa, 0x53, 0x65, 0x49, + 0x6a, 0xb1, 0x04, 0x13, 0xd8, 0x04, 0xe9, 0x4f, 0xf7, 0xe4, 0xc5, 0x21, 0x26, 0x14, 0x82, 0xe4, + 0xe3, 0x8b, 0x33, 0xab, 0x52, 0xe3, 0x93, 0x40, 0x2a, 0x94, 0x82, 0xd0, 0xb4, 0x60, 0x73, 0x9a, + 0xd1, 0x20, 0x71, 0xda, 0x74, 0x46, 0x2e, 0x7e, 0x64, 0xa7, 0x95, 0x64, 0x16, 0x0c, 0x0e, 0x97, + 0x39, 0x89, 0x9c, 0x78, 0x28, 0xc7, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, + 0x1e, 0xc9, 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x90, 0xc4, 0x06, 0x4e, 0x41, 0xc6, 0x80, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x5c, 0xec, 0xd8, 0x68, 0x9a, 0x02, 0x00, 0x00, +} diff --git a/dbtesterpb/flag_etcd.proto b/dbtesterpb/flag_etcd.proto new file mode 100644 index 00000000..653dd8ae --- /dev/null +++ b/dbtesterpb/flag_etcd.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +message flag__etcd__v2_3 { + int64 SnapshotCount = 1 [(gogoproto.moretags) = "yaml:\"snapshot_count\""]; +} + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +message flag__etcd__v3_1 { + int64 SnapshotCount = 1 [(gogoproto.moretags) = "yaml:\"snapshot_count\""]; + int64 QuotaSizeBytes = 2 [(gogoproto.moretags) = "yaml:\"quota_size_bytes\""]; +} + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +message flag__etcd__v3_2 { + int64 SnapshotCount = 1 [(gogoproto.moretags) = "yaml:\"snapshot_count\""]; + int64 QuotaSizeBytes = 2 [(gogoproto.moretags) = "yaml:\"quota_size_bytes\""]; +} + +// See https://github.com/coreos/etcd/blob/master/etcdmain/help.go for more. +message flag__etcd__tip { + int64 SnapshotCount = 1 [(gogoproto.moretags) = "yaml:\"snapshot_count\""]; + int64 QuotaSizeBytes = 2 [(gogoproto.moretags) = "yaml:\"quota_size_bytes\""]; +} diff --git a/dbtesterpb/flag_zetcd.pb.go b/dbtesterpb/flag_zetcd.pb.go new file mode 100644 index 00000000..736482b6 --- /dev/null +++ b/dbtesterpb/flag_zetcd.pb.go @@ -0,0 +1,264 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/flag_zetcd.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// Flag_Zetcd_Beta is zetcd-specific flags +// (https://github.com/coreos/zetcd). +type Flag_Zetcd_Beta struct { +} + +func (m *Flag_Zetcd_Beta) Reset() { *m = Flag_Zetcd_Beta{} } +func (m *Flag_Zetcd_Beta) String() string { return proto.CompactTextString(m) } +func (*Flag_Zetcd_Beta) ProtoMessage() {} +func (*Flag_Zetcd_Beta) Descriptor() ([]byte, []int) { return fileDescriptorFlagZetcd, []int{0} } + +func init() { + proto.RegisterType((*Flag_Zetcd_Beta)(nil), "dbtesterpb.flag__zetcd__beta") +} +func (m *Flag_Zetcd_Beta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Zetcd_Beta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func encodeFixed64FlagZetcd(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32FlagZetcd(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintFlagZetcd(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Flag_Zetcd_Beta) Size() (n int) { + var l int + _ = l + return n +} + +func sovFlagZetcd(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozFlagZetcd(x uint64) (n int) { + return sovFlagZetcd(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Flag_Zetcd_Beta) 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 ErrIntOverflowFlagZetcd + } + 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: flag__zetcd__beta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__zetcd__beta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFlagZetcd(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagZetcd + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFlagZetcd(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthFlagZetcd + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZetcd + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipFlagZetcd(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthFlagZetcd = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFlagZetcd = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("dbtesterpb/flag_zetcd.proto", fileDescriptorFlagZetcd) } + +var fileDescriptorFlagZetcd = []byte{ + // 130 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x49, 0x2a, 0x49, + 0x2d, 0x2e, 0x49, 0x2d, 0x2a, 0x48, 0xd2, 0x4f, 0xcb, 0x49, 0x4c, 0x8f, 0xaf, 0x4a, 0x2d, 0x49, + 0x4e, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0x48, 0x4a, 0xe9, 0xa6, 0x67, 0x96, + 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xa7, 0xe7, 0xeb, 0x83, 0x95, 0x24, + 0x95, 0xa6, 0x81, 0x79, 0x60, 0x0e, 0x98, 0x05, 0xd1, 0xaa, 0x24, 0xcc, 0x25, 0x08, 0x36, 0x0e, + 0x62, 0x5e, 0x7c, 0x7c, 0x52, 0x6a, 0x49, 0xa2, 0x93, 0xc8, 0x89, 0x87, 0x72, 0x0c, 0x27, 0x1e, + 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8c, 0xc7, 0x72, 0x0c, 0x49, + 0x6c, 0x60, 0x1d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e, 0xb7, 0x0d, 0x03, 0x8b, 0x00, + 0x00, 0x00, +} diff --git a/dbtesterpb/flag_zetcd.proto b/dbtesterpb/flag_zetcd.proto new file mode 100644 index 00000000..5a88e170 --- /dev/null +++ b/dbtesterpb/flag_zetcd.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// Flag_Zetcd_Beta is zetcd-specific flags +// (https://github.com/coreos/zetcd). +message flag__zetcd__beta { +} diff --git a/dbtesterpb/flag_zookeeper.pb.go b/dbtesterpb/flag_zookeeper.pb.go new file mode 100644 index 00000000..027cde8f --- /dev/null +++ b/dbtesterpb/flag_zookeeper.pb.go @@ -0,0 +1,1032 @@ +// Code generated by protoc-gen-gogo. +// source: dbtesterpb/flag_zookeeper.proto +// DO NOT EDIT! + +package dbtesterpb + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/gogo/protobuf/gogoproto" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +type Flag_Zookeeper_R3_4_9 struct { + // JavaDJuteMaxBuffer is for '-Djute.maxbuffer' flag. + // It is the maximum size, in bytes, of a request or response. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#Unsafe+Options for more. + JavaDJuteMaxBuffer uint64 `protobuf:"varint,1,opt,name=JavaDJuteMaxBuffer,proto3" json:"JavaDJuteMaxBuffer,omitempty" yaml:"java_d_jute_max_buffer"` + // JavaXms is for '-Xms' flag (minimum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + JavaXms string `protobuf:"bytes,2,opt,name=JavaXms,proto3" json:"JavaXms,omitempty" yaml:"java_xms"` + // JavaXmx is for '-Xmx' flag (maximum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + JavaXmx string `protobuf:"bytes,3,opt,name=JavaXmx,proto3" json:"JavaXmx,omitempty" yaml:"java_xmx"` + // MyID contains a single integer in human readable ASCII text that represents the server id. + // Each ZooKeeper server has a unique id. This id is used in two places: the myid file and the + // configuration file. The myid file identifies the server that corresponds to the given data directory. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_dataFileManagement for more. + MyID uint32 `protobuf:"varint,100,opt,name=MyID,proto3" json:"MyID,omitempty"` + // ClientPort is by default '2181'. + // No need to set manually. Inherited from 'database_port_to_connect'. + ClientPort int64 `protobuf:"varint,101,opt,name=ClientPort,proto3" json:"ClientPort,omitempty"` + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html for more. + TickTime int64 `protobuf:"varint,102,opt,name=TickTime,proto3" json:"TickTime,omitempty" yaml:"tick_time"` + InitLimit int64 `protobuf:"varint,103,opt,name=InitLimit,proto3" json:"InitLimit,omitempty" yaml:"init_limit"` + SyncLimit int64 `protobuf:"varint,104,opt,name=SyncLimit,proto3" json:"SyncLimit,omitempty" yaml:"sync_limit"` + SnapCount int64 `protobuf:"varint,105,opt,name=SnapCount,proto3" json:"SnapCount,omitempty" yaml:"snap_count"` + MaxClientConnections int64 `protobuf:"varint,106,opt,name=MaxClientConnections,proto3" json:"MaxClientConnections,omitempty" yaml:"max_client_connections"` +} + +func (m *Flag_Zookeeper_R3_4_9) Reset() { *m = Flag_Zookeeper_R3_4_9{} } +func (m *Flag_Zookeeper_R3_4_9) String() string { return proto.CompactTextString(m) } +func (*Flag_Zookeeper_R3_4_9) ProtoMessage() {} +func (*Flag_Zookeeper_R3_4_9) Descriptor() ([]byte, []int) { + return fileDescriptorFlagZookeeper, []int{0} +} + +type Flag_Zookeeper_R3_5_2Alpha struct { + // JavaDJuteMaxBuffer is for '-Djute.maxbuffer' flag. + // It is the maximum size, in bytes, of a request or response. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#Unsafe+Options for more. + JavaDJuteMaxBuffer uint64 `protobuf:"varint,1,opt,name=JavaDJuteMaxBuffer,proto3" json:"JavaDJuteMaxBuffer,omitempty" yaml:"java_d_jute_max_buffer"` + // JavaXms is for '-Xms' flag (minimum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + JavaXms string `protobuf:"bytes,2,opt,name=JavaXms,proto3" json:"JavaXms,omitempty" yaml:"java_xms"` + // JavaXmx is for '-Xmx' flag (maximum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + JavaXmx string `protobuf:"bytes,3,opt,name=JavaXmx,proto3" json:"JavaXmx,omitempty" yaml:"java_xmx"` + // MyID contains a single integer in human readable ASCII text that represents the server id. + // Each ZooKeeper server has a unique id. This id is used in two places: the myid file and the + // configuration file. The myid file identifies the server that corresponds to the given data directory. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_dataFileManagement for more. + MyID uint32 `protobuf:"varint,100,opt,name=MyID,proto3" json:"MyID,omitempty"` + // ClientPort is by default '2181'. + // No need to set manually. Inherited from 'database_port_to_connect'. + ClientPort int64 `protobuf:"varint,101,opt,name=ClientPort,proto3" json:"ClientPort,omitempty"` + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html for more. + TickTime int64 `protobuf:"varint,102,opt,name=TickTime,proto3" json:"TickTime,omitempty" yaml:"tick_time"` + InitLimit int64 `protobuf:"varint,103,opt,name=InitLimit,proto3" json:"InitLimit,omitempty" yaml:"init_limit"` + SyncLimit int64 `protobuf:"varint,104,opt,name=SyncLimit,proto3" json:"SyncLimit,omitempty" yaml:"sync_limit"` + SnapCount int64 `protobuf:"varint,105,opt,name=SnapCount,proto3" json:"SnapCount,omitempty" yaml:"snap_count"` + MaxClientConnections int64 `protobuf:"varint,106,opt,name=MaxClientConnections,proto3" json:"MaxClientConnections,omitempty" yaml:"max_client_connections"` +} + +func (m *Flag_Zookeeper_R3_5_2Alpha) Reset() { *m = Flag_Zookeeper_R3_5_2Alpha{} } +func (m *Flag_Zookeeper_R3_5_2Alpha) String() string { return proto.CompactTextString(m) } +func (*Flag_Zookeeper_R3_5_2Alpha) ProtoMessage() {} +func (*Flag_Zookeeper_R3_5_2Alpha) Descriptor() ([]byte, []int) { + return fileDescriptorFlagZookeeper, []int{1} +} + +func init() { + proto.RegisterType((*Flag_Zookeeper_R3_4_9)(nil), "dbtesterpb.flag__zookeeper__r3_4_9") + proto.RegisterType((*Flag_Zookeeper_R3_5_2Alpha)(nil), "dbtesterpb.flag__zookeeper__r3_5_2_alpha") +} +func (m *Flag_Zookeeper_R3_4_9) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Zookeeper_R3_4_9) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.JavaDJuteMaxBuffer != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.JavaDJuteMaxBuffer)) + } + if len(m.JavaXms) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(len(m.JavaXms))) + i += copy(dAtA[i:], m.JavaXms) + } + if len(m.JavaXmx) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(len(m.JavaXmx))) + i += copy(dAtA[i:], m.JavaXmx) + } + if m.MyID != 0 { + dAtA[i] = 0xa0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.MyID)) + } + if m.ClientPort != 0 { + dAtA[i] = 0xa8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.ClientPort)) + } + if m.TickTime != 0 { + dAtA[i] = 0xb0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.TickTime)) + } + if m.InitLimit != 0 { + dAtA[i] = 0xb8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.InitLimit)) + } + if m.SyncLimit != 0 { + dAtA[i] = 0xc0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.SyncLimit)) + } + if m.SnapCount != 0 { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.SnapCount)) + } + if m.MaxClientConnections != 0 { + dAtA[i] = 0xd0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.MaxClientConnections)) + } + return i, nil +} + +func (m *Flag_Zookeeper_R3_5_2Alpha) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Flag_Zookeeper_R3_5_2Alpha) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.JavaDJuteMaxBuffer != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.JavaDJuteMaxBuffer)) + } + if len(m.JavaXms) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(len(m.JavaXms))) + i += copy(dAtA[i:], m.JavaXms) + } + if len(m.JavaXmx) > 0 { + dAtA[i] = 0x1a + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(len(m.JavaXmx))) + i += copy(dAtA[i:], m.JavaXmx) + } + if m.MyID != 0 { + dAtA[i] = 0xa0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.MyID)) + } + if m.ClientPort != 0 { + dAtA[i] = 0xa8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.ClientPort)) + } + if m.TickTime != 0 { + dAtA[i] = 0xb0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.TickTime)) + } + if m.InitLimit != 0 { + dAtA[i] = 0xb8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.InitLimit)) + } + if m.SyncLimit != 0 { + dAtA[i] = 0xc0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.SyncLimit)) + } + if m.SnapCount != 0 { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.SnapCount)) + } + if m.MaxClientConnections != 0 { + dAtA[i] = 0xd0 + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintFlagZookeeper(dAtA, i, uint64(m.MaxClientConnections)) + } + return i, nil +} + +func encodeFixed64FlagZookeeper(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32FlagZookeeper(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintFlagZookeeper(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Flag_Zookeeper_R3_4_9) Size() (n int) { + var l int + _ = l + if m.JavaDJuteMaxBuffer != 0 { + n += 1 + sovFlagZookeeper(uint64(m.JavaDJuteMaxBuffer)) + } + l = len(m.JavaXms) + if l > 0 { + n += 1 + l + sovFlagZookeeper(uint64(l)) + } + l = len(m.JavaXmx) + if l > 0 { + n += 1 + l + sovFlagZookeeper(uint64(l)) + } + if m.MyID != 0 { + n += 2 + sovFlagZookeeper(uint64(m.MyID)) + } + if m.ClientPort != 0 { + n += 2 + sovFlagZookeeper(uint64(m.ClientPort)) + } + if m.TickTime != 0 { + n += 2 + sovFlagZookeeper(uint64(m.TickTime)) + } + if m.InitLimit != 0 { + n += 2 + sovFlagZookeeper(uint64(m.InitLimit)) + } + if m.SyncLimit != 0 { + n += 2 + sovFlagZookeeper(uint64(m.SyncLimit)) + } + if m.SnapCount != 0 { + n += 2 + sovFlagZookeeper(uint64(m.SnapCount)) + } + if m.MaxClientConnections != 0 { + n += 2 + sovFlagZookeeper(uint64(m.MaxClientConnections)) + } + return n +} + +func (m *Flag_Zookeeper_R3_5_2Alpha) Size() (n int) { + var l int + _ = l + if m.JavaDJuteMaxBuffer != 0 { + n += 1 + sovFlagZookeeper(uint64(m.JavaDJuteMaxBuffer)) + } + l = len(m.JavaXms) + if l > 0 { + n += 1 + l + sovFlagZookeeper(uint64(l)) + } + l = len(m.JavaXmx) + if l > 0 { + n += 1 + l + sovFlagZookeeper(uint64(l)) + } + if m.MyID != 0 { + n += 2 + sovFlagZookeeper(uint64(m.MyID)) + } + if m.ClientPort != 0 { + n += 2 + sovFlagZookeeper(uint64(m.ClientPort)) + } + if m.TickTime != 0 { + n += 2 + sovFlagZookeeper(uint64(m.TickTime)) + } + if m.InitLimit != 0 { + n += 2 + sovFlagZookeeper(uint64(m.InitLimit)) + } + if m.SyncLimit != 0 { + n += 2 + sovFlagZookeeper(uint64(m.SyncLimit)) + } + if m.SnapCount != 0 { + n += 2 + sovFlagZookeeper(uint64(m.SnapCount)) + } + if m.MaxClientConnections != 0 { + n += 2 + sovFlagZookeeper(uint64(m.MaxClientConnections)) + } + return n +} + +func sovFlagZookeeper(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozFlagZookeeper(x uint64) (n int) { + return sovFlagZookeeper(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Flag_Zookeeper_R3_4_9) 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 ErrIntOverflowFlagZookeeper + } + 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: flag__zookeeper__r3_4_9: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__zookeeper__r3_4_9: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaDJuteMaxBuffer", wireType) + } + m.JavaDJuteMaxBuffer = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.JavaDJuteMaxBuffer |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaXms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + 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 ErrInvalidLengthFlagZookeeper + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JavaXms = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaXmx", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + 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 ErrInvalidLengthFlagZookeeper + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JavaXmx = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 100: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MyID", wireType) + } + m.MyID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MyID |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 101: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientPort", wireType) + } + m.ClientPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClientPort |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 102: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TickTime", wireType) + } + m.TickTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TickTime |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 103: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InitLimit", wireType) + } + m.InitLimit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.InitLimit |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 104: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SyncLimit", wireType) + } + m.SyncLimit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SyncLimit |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 105: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapCount", wireType) + } + m.SnapCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 106: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxClientConnections", wireType) + } + m.MaxClientConnections = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxClientConnections |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagZookeeper(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagZookeeper + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Flag_Zookeeper_R3_5_2Alpha) 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 ErrIntOverflowFlagZookeeper + } + 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: flag__zookeeper__r3_5_2_alpha: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: flag__zookeeper__r3_5_2_alpha: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaDJuteMaxBuffer", wireType) + } + m.JavaDJuteMaxBuffer = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.JavaDJuteMaxBuffer |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaXms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + 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 ErrInvalidLengthFlagZookeeper + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JavaXms = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JavaXmx", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + 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 ErrInvalidLengthFlagZookeeper + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JavaXmx = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 100: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MyID", wireType) + } + m.MyID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MyID |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 101: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientPort", wireType) + } + m.ClientPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClientPort |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 102: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TickTime", wireType) + } + m.TickTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TickTime |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 103: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InitLimit", wireType) + } + m.InitLimit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.InitLimit |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 104: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SyncLimit", wireType) + } + m.SyncLimit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SyncLimit |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 105: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SnapCount", wireType) + } + m.SnapCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SnapCount |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 106: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxClientConnections", wireType) + } + m.MaxClientConnections = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxClientConnections |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFlagZookeeper(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthFlagZookeeper + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFlagZookeeper(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthFlagZookeeper + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowFlagZookeeper + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipFlagZookeeper(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthFlagZookeeper = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFlagZookeeper = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("dbtesterpb/flag_zookeeper.proto", fileDescriptorFlagZookeeper) } + +var fileDescriptorFlagZookeeper = []byte{ + // 442 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcf, 0x6e, 0xd3, 0x30, + 0x18, 0xc0, 0x17, 0x56, 0x01, 0xb3, 0x84, 0x00, 0x53, 0x84, 0x85, 0xb4, 0xa4, 0xf8, 0xd4, 0xcb, + 0x56, 0x44, 0xe1, 0x00, 0xc7, 0x74, 0x97, 0x4d, 0x54, 0x82, 0x30, 0x24, 0x6e, 0x96, 0xe3, 0x3a, + 0xa9, 0xdb, 0xd8, 0x8e, 0x12, 0x67, 0x4a, 0x79, 0x12, 0x9e, 0x80, 0x13, 0x0f, 0xb2, 0x23, 0x4f, + 0x50, 0x41, 0x79, 0x83, 0x3c, 0x01, 0x8a, 0xa3, 0x25, 0x15, 0x74, 0x6f, 0xd0, 0xdb, 0xf7, 0xe7, + 0xf7, 0xfb, 0xa2, 0xe8, 0xfb, 0x64, 0xe0, 0xcd, 0x42, 0xc3, 0x73, 0xc3, 0xb3, 0x34, 0x1c, 0x45, + 0x09, 0x8d, 0xc9, 0x57, 0xad, 0x97, 0x9c, 0xa7, 0x3c, 0x3b, 0x4d, 0x33, 0x6d, 0x34, 0x04, 0x1d, + 0xf0, 0xfc, 0x24, 0x16, 0x66, 0x5e, 0x84, 0xa7, 0x4c, 0xcb, 0x51, 0xac, 0x63, 0x3d, 0xb2, 0x48, + 0x58, 0x44, 0x36, 0xb3, 0x89, 0x8d, 0x1a, 0x15, 0x7f, 0xef, 0x81, 0x67, 0x76, 0x66, 0x37, 0x94, + 0x90, 0x6c, 0x4c, 0x5e, 0x93, 0xb7, 0xf0, 0x23, 0x80, 0x17, 0xf4, 0x8a, 0x9e, 0x5d, 0x14, 0x86, + 0x4f, 0x69, 0xe9, 0x17, 0x51, 0xc4, 0x33, 0xe4, 0x0c, 0x9c, 0x61, 0xcf, 0x7f, 0x51, 0xad, 0xbd, + 0xe3, 0x15, 0x95, 0xc9, 0x3b, 0xbc, 0xa0, 0x57, 0x94, 0xcc, 0xc8, 0xa2, 0x30, 0x9c, 0x48, 0x5a, + 0x92, 0xd0, 0x72, 0x38, 0xd8, 0x21, 0xc3, 0x13, 0x70, 0xaf, 0xae, 0x7e, 0x91, 0x39, 0xba, 0x33, + 0x70, 0x86, 0x47, 0xfe, 0x93, 0x6a, 0xed, 0x3d, 0xdc, 0x9a, 0x53, 0xca, 0x1c, 0x07, 0x37, 0x4c, + 0x87, 0x97, 0xe8, 0xf0, 0x16, 0xbc, 0x6c, 0xf1, 0x12, 0x42, 0xd0, 0x9b, 0xae, 0xce, 0xcf, 0xd0, + 0x6c, 0xe0, 0x0c, 0x1f, 0x04, 0x36, 0x86, 0x2e, 0x00, 0x93, 0x44, 0x70, 0x65, 0x3e, 0xe8, 0xcc, + 0x20, 0x3e, 0x70, 0x86, 0x87, 0xc1, 0x56, 0x05, 0xbe, 0x04, 0xf7, 0x2f, 0x05, 0x5b, 0x5e, 0x0a, + 0xc9, 0x51, 0x54, 0x77, 0xfd, 0x7e, 0xb5, 0xf6, 0x1e, 0x35, 0xdf, 0x30, 0x82, 0x2d, 0x89, 0x11, + 0x92, 0xe3, 0xa0, 0xa5, 0xe0, 0x18, 0x1c, 0x9d, 0x2b, 0x61, 0xde, 0x0b, 0x29, 0x0c, 0x8a, 0xad, + 0xf2, 0xb4, 0x5a, 0x7b, 0x8f, 0x1b, 0x45, 0x28, 0x61, 0x48, 0x52, 0xf7, 0x70, 0xd0, 0x71, 0xb5, + 0xf4, 0x69, 0xa5, 0x58, 0x23, 0xcd, 0xff, 0x95, 0xf2, 0x95, 0x62, 0xad, 0xd4, 0x72, 0x56, 0x52, + 0x34, 0x9d, 0xe8, 0x42, 0x19, 0x24, 0xfe, 0x93, 0x14, 0x4d, 0x09, 0xab, 0x7b, 0xb5, 0x74, 0xc3, + 0xc1, 0xcf, 0xa0, 0x3f, 0xa5, 0x65, 0xf3, 0x87, 0x13, 0xad, 0x14, 0x67, 0x46, 0x68, 0x95, 0xa3, + 0x85, 0xf5, 0xb7, 0xf6, 0x56, 0xef, 0x8a, 0x59, 0x8c, 0xb0, 0x8e, 0xc3, 0xc1, 0x4e, 0x1d, 0xff, + 0xe8, 0x81, 0xe3, 0x5d, 0x87, 0xf2, 0x86, 0xbc, 0x22, 0x34, 0x49, 0xe7, 0x74, 0x7f, 0x2e, 0xfb, + 0x73, 0x69, 0xcb, 0x7e, 0xff, 0xfa, 0xb7, 0x7b, 0x70, 0xbd, 0x71, 0x9d, 0x9f, 0x1b, 0xd7, 0xf9, + 0xb5, 0x71, 0x9d, 0x6f, 0x7f, 0xdc, 0x83, 0xf0, 0xae, 0x7d, 0x74, 0xc6, 0x7f, 0x03, 0x00, 0x00, + 0xff, 0xff, 0x29, 0x97, 0xdc, 0xa7, 0xd2, 0x04, 0x00, 0x00, +} diff --git a/dbtesterpb/flag_zookeeper.proto b/dbtesterpb/flag_zookeeper.proto new file mode 100644 index 00000000..42e65b79 --- /dev/null +++ b/dbtesterpb/flag_zookeeper.proto @@ -0,0 +1,73 @@ +syntax = "proto3"; +package dbtesterpb; + +import "github.com/gogo/protobuf/gogoproto/gogo.proto"; + +option (gogoproto.marshaler_all) = true; +option (gogoproto.sizer_all) = true; +option (gogoproto.unmarshaler_all) = true; +option (gogoproto.goproto_getters_all) = false; + +message flag__zookeeper__r3_4_9 { + // JavaDJuteMaxBuffer is for '-Djute.maxbuffer' flag. + // It is the maximum size, in bytes, of a request or response. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#Unsafe+Options for more. + uint64 JavaDJuteMaxBuffer = 1 [(gogoproto.moretags) = "yaml:\"java_d_jute_max_buffer\""]; + + // JavaXms is for '-Xms' flag (minimum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + string JavaXms = 2 [(gogoproto.moretags) = "yaml:\"java_xms\""]; + + // JavaXmx is for '-Xmx' flag (maximum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + string JavaXmx = 3 [(gogoproto.moretags) = "yaml:\"java_xmx\""]; + + // MyID contains a single integer in human readable ASCII text that represents the server id. + // Each ZooKeeper server has a unique id. This id is used in two places: the myid file and the + // configuration file. The myid file identifies the server that corresponds to the given data directory. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_dataFileManagement for more. + uint32 MyID = 100; + + // ClientPort is by default '2181'. + // No need to set manually. Inherited from 'database_port_to_connect'. + int64 ClientPort = 101; + + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html for more. + int64 TickTime = 102 [(gogoproto.moretags) = "yaml:\"tick_time\""]; + int64 InitLimit = 103 [(gogoproto.moretags) = "yaml:\"init_limit\""]; + int64 SyncLimit = 104 [(gogoproto.moretags) = "yaml:\"sync_limit\""]; + int64 SnapCount = 105 [(gogoproto.moretags) = "yaml:\"snap_count\""]; + int64 MaxClientConnections = 106 [(gogoproto.moretags) = "yaml:\"max_client_connections\""]; +} + +message flag__zookeeper__r3_5_2_alpha { + // JavaDJuteMaxBuffer is for '-Djute.maxbuffer' flag. + // It is the maximum size, in bytes, of a request or response. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#Unsafe+Options for more. + uint64 JavaDJuteMaxBuffer = 1 [(gogoproto.moretags) = "yaml:\"java_d_jute_max_buffer\""]; + + // JavaXms is for '-Xms' flag (minimum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + string JavaXms = 2 [(gogoproto.moretags) = "yaml:\"java_xms\""]; + + // JavaXmx is for '-Xmx' flag (maximum Java heap size). + // See https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html for more. + string JavaXmx = 3 [(gogoproto.moretags) = "yaml:\"java_xmx\""]; + + // MyID contains a single integer in human readable ASCII text that represents the server id. + // Each ZooKeeper server has a unique id. This id is used in two places: the myid file and the + // configuration file. The myid file identifies the server that corresponds to the given data directory. + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_dataFileManagement for more. + uint32 MyID = 100; + + // ClientPort is by default '2181'. + // No need to set manually. Inherited from 'database_port_to_connect'. + int64 ClientPort = 101; + + // See http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html for more. + int64 TickTime = 102 [(gogoproto.moretags) = "yaml:\"tick_time\""]; + int64 InitLimit = 103 [(gogoproto.moretags) = "yaml:\"init_limit\""]; + int64 SyncLimit = 104 [(gogoproto.moretags) = "yaml:\"sync_limit\""]; + int64 SnapCount = 105 [(gogoproto.moretags) = "yaml:\"snap_count\""]; + int64 MaxClientConnections = 106 [(gogoproto.moretags) = "yaml:\"max_client_connections\""]; +} diff --git a/dbtesterpb/message.pb.go b/dbtesterpb/message.pb.go index 432c3092..8340596c 100644 --- a/dbtesterpb/message.pb.go +++ b/dbtesterpb/message.pb.go @@ -2,16 +2,6 @@ // source: dbtesterpb/message.proto // DO NOT EDIT! -/* - Package dbtesterpb is a generated protocol buffer package. - - It is generated from these files: - dbtesterpb/message.proto - - It has these top-level messages: - Request - Response -*/ package dbtesterpb import proto "github.com/golang/protobuf/proto" @@ -31,80 +21,49 @@ var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Request_Operation int32 +type Operation int32 const ( - Request_Start Request_Operation = 0 - Request_Stop Request_Operation = 1 - Request_Heartbeat Request_Operation = 2 + Operation_Start Operation = 0 + Operation_Stop Operation = 1 + Operation_Heartbeat Operation = 2 ) -var Request_Operation_name = map[int32]string{ +var Operation_name = map[int32]string{ 0: "Start", 1: "Stop", 2: "Heartbeat", } -var Request_Operation_value = map[string]int32{ +var Operation_value = map[string]int32{ "Start": 0, "Stop": 1, "Heartbeat": 2, } -func (x Request_Operation) String() string { - return proto.EnumName(Request_Operation_name, int32(x)) +func (x Operation) String() string { + return proto.EnumName(Operation_name, int32(x)) } -func (Request_Operation) EnumDescriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0, 0} } - -type Request_Database int32 - -const ( - Request_etcdv2 Request_Database = 0 - Request_etcdv3 Request_Database = 1 - Request_zookeeper Request_Database = 2 - Request_consul Request_Database = 3 - Request_zetcd Request_Database = 4 - Request_cetcd Request_Database = 5 -) - -var Request_Database_name = map[int32]string{ - 0: "etcdv2", - 1: "etcdv3", - 2: "zookeeper", - 3: "consul", - 4: "zetcd", - 5: "cetcd", -} -var Request_Database_value = map[string]int32{ - "etcdv2": 0, - "etcdv3": 1, - "zookeeper": 2, - "consul": 3, - "zetcd": 4, - "cetcd": 5, -} - -func (x Request_Database) String() string { - return proto.EnumName(Request_Database_name, int32(x)) -} -func (Request_Database) EnumDescriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0, 1} } +func (Operation) EnumDescriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0} } type Request struct { - Operation Request_Operation `protobuf:"varint,1,opt,name=operation,proto3,enum=dbtesterpb.Request_Operation" json:"operation,omitempty"` - TriggerLogUpload bool `protobuf:"varint,2,opt,name=triggerLogUpload,proto3" json:"triggerLogUpload,omitempty"` - DatabaseID Request_Database `protobuf:"varint,3,opt,name=databaseID,proto3,enum=dbtesterpb.Request_Database" json:"databaseID,omitempty"` - DatabaseTag string `protobuf:"bytes,4,opt,name=databaseTag,proto3" json:"databaseTag,omitempty"` - PeerIPsString string `protobuf:"bytes,5,opt,name=peerIPsString,proto3" json:"peerIPsString,omitempty"` - IpIndex uint32 `protobuf:"varint,6,opt,name=ipIndex,proto3" json:"ipIndex,omitempty"` - CurrentClientNumber int64 `protobuf:"varint,7,opt,name=currentClientNumber,proto3" json:"currentClientNumber,omitempty"` - Control *Request_Control `protobuf:"bytes,8,opt,name=control" json:"control,omitempty"` - Etcdv3Config *Request_Etcdv3 `protobuf:"bytes,9,opt,name=etcdv3Config" json:"etcdv3Config,omitempty"` - ZookeeperConfig *Request_Zookeeper `protobuf:"bytes,10,opt,name=zookeeperConfig" json:"zookeeperConfig,omitempty"` + Operation Operation `protobuf:"varint,1,opt,name=Operation,proto3,enum=dbtesterpb.Operation" json:"Operation,omitempty"` + TriggerLogUpload bool `protobuf:"varint,2,opt,name=TriggerLogUpload,proto3" json:"TriggerLogUpload,omitempty"` + DatabaseID DatabaseID `protobuf:"varint,3,opt,name=DatabaseID,proto3,enum=dbtesterpb.DatabaseID" json:"DatabaseID,omitempty"` + DatabaseTag string `protobuf:"bytes,4,opt,name=DatabaseTag,proto3" json:"DatabaseTag,omitempty"` + PeerIPsString string `protobuf:"bytes,5,opt,name=PeerIPsString,proto3" json:"PeerIPsString,omitempty"` + IPIndex uint32 `protobuf:"varint,6,opt,name=IPIndex,proto3" json:"IPIndex,omitempty"` + CurrentClientNumber int64 `protobuf:"varint,7,opt,name=CurrentClientNumber,proto3" json:"CurrentClientNumber,omitempty"` + ConfigClientMachineInitial *ConfigClientMachineInitial `protobuf:"bytes,8,opt,name=ConfigClientMachineInitial" json:"ConfigClientMachineInitial,omitempty"` + Flag_Etcd_V2_3 *Flag_Etcd_V2_3 `protobuf:"bytes,100,opt,name=flag__etcd__v2_3,json=flagEtcdV23" json:"flag__etcd__v2_3,omitempty"` + Flag_Etcd_V3_1 *Flag_Etcd_V3_1 `protobuf:"bytes,101,opt,name=flag__etcd__v3_1,json=flagEtcdV31" json:"flag__etcd__v3_1,omitempty"` + Flag_Etcd_V3_2 *Flag_Etcd_V3_2 `protobuf:"bytes,102,opt,name=flag__etcd__v3_2,json=flagEtcdV32" json:"flag__etcd__v3_2,omitempty"` + Flag_Etcd_Tip *Flag_Etcd_Tip `protobuf:"bytes,103,opt,name=flag__etcd__tip,json=flagEtcdTip" json:"flag__etcd__tip,omitempty"` + Flag_Zookeeper_R3_4_9 *Flag_Zookeeper_R3_4_9 `protobuf:"bytes,200,opt,name=flag__zookeeper__r3_4_9,json=flagZookeeperR349" json:"flag__zookeeper__r3_4_9,omitempty"` + Flag_Zookeeper_R3_5_2Alpha *Flag_Zookeeper_R3_5_2Alpha `protobuf:"bytes,201,opt,name=flag__zookeeper__r3_5_2_alpha,json=flagZookeeperR352Alpha" json:"flag__zookeeper__r3_5_2_alpha,omitempty"` + Flag_Consul_V0_7_5 *Flag_Consul_V0_7_5 `protobuf:"bytes,300,opt,name=flag__consul__v0_7_5,json=flagConsulV075" json:"flag__consul__v0_7_5,omitempty"` + Flag_Consul_V0_8_0 *Flag_Consul_V0_8_0 `protobuf:"bytes,301,opt,name=flag__consul__v0_8_0,json=flagConsulV080" json:"flag__consul__v0_8_0,omitempty"` + Flag_Cetcd_Beta *Flag_Cetcd_Beta `protobuf:"bytes,400,opt,name=flag__cetcd__beta,json=flagCetcdBeta" json:"flag__cetcd__beta,omitempty"` + Flag_Zetcd_Beta *Flag_Zetcd_Beta `protobuf:"bytes,500,opt,name=flag__zetcd__beta,json=flagZetcdBeta" json:"flag__zetcd__beta,omitempty"` } func (m *Request) Reset() { *m = Request{} } @@ -112,48 +71,11 @@ func (m *Request) String() string { return proto.CompactTextString(m) func (*Request) ProtoMessage() {} func (*Request) Descriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0} } -type Request_Control struct { - GoogleCloudProjectName string `protobuf:"bytes,1,opt,name=googleCloudProjectName,proto3" json:"googleCloudProjectName,omitempty"` - GoogleCloudStorageKey string `protobuf:"bytes,2,opt,name=googleCloudStorageKey,proto3" json:"googleCloudStorageKey,omitempty"` - GoogleCloudStorageBucketName string `protobuf:"bytes,3,opt,name=googleCloudStorageBucketName,proto3" json:"googleCloudStorageBucketName,omitempty"` - GoogleCloudStorageSubDirectory string `protobuf:"bytes,4,opt,name=googleCloudStorageSubDirectory,proto3" json:"googleCloudStorageSubDirectory,omitempty"` -} - -func (m *Request_Control) Reset() { *m = Request_Control{} } -func (m *Request_Control) String() string { return proto.CompactTextString(m) } -func (*Request_Control) ProtoMessage() {} -func (*Request_Control) Descriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0, 0} } - -type Request_Etcdv3 struct { - SnapCount int64 `protobuf:"varint,1,opt,name=snapCount,proto3" json:"snapCount,omitempty"` - QuotaSizeBytes int64 `protobuf:"varint,2,opt,name=quotaSizeBytes,proto3" json:"quotaSizeBytes,omitempty"` -} - -func (m *Request_Etcdv3) Reset() { *m = Request_Etcdv3{} } -func (m *Request_Etcdv3) String() string { return proto.CompactTextString(m) } -func (*Request_Etcdv3) ProtoMessage() {} -func (*Request_Etcdv3) Descriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0, 1} } - -type Request_Zookeeper struct { - MyID uint32 `protobuf:"varint,1,opt,name=myID,proto3" json:"myID,omitempty"` - TickTime int64 `protobuf:"varint,2,opt,name=tickTime,proto3" json:"tickTime,omitempty"` - ClientPort int64 `protobuf:"varint,3,opt,name=clientPort,proto3" json:"clientPort,omitempty"` - InitLimit int64 `protobuf:"varint,4,opt,name=initLimit,proto3" json:"initLimit,omitempty"` - SyncLimit int64 `protobuf:"varint,5,opt,name=syncLimit,proto3" json:"syncLimit,omitempty"` - SnapCount int64 `protobuf:"varint,6,opt,name=snapCount,proto3" json:"snapCount,omitempty"` - MaxClientConnections int64 `protobuf:"varint,7,opt,name=maxClientConnections,proto3" json:"maxClientConnections,omitempty"` -} - -func (m *Request_Zookeeper) Reset() { *m = Request_Zookeeper{} } -func (m *Request_Zookeeper) String() string { return proto.CompactTextString(m) } -func (*Request_Zookeeper) ProtoMessage() {} -func (*Request_Zookeeper) Descriptor() ([]byte, []int) { return fileDescriptorMessage, []int{0, 2} } - type Response struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Success bool `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"` // DiskSpaceUsageBytes is the data size of the database on disk in bytes. // It measures after database is requested to stop. - DiskSpaceUsageBytes int64 `protobuf:"varint,2,opt,name=diskSpaceUsageBytes,proto3" json:"diskSpaceUsageBytes,omitempty"` + DiskSpaceUsageBytes int64 `protobuf:"varint,2,opt,name=DiskSpaceUsageBytes,proto3" json:"DiskSpaceUsageBytes,omitempty"` } func (m *Response) Reset() { *m = Response{} } @@ -163,12 +85,8 @@ func (*Response) Descriptor() ([]byte, []int) { return fileDescriptorMessage, [] func init() { proto.RegisterType((*Request)(nil), "dbtesterpb.Request") - proto.RegisterType((*Request_Control)(nil), "dbtesterpb.Request.Control") - proto.RegisterType((*Request_Etcdv3)(nil), "dbtesterpb.Request.Etcdv3") - proto.RegisterType((*Request_Zookeeper)(nil), "dbtesterpb.Request.Zookeeper") proto.RegisterType((*Response)(nil), "dbtesterpb.Response") - proto.RegisterEnum("dbtesterpb.Request_Operation", Request_Operation_name, Request_Operation_value) - proto.RegisterEnum("dbtesterpb.Request_Database", Request_Database_name, Request_Database_value) + proto.RegisterEnum("dbtesterpb.Operation", Operation_name, Operation_value) } // Reference imports to suppress errors if they are not otherwise used. @@ -290,168 +208,145 @@ func (m *Request) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintMessage(dAtA, i, uint64(len(m.PeerIPsString))) i += copy(dAtA[i:], m.PeerIPsString) } - if m.IpIndex != 0 { + if m.IPIndex != 0 { dAtA[i] = 0x30 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.IpIndex)) + i = encodeVarintMessage(dAtA, i, uint64(m.IPIndex)) } if m.CurrentClientNumber != 0 { dAtA[i] = 0x38 i++ i = encodeVarintMessage(dAtA, i, uint64(m.CurrentClientNumber)) } - if m.Control != nil { + if m.ConfigClientMachineInitial != nil { dAtA[i] = 0x42 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.Control.Size())) - n1, err := m.Control.MarshalTo(dAtA[i:]) + i = encodeVarintMessage(dAtA, i, uint64(m.ConfigClientMachineInitial.Size())) + n1, err := m.ConfigClientMachineInitial.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n1 } - if m.Etcdv3Config != nil { - dAtA[i] = 0x4a + if m.Flag_Etcd_V2_3 != nil { + dAtA[i] = 0xa2 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.Etcdv3Config.Size())) - n2, err := m.Etcdv3Config.MarshalTo(dAtA[i:]) + dAtA[i] = 0x6 + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Etcd_V2_3.Size())) + n2, err := m.Flag_Etcd_V2_3.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n2 } - if m.ZookeeperConfig != nil { - dAtA[i] = 0x52 + if m.Flag_Etcd_V3_1 != nil { + dAtA[i] = 0xaa i++ - i = encodeVarintMessage(dAtA, i, uint64(m.ZookeeperConfig.Size())) - n3, err := m.ZookeeperConfig.MarshalTo(dAtA[i:]) + dAtA[i] = 0x6 + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Etcd_V3_1.Size())) + n3, err := m.Flag_Etcd_V3_1.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n3 } - return i, nil -} - -func (m *Request_Control) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Request_Control) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.GoogleCloudProjectName) > 0 { - dAtA[i] = 0xa + if m.Flag_Etcd_V3_2 != nil { + dAtA[i] = 0xb2 i++ - i = encodeVarintMessage(dAtA, i, uint64(len(m.GoogleCloudProjectName))) - i += copy(dAtA[i:], m.GoogleCloudProjectName) + dAtA[i] = 0x6 + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Etcd_V3_2.Size())) + n4, err := m.Flag_Etcd_V3_2.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 } - if len(m.GoogleCloudStorageKey) > 0 { + if m.Flag_Etcd_Tip != nil { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x6 + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Etcd_Tip.Size())) + n5, err := m.Flag_Etcd_Tip.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.Flag_Zookeeper_R3_4_9 != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Zookeeper_R3_4_9.Size())) + n6, err := m.Flag_Zookeeper_R3_4_9.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if m.Flag_Zookeeper_R3_5_2Alpha != nil { + dAtA[i] = 0xca + i++ + dAtA[i] = 0xc + i++ + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Zookeeper_R3_5_2Alpha.Size())) + n7, err := m.Flag_Zookeeper_R3_5_2Alpha.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.Flag_Consul_V0_7_5 != nil { + dAtA[i] = 0xe2 + i++ dAtA[i] = 0x12 i++ - i = encodeVarintMessage(dAtA, i, uint64(len(m.GoogleCloudStorageKey))) - i += copy(dAtA[i:], m.GoogleCloudStorageKey) + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Consul_V0_7_5.Size())) + n8, err := m.Flag_Consul_V0_7_5.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 } - if len(m.GoogleCloudStorageBucketName) > 0 { - dAtA[i] = 0x1a + if m.Flag_Consul_V0_8_0 != nil { + dAtA[i] = 0xea i++ - i = encodeVarintMessage(dAtA, i, uint64(len(m.GoogleCloudStorageBucketName))) - i += copy(dAtA[i:], m.GoogleCloudStorageBucketName) - } - if len(m.GoogleCloudStorageSubDirectory) > 0 { - dAtA[i] = 0x22 + dAtA[i] = 0x12 i++ - i = encodeVarintMessage(dAtA, i, uint64(len(m.GoogleCloudStorageSubDirectory))) - i += copy(dAtA[i:], m.GoogleCloudStorageSubDirectory) + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Consul_V0_8_0.Size())) + n9, err := m.Flag_Consul_V0_8_0.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 } - return i, nil -} - -func (m *Request_Etcdv3) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Request_Etcdv3) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.SnapCount != 0 { - dAtA[i] = 0x8 + if m.Flag_Cetcd_Beta != nil { + dAtA[i] = 0x82 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.SnapCount)) - } - if m.QuotaSizeBytes != 0 { - dAtA[i] = 0x10 + dAtA[i] = 0x19 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.QuotaSizeBytes)) + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Cetcd_Beta.Size())) + n10, err := m.Flag_Cetcd_Beta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 } - return i, nil -} - -func (m *Request_Zookeeper) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Request_Zookeeper) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.MyID != 0 { - dAtA[i] = 0x8 + if m.Flag_Zetcd_Beta != nil { + dAtA[i] = 0xa2 i++ - i = encodeVarintMessage(dAtA, i, uint64(m.MyID)) - } - if m.TickTime != 0 { - dAtA[i] = 0x10 + dAtA[i] = 0x1f i++ - i = encodeVarintMessage(dAtA, i, uint64(m.TickTime)) - } - if m.ClientPort != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintMessage(dAtA, i, uint64(m.ClientPort)) - } - if m.InitLimit != 0 { - dAtA[i] = 0x20 - i++ - i = encodeVarintMessage(dAtA, i, uint64(m.InitLimit)) - } - if m.SyncLimit != 0 { - dAtA[i] = 0x28 - i++ - i = encodeVarintMessage(dAtA, i, uint64(m.SyncLimit)) - } - if m.SnapCount != 0 { - dAtA[i] = 0x30 - i++ - i = encodeVarintMessage(dAtA, i, uint64(m.SnapCount)) - } - if m.MaxClientConnections != 0 { - dAtA[i] = 0x38 - i++ - i = encodeVarintMessage(dAtA, i, uint64(m.MaxClientConnections)) + i = encodeVarintMessage(dAtA, i, uint64(m.Flag_Zetcd_Beta.Size())) + n11, err := m.Flag_Zetcd_Beta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 } return i, nil } @@ -536,84 +431,55 @@ func (m *Request) Size() (n int) { if l > 0 { n += 1 + l + sovMessage(uint64(l)) } - if m.IpIndex != 0 { - n += 1 + sovMessage(uint64(m.IpIndex)) + if m.IPIndex != 0 { + n += 1 + sovMessage(uint64(m.IPIndex)) } if m.CurrentClientNumber != 0 { n += 1 + sovMessage(uint64(m.CurrentClientNumber)) } - if m.Control != nil { - l = m.Control.Size() + if m.ConfigClientMachineInitial != nil { + l = m.ConfigClientMachineInitial.Size() n += 1 + l + sovMessage(uint64(l)) } - if m.Etcdv3Config != nil { - l = m.Etcdv3Config.Size() - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Etcd_V2_3 != nil { + l = m.Flag_Etcd_V2_3.Size() + n += 2 + l + sovMessage(uint64(l)) } - if m.ZookeeperConfig != nil { - l = m.ZookeeperConfig.Size() - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Etcd_V3_1 != nil { + l = m.Flag_Etcd_V3_1.Size() + n += 2 + l + sovMessage(uint64(l)) } - return n -} - -func (m *Request_Control) Size() (n int) { - var l int - _ = l - l = len(m.GoogleCloudProjectName) - if l > 0 { - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Etcd_V3_2 != nil { + l = m.Flag_Etcd_V3_2.Size() + n += 2 + l + sovMessage(uint64(l)) } - l = len(m.GoogleCloudStorageKey) - if l > 0 { - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Etcd_Tip != nil { + l = m.Flag_Etcd_Tip.Size() + n += 2 + l + sovMessage(uint64(l)) } - l = len(m.GoogleCloudStorageBucketName) - if l > 0 { - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Zookeeper_R3_4_9 != nil { + l = m.Flag_Zookeeper_R3_4_9.Size() + n += 2 + l + sovMessage(uint64(l)) } - l = len(m.GoogleCloudStorageSubDirectory) - if l > 0 { - n += 1 + l + sovMessage(uint64(l)) + if m.Flag_Zookeeper_R3_5_2Alpha != nil { + l = m.Flag_Zookeeper_R3_5_2Alpha.Size() + n += 2 + l + sovMessage(uint64(l)) } - return n -} - -func (m *Request_Etcdv3) Size() (n int) { - var l int - _ = l - if m.SnapCount != 0 { - n += 1 + sovMessage(uint64(m.SnapCount)) + if m.Flag_Consul_V0_7_5 != nil { + l = m.Flag_Consul_V0_7_5.Size() + n += 2 + l + sovMessage(uint64(l)) } - if m.QuotaSizeBytes != 0 { - n += 1 + sovMessage(uint64(m.QuotaSizeBytes)) + if m.Flag_Consul_V0_8_0 != nil { + l = m.Flag_Consul_V0_8_0.Size() + n += 2 + l + sovMessage(uint64(l)) } - return n -} - -func (m *Request_Zookeeper) Size() (n int) { - var l int - _ = l - if m.MyID != 0 { - n += 1 + sovMessage(uint64(m.MyID)) + if m.Flag_Cetcd_Beta != nil { + l = m.Flag_Cetcd_Beta.Size() + n += 2 + l + sovMessage(uint64(l)) } - if m.TickTime != 0 { - n += 1 + sovMessage(uint64(m.TickTime)) - } - if m.ClientPort != 0 { - n += 1 + sovMessage(uint64(m.ClientPort)) - } - if m.InitLimit != 0 { - n += 1 + sovMessage(uint64(m.InitLimit)) - } - if m.SyncLimit != 0 { - n += 1 + sovMessage(uint64(m.SyncLimit)) - } - if m.SnapCount != 0 { - n += 1 + sovMessage(uint64(m.SnapCount)) - } - if m.MaxClientConnections != 0 { - n += 1 + sovMessage(uint64(m.MaxClientConnections)) + if m.Flag_Zetcd_Beta != nil { + l = m.Flag_Zetcd_Beta.Size() + n += 2 + l + sovMessage(uint64(l)) } return n } @@ -686,7 +552,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Operation |= (Request_Operation(b) & 0x7F) << shift + m.Operation |= (Operation(b) & 0x7F) << shift if b < 0x80 { break } @@ -725,7 +591,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DatabaseID |= (Request_Database(b) & 0x7F) << shift + m.DatabaseID |= (DatabaseID(b) & 0x7F) << shift if b < 0x80 { break } @@ -790,9 +656,9 @@ func (m *Request) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 6: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IpIndex", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IPIndex", wireType) } - m.IpIndex = 0 + m.IPIndex = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMessage @@ -802,7 +668,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.IpIndex |= (uint32(b) & 0x7F) << shift + m.IPIndex |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -828,7 +694,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { } case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Control", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigClientMachineInitial", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -852,16 +718,16 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Control == nil { - m.Control = &Request_Control{} + if m.ConfigClientMachineInitial == nil { + m.ConfigClientMachineInitial = &ConfigClientMachineInitial{} } - if err := m.Control.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigClientMachineInitial.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 100: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Etcdv3Config", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V2_3", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -885,16 +751,16 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Etcdv3Config == nil { - m.Etcdv3Config = &Request_Etcdv3{} + if m.Flag_Etcd_V2_3 == nil { + m.Flag_Etcd_V2_3 = &Flag_Etcd_V2_3{} } - if err := m.Etcdv3Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Flag_Etcd_V2_3.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: + case 101: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ZookeeperConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V3_1", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -918,68 +784,51 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ZookeeperConfig == nil { - m.ZookeeperConfig = &Request_Zookeeper{} + if m.Flag_Etcd_V3_1 == nil { + m.Flag_Etcd_V3_1 = &Flag_Etcd_V3_1{} } - if err := m.ZookeeperConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Flag_Etcd_V3_1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMessage(dAtA[iNdEx:]) - if err != nil { + case 102: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_V3_2", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMessage + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthMessage + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Etcd_V3_2 == nil { + m.Flag_Etcd_V3_2 = &Flag_Etcd_V3_2{} + } + if err := m.Flag_Etcd_V3_2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if skippy < 0 { - return ErrInvalidLengthMessage - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Request_Control) 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 ErrIntOverflowMessage - } - 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: Control: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Control: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 103: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudProjectName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Etcd_Tip", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMessage @@ -989,251 +838,129 @@ func (m *Request_Control) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthMessage } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.GoogleCloudProjectName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageKey", wireType) + if m.Flag_Etcd_Tip == nil { + m.Flag_Etcd_Tip = &Flag_Etcd_Tip{} } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - 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 ErrInvalidLengthMessage - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.GoogleCloudStorageKey = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageBucketName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - 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 ErrInvalidLengthMessage - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.GoogleCloudStorageBucketName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GoogleCloudStorageSubDirectory", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - 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 ErrInvalidLengthMessage - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.GoogleCloudStorageSubDirectory = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMessage(dAtA[iNdEx:]) - if err != nil { + if err := m.Flag_Etcd_Tip.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if skippy < 0 { + iNdEx = postIndex + case 200: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zookeeper_R3_4_9", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMessage + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthMessage } - if (iNdEx + skippy) > l { + postIndex := iNdEx + msglen + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Request_Etcdv3) 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 ErrIntOverflowMessage + if m.Flag_Zookeeper_R3_4_9 == nil { + m.Flag_Zookeeper_R3_4_9 = &Flag_Zookeeper_R3_4_9{} } - 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: Etcdv3: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Etcdv3: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapCount", wireType) - } - m.SnapCount = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SnapCount |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field QuotaSizeBytes", wireType) - } - m.QuotaSizeBytes = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.QuotaSizeBytes |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipMessage(dAtA[iNdEx:]) - if err != nil { + if err := m.Flag_Zookeeper_R3_4_9.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if skippy < 0 { + iNdEx = postIndex + case 201: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zookeeper_R3_5_2Alpha", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMessage + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthMessage } - if (iNdEx + skippy) > l { + postIndex := iNdEx + msglen + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Request_Zookeeper) 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 ErrIntOverflowMessage + if m.Flag_Zookeeper_R3_5_2Alpha == nil { + m.Flag_Zookeeper_R3_5_2Alpha = &Flag_Zookeeper_R3_5_2Alpha{} } - if iNdEx >= l { + if err := m.Flag_Zookeeper_R3_5_2Alpha.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 300: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Consul_V0_7_5", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMessage + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthMessage + } + postIndex := iNdEx + msglen + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + if m.Flag_Consul_V0_7_5 == nil { + m.Flag_Consul_V0_7_5 = &Flag_Consul_V0_7_5{} } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Zookeeper: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Zookeeper: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MyID", wireType) + if err := m.Flag_Consul_V0_7_5.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.MyID = 0 + iNdEx = postIndex + case 301: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Consul_V0_8_0", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMessage @@ -1243,16 +970,30 @@ func (m *Request_Zookeeper) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MyID |= (uint32(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TickTime", wireType) + if msglen < 0 { + return ErrInvalidLengthMessage } - m.TickTime = 0 + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Consul_V0_8_0 == nil { + m.Flag_Consul_V0_8_0 = &Flag_Consul_V0_8_0{} + } + if err := m.Flag_Consul_V0_8_0.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 400: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Cetcd_Beta", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMessage @@ -1262,16 +1003,30 @@ func (m *Request_Zookeeper) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.TickTime |= (int64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientPort", wireType) + if msglen < 0 { + return ErrInvalidLengthMessage } - m.ClientPort = 0 + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flag_Cetcd_Beta == nil { + m.Flag_Cetcd_Beta = &Flag_Cetcd_Beta{} + } + if err := m.Flag_Cetcd_Beta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 500: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flag_Zetcd_Beta", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMessage @@ -1281,87 +1036,25 @@ func (m *Request_Zookeeper) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ClientPort |= (int64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field InitLimit", wireType) + if msglen < 0 { + return ErrInvalidLengthMessage } - m.InitLimit = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.InitLimit |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SyncLimit", wireType) + if m.Flag_Zetcd_Beta == nil { + m.Flag_Zetcd_Beta = &Flag_Zetcd_Beta{} } - m.SyncLimit = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SyncLimit |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapCount", wireType) - } - m.SnapCount = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SnapCount |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxClientConnections", wireType) - } - m.MaxClientConnections = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMessage - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MaxClientConnections |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } + if err := m.Flag_Zetcd_Beta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipMessage(dAtA[iNdEx:]) @@ -1580,52 +1273,52 @@ var ( func init() { proto.RegisterFile("dbtesterpb/message.proto", fileDescriptorMessage) } var fileDescriptorMessage = []byte{ - // 743 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4f, 0x6f, 0xeb, 0x44, - 0x10, 0x8f, 0x9b, 0x36, 0xb1, 0xa7, 0xf4, 0x61, 0xed, 0x2b, 0xc8, 0x0a, 0x25, 0x8a, 0x22, 0x84, - 0x22, 0x24, 0x52, 0x94, 0xf2, 0xe7, 0x00, 0xe2, 0xd0, 0x94, 0x07, 0x15, 0x4f, 0xa5, 0x5a, 0xf7, - 0x71, 0xe0, 0xb6, 0xde, 0x4c, 0xcd, 0xd2, 0x78, 0xd7, 0x6f, 0x77, 0x8d, 0x5e, 0x7a, 0xe5, 0x4b, - 0xf0, 0x91, 0xde, 0x81, 0x03, 0x1f, 0x01, 0xca, 0x89, 0x6f, 0x81, 0xbc, 0xb6, 0x93, 0xb4, 0x35, - 0x70, 0x9b, 0xf9, 0xfd, 0x7e, 0x33, 0xbb, 0x33, 0x3b, 0xb3, 0x10, 0x2d, 0x12, 0x8b, 0xc6, 0xa2, - 0xce, 0x93, 0xe3, 0x0c, 0x8d, 0x61, 0x29, 0x4e, 0x73, 0xad, 0xac, 0x22, 0xb0, 0x61, 0x06, 0x1f, - 0xa6, 0xc2, 0xfe, 0x58, 0x24, 0x53, 0xae, 0xb2, 0xe3, 0x54, 0xa5, 0xea, 0xd8, 0x49, 0x92, 0xe2, - 0xda, 0x79, 0xce, 0x71, 0x56, 0x15, 0x3a, 0xfe, 0x2d, 0x80, 0x3e, 0xc5, 0x97, 0x05, 0x1a, 0x4b, - 0x3e, 0x87, 0x40, 0xe5, 0xa8, 0x99, 0x15, 0x4a, 0x46, 0xde, 0xc8, 0x9b, 0x3c, 0x99, 0xbd, 0x3b, - 0xdd, 0xa4, 0x9e, 0xd6, 0xba, 0xe9, 0x77, 0x8d, 0x88, 0x6e, 0xf4, 0xe4, 0x03, 0x08, 0xad, 0x16, - 0x69, 0x8a, 0xfa, 0xb9, 0x4a, 0x5f, 0xe4, 0x4b, 0xc5, 0x16, 0xd1, 0xce, 0xc8, 0x9b, 0xf8, 0xf4, - 0x11, 0x4e, 0xbe, 0x00, 0x58, 0x30, 0xcb, 0x12, 0x66, 0xf0, 0xfc, 0x2c, 0xea, 0xba, 0x93, 0x8e, - 0xda, 0x4e, 0x3a, 0xab, 0x55, 0x74, 0x4b, 0x4f, 0x46, 0xb0, 0xdf, 0x78, 0x57, 0x2c, 0x8d, 0x76, - 0x47, 0xde, 0x24, 0xa0, 0xdb, 0x10, 0x79, 0x0f, 0x0e, 0x72, 0x44, 0x7d, 0x7e, 0x69, 0x62, 0xab, - 0x85, 0x4c, 0xa3, 0x3d, 0xa7, 0xb9, 0x0f, 0x92, 0x08, 0xfa, 0x22, 0x3f, 0x97, 0x0b, 0x7c, 0x15, - 0xf5, 0x46, 0xde, 0xe4, 0x80, 0x36, 0x2e, 0xf9, 0x08, 0x9e, 0xf2, 0x42, 0x6b, 0x94, 0x76, 0xbe, - 0x14, 0x28, 0xed, 0x45, 0x91, 0x25, 0xa8, 0xa3, 0xfe, 0xc8, 0x9b, 0x74, 0x69, 0x1b, 0x45, 0x3e, - 0x81, 0x3e, 0x57, 0xd2, 0x6a, 0xb5, 0x8c, 0xfc, 0x91, 0x37, 0xd9, 0x9f, 0xbd, 0xd3, 0x56, 0xce, - 0xbc, 0x92, 0xd0, 0x46, 0x4b, 0xbe, 0x84, 0x37, 0xd0, 0xf2, 0xc5, 0xcf, 0x27, 0x73, 0x25, 0xaf, - 0x45, 0x1a, 0x05, 0x2e, 0x76, 0xd0, 0x16, 0xfb, 0x95, 0xd3, 0xd1, 0x7b, 0x7a, 0xf2, 0x35, 0xbc, - 0x79, 0xab, 0xd4, 0x0d, 0x62, 0x8e, 0xba, 0x4e, 0x01, 0x2e, 0x45, 0xeb, 0xbb, 0xfd, 0xd0, 0x48, - 0xe9, 0xc3, 0xa8, 0xc1, 0x2f, 0x3b, 0xd0, 0xaf, 0x6f, 0x47, 0x3e, 0x85, 0xb7, 0x53, 0xa5, 0xd2, - 0x25, 0xce, 0x97, 0xaa, 0x58, 0x5c, 0x6a, 0xf5, 0x13, 0x72, 0x7b, 0xc1, 0x32, 0x74, 0x33, 0x11, - 0xd0, 0x7f, 0x61, 0xc9, 0xc7, 0xf0, 0xd6, 0x16, 0x13, 0x5b, 0xa5, 0x59, 0x8a, 0xdf, 0xe2, 0xca, - 0x8d, 0x41, 0x40, 0xdb, 0x49, 0x72, 0x0a, 0x47, 0x8f, 0x89, 0xd3, 0x82, 0xdf, 0x60, 0x75, 0x66, - 0xd7, 0x05, 0xff, 0xa7, 0x86, 0x3c, 0x83, 0xe1, 0x63, 0x3e, 0x2e, 0x92, 0x33, 0xa1, 0x91, 0x5b, - 0xa5, 0x57, 0xf5, 0x90, 0xfc, 0x8f, 0x6a, 0x70, 0x01, 0xbd, 0xaa, 0xcd, 0xe4, 0x08, 0x02, 0x23, - 0x59, 0x3e, 0x57, 0x85, 0xb4, 0xae, 0xec, 0x2e, 0xdd, 0x00, 0xe4, 0x7d, 0x78, 0xf2, 0xb2, 0x50, - 0x96, 0xc5, 0xe2, 0x16, 0x4f, 0x57, 0x16, 0x8d, 0x2b, 0xb1, 0x4b, 0x1f, 0xa0, 0x83, 0xbf, 0x3d, - 0x08, 0xd6, 0x4d, 0x27, 0x04, 0x76, 0xb3, 0xd5, 0xf9, 0x99, 0x4b, 0x77, 0x40, 0x9d, 0x4d, 0x06, - 0xe0, 0x5b, 0xc1, 0x6f, 0xae, 0x44, 0x86, 0x75, 0x8e, 0xb5, 0x4f, 0x86, 0x00, 0xdc, 0xcd, 0xd8, - 0xa5, 0xd2, 0xd6, 0xf5, 0xa1, 0x4b, 0xb7, 0x90, 0xf2, 0x8e, 0x42, 0x0a, 0xfb, 0x5c, 0x64, 0xc2, - 0xba, 0x02, 0xbb, 0x74, 0x03, 0xb8, 0x0a, 0x56, 0x92, 0x57, 0xec, 0x5e, 0x5d, 0x41, 0x03, 0xdc, - 0xaf, 0xaf, 0xf7, 0xb0, 0xbe, 0x19, 0x1c, 0x66, 0xec, 0x55, 0x35, 0xe0, 0x73, 0x25, 0x25, 0xf2, - 0x72, 0xc5, 0x4d, 0xbd, 0x00, 0xad, 0xdc, 0xf8, 0x18, 0x82, 0xf5, 0xbf, 0x40, 0x02, 0xd8, 0x8b, - 0x2d, 0xd3, 0x36, 0xec, 0x10, 0x1f, 0x76, 0x63, 0xab, 0xf2, 0xd0, 0x23, 0x07, 0x10, 0x7c, 0x83, - 0x4c, 0xdb, 0x04, 0x99, 0x0d, 0x77, 0xc6, 0x31, 0xf8, 0xcd, 0x7a, 0x13, 0x80, 0x9e, 0x9b, 0xeb, - 0x59, 0xd8, 0x59, 0xdb, 0x27, 0x55, 0xc8, 0x7a, 0x52, 0xc3, 0x9d, 0x92, 0xe2, 0x4a, 0x9a, 0x62, - 0x19, 0x76, 0xcb, 0x23, 0x6e, 0x4b, 0x5d, 0xb8, 0x5b, 0x9a, 0xdc, 0x99, 0x7b, 0xe3, 0xef, 0xc1, - 0xa7, 0x68, 0x72, 0x25, 0x0d, 0x96, 0xfb, 0x6d, 0x0a, 0xce, 0xd1, 0x18, 0xd7, 0x72, 0x9f, 0x36, - 0x6e, 0xb9, 0xdf, 0x0b, 0x61, 0x6e, 0xe2, 0x9c, 0x71, 0x7c, 0x51, 0xfe, 0xa3, 0xdb, 0x8f, 0xd8, - 0x46, 0xcd, 0x9e, 0xc1, 0xfe, 0x95, 0x66, 0xd2, 0xe4, 0x4a, 0x5b, 0xd4, 0xe4, 0x33, 0xf0, 0x9d, - 0x7b, 0x8d, 0x9a, 0x3c, 0x6d, 0x59, 0xb5, 0xc1, 0xe1, 0x7d, 0xb0, 0xba, 0xd1, 0xb8, 0x73, 0x7a, - 0xf8, 0xfa, 0xcf, 0x61, 0xe7, 0xf5, 0xdd, 0xd0, 0xfb, 0xfd, 0x6e, 0xe8, 0xfd, 0x71, 0x37, 0xf4, - 0x7e, 0xfd, 0x6b, 0xd8, 0x49, 0x7a, 0xee, 0x2f, 0x3e, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, 0x51, - 0x07, 0x89, 0xbd, 0xe2, 0x05, 0x00, 0x00, + // 752 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xdf, 0x4e, 0xdb, 0x48, + 0x14, 0xc6, 0x63, 0xc2, 0x9f, 0x64, 0xa2, 0xb0, 0x61, 0x60, 0xd9, 0x51, 0x80, 0xac, 0xc5, 0xae, + 0x50, 0x16, 0x69, 0x93, 0x60, 0x93, 0x05, 0x2e, 0x21, 0xec, 0x8a, 0x48, 0xdb, 0x82, 0x26, 0x01, + 0x55, 0xdc, 0x8c, 0xc6, 0xce, 0xc4, 0x58, 0x24, 0xb6, 0x3b, 0x9e, 0xa0, 0x96, 0xa7, 0xe8, 0x65, + 0xdf, 0xa1, 0xed, 0x7b, 0xd0, 0xbb, 0x3e, 0x42, 0x4b, 0x5f, 0xa1, 0x0f, 0x50, 0x79, 0x9c, 0x90, + 0xc9, 0x1f, 0x4a, 0xef, 0x38, 0xdf, 0xf7, 0xcd, 0xef, 0x68, 0x8e, 0x99, 0x13, 0x80, 0x5a, 0x96, + 0x60, 0xa1, 0x60, 0x3c, 0xb0, 0xca, 0x5d, 0x16, 0x86, 0xd4, 0x61, 0xa5, 0x80, 0xfb, 0xc2, 0x87, + 0x60, 0xe8, 0xe4, 0xff, 0x76, 0x5c, 0x71, 0xd5, 0xb3, 0x4a, 0xb6, 0xdf, 0x2d, 0x3b, 0xbe, 0xe3, + 0x97, 0x65, 0xc4, 0xea, 0xb5, 0x65, 0x25, 0x0b, 0xf9, 0x57, 0x7c, 0x34, 0xbf, 0xae, 0x40, 0x5b, + 0x54, 0x50, 0x8b, 0x86, 0x8c, 0xb8, 0xad, 0xbe, 0x9b, 0x57, 0xdc, 0x76, 0x87, 0x3a, 0x84, 0x09, + 0x7b, 0xe0, 0xfd, 0x3e, 0xee, 0xdd, 0xfa, 0xfe, 0x35, 0x63, 0x01, 0xe3, 0x53, 0xd0, 0x32, 0x60, + 0xfb, 0x5e, 0xd8, 0xeb, 0xf4, 0xdd, 0xb5, 0x89, 0xe3, 0x0a, 0x7b, 0xc2, 0xb4, 0x15, 0x73, 0x4b, + 0x31, 0x6d, 0xdf, 0x6b, 0xbb, 0x0e, 0xb1, 0x3b, 0x2e, 0xf3, 0x04, 0xe9, 0x52, 0xfb, 0xca, 0xf5, + 0xfa, 0x53, 0xd9, 0x7c, 0x97, 0x06, 0x0b, 0x98, 0xbd, 0xec, 0xb1, 0x50, 0x40, 0x13, 0xa4, 0x4f, + 0x03, 0xc6, 0xa9, 0x70, 0x7d, 0x0f, 0x69, 0xba, 0x56, 0x5c, 0x34, 0x7e, 0x2d, 0x0d, 0x39, 0xa5, + 0x07, 0x13, 0x0f, 0x73, 0x70, 0x1b, 0xe4, 0x9a, 0xdc, 0x75, 0x1c, 0xc6, 0xff, 0xf7, 0x9d, 0xf3, + 0xa0, 0xe3, 0xd3, 0x16, 0x9a, 0xd1, 0xb5, 0x62, 0x0a, 0x4f, 0xe8, 0xf0, 0x1f, 0x00, 0x8e, 0xfb, + 0xe3, 0xab, 0x1f, 0xa3, 0xa4, 0xec, 0xb0, 0xaa, 0x76, 0x18, 0xba, 0x58, 0x49, 0x42, 0x1d, 0x64, + 0x06, 0x55, 0x93, 0x3a, 0x68, 0x56, 0xd7, 0x8a, 0x69, 0xac, 0x4a, 0xf0, 0x4f, 0x90, 0x3d, 0x63, + 0x8c, 0xd7, 0xcf, 0xc2, 0x86, 0xe0, 0xae, 0xe7, 0xa0, 0x39, 0x99, 0x19, 0x15, 0x21, 0x02, 0x0b, + 0xf5, 0xb3, 0xba, 0xd7, 0x62, 0xaf, 0xd0, 0xbc, 0xae, 0x15, 0xb3, 0x78, 0x50, 0xc2, 0x0a, 0x58, + 0xae, 0xf5, 0x38, 0x67, 0x9e, 0xa8, 0xc9, 0x29, 0x3d, 0xef, 0x75, 0x2d, 0xc6, 0xd1, 0x82, 0xae, + 0x15, 0x93, 0x78, 0x9a, 0x05, 0xdb, 0x20, 0x5f, 0x93, 0x73, 0x8d, 0xd5, 0x67, 0xf1, 0x54, 0xeb, + 0x9e, 0x2b, 0x5c, 0xda, 0x41, 0x29, 0x5d, 0x2b, 0x66, 0x8c, 0x2d, 0xf5, 0x6e, 0x8f, 0xa7, 0xf1, + 0x0f, 0x48, 0xb0, 0x06, 0x72, 0xf2, 0xe3, 0xca, 0xff, 0x2a, 0x42, 0x6e, 0x0c, 0x62, 0xa2, 0x96, + 0xa4, 0xaf, 0xab, 0xf4, 0xf1, 0x0c, 0xce, 0x44, 0xca, 0xbf, 0xc2, 0x6e, 0x5d, 0x18, 0xe6, 0x04, + 0xc4, 0x24, 0x3b, 0x88, 0x3d, 0x01, 0x31, 0xc9, 0x8e, 0x02, 0x31, 0x77, 0xa6, 0x40, 0x0c, 0xd4, + 0x7e, 0x12, 0x62, 0xa8, 0x10, 0x03, 0x1e, 0x82, 0x5f, 0xd4, 0x80, 0x70, 0x03, 0xe4, 0x48, 0xc6, + 0xda, 0x63, 0x0c, 0xe1, 0x06, 0x43, 0x44, 0xd3, 0x0d, 0xe0, 0x0b, 0xf0, 0x5b, 0xec, 0x3f, 0xbc, + 0x25, 0x42, 0xb8, 0x49, 0x76, 0xc9, 0x01, 0xba, 0xd3, 0x24, 0xeb, 0x8f, 0x49, 0xd6, 0x44, 0x16, + 0x2f, 0x45, 0xc6, 0xe5, 0x40, 0xc6, 0xe6, 0xee, 0x01, 0x74, 0xc1, 0xc6, 0xb4, 0x74, 0x95, 0x18, + 0x84, 0x76, 0x82, 0x2b, 0x8a, 0x3e, 0xc6, 0xfc, 0xbf, 0x9e, 0xe2, 0x3f, 0x9c, 0xc0, 0xab, 0x63, + 0x5d, 0xaa, 0xc6, 0x61, 0xa4, 0xc3, 0x53, 0xb0, 0x12, 0x1f, 0x8c, 0xdf, 0x3b, 0x21, 0x37, 0x15, + 0xb2, 0x47, 0xaa, 0xe8, 0xfd, 0x8c, 0xec, 0xa0, 0x4f, 0x76, 0x18, 0x0d, 0xe2, 0xc5, 0x48, 0xad, + 0x49, 0xed, 0xa2, 0xb2, 0x57, 0x9d, 0x0a, 0xdc, 0x27, 0x15, 0xf4, 0xe1, 0x67, 0x80, 0xfb, 0xa4, + 0x32, 0x0a, 0xdc, 0xaf, 0xc0, 0x13, 0xb0, 0xd4, 0xcf, 0xc5, 0xdf, 0xc1, 0x62, 0x82, 0xa2, 0x37, + 0x49, 0x49, 0xdb, 0x98, 0x42, 0x1b, 0xa6, 0x70, 0x56, 0xa2, 0x22, 0xe1, 0x88, 0x09, 0x3a, 0x24, + 0xdd, 0x2a, 0xa4, 0x6f, 0x8f, 0x92, 0x6e, 0xc7, 0x49, 0x97, 0x03, 0xd2, 0xe6, 0x05, 0x48, 0x61, + 0x16, 0x06, 0xbe, 0x17, 0xb2, 0xe8, 0x31, 0x37, 0x7a, 0xb6, 0xcd, 0xc2, 0x50, 0xee, 0xaa, 0x14, + 0x1e, 0x94, 0xd1, 0x63, 0x3e, 0x76, 0xc3, 0xeb, 0x46, 0x40, 0x6d, 0x76, 0x1e, 0xfd, 0x02, 0x1c, + 0xbd, 0x16, 0x2c, 0x94, 0x5b, 0x29, 0x89, 0xa7, 0x59, 0xdb, 0x65, 0x65, 0xf3, 0xc1, 0x34, 0x98, + 0x6b, 0x08, 0xca, 0x45, 0x2e, 0x01, 0x53, 0x60, 0xb6, 0x21, 0xfc, 0x20, 0xa7, 0xc1, 0x2c, 0x48, + 0x9f, 0x30, 0xca, 0x85, 0xc5, 0xa8, 0xc8, 0xcd, 0x18, 0xff, 0x81, 0x4c, 0x93, 0x53, 0x2f, 0x0c, + 0x7c, 0x2e, 0x18, 0x87, 0x7b, 0x20, 0x25, 0xcb, 0x36, 0xe3, 0x70, 0x59, 0xbd, 0x51, 0x7f, 0xb5, + 0xe6, 0x57, 0x46, 0xc5, 0xf8, 0x0a, 0x9b, 0x89, 0xa3, 0x95, 0xbb, 0x2f, 0x85, 0xc4, 0xdd, 0x7d, + 0x41, 0xfb, 0x74, 0x5f, 0xd0, 0x3e, 0xdf, 0x17, 0xb4, 0xb7, 0x5f, 0x0b, 0x09, 0x6b, 0x5e, 0xee, + 0x66, 0xf3, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x82, 0xf6, 0x92, 0xcd, 0x06, 0x00, 0x00, } diff --git a/dbtesterpb/message.proto b/dbtesterpb/message.proto index b9ff478d..af29c568 100644 --- a/dbtesterpb/message.proto +++ b/dbtesterpb/message.proto @@ -3,6 +3,16 @@ package dbtesterpb; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; +import "dbtesterpb/database_id.proto"; + +import "dbtesterpb/flag_etcd.proto"; +import "dbtesterpb/flag_zookeeper.proto"; +import "dbtesterpb/flag_consul.proto"; +import "dbtesterpb/flag_zetcd.proto"; +import "dbtesterpb/flag_cetcd.proto"; + +import "dbtesterpb/config_client_machine.proto"; + option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; @@ -12,59 +22,45 @@ service Transporter { rpc Transfer(Request) returns (Response) {} } +enum Operation { + Start = 0; + Stop = 1; + Heartbeat = 2; +} + message Request { - enum Operation { - Start = 0; - Stop = 1; - Heartbeat = 2; - } - enum Database { - etcdv2 = 0; - etcdv3 = 1; - zookeeper = 2; - consul = 3; - zetcd = 4; - cetcd = 5; - } - message Control { - string googleCloudProjectName = 1; - string googleCloudStorageKey = 2; - string googleCloudStorageBucketName = 3; - string googleCloudStorageSubDirectory = 4; - } - message Etcdv3 { - int64 snapCount = 1; - int64 quotaSizeBytes = 2; - } - message Zookeeper { - uint32 myID = 1; - int64 tickTime = 2; - int64 clientPort = 3; - int64 initLimit = 4; - int64 syncLimit = 5; - int64 snapCount = 6; - int64 maxClientConnections = 7; - } + Operation Operation = 1; + bool TriggerLogUpload = 2; - Operation operation = 1; - bool triggerLogUpload = 2; - Database databaseID = 3; - string databaseTag = 4; + DatabaseID DatabaseID = 3; + string DatabaseTag = 4; - string peerIPsString = 5; - uint32 ipIndex = 6; + string PeerIPsString = 5; + uint32 IPIndex = 6; - int64 currentClientNumber = 7; + int64 CurrentClientNumber = 7; - Control control = 8; - Etcdv3 etcdv3Config = 9; - Zookeeper zookeeperConfig = 10; + ConfigClientMachineInitial ConfigClientMachineInitial = 8; + + flag__etcd__v2_3 flag__etcd__v2_3 = 100; + flag__etcd__v3_1 flag__etcd__v3_1 = 101; + flag__etcd__v3_2 flag__etcd__v3_2 = 102; + flag__etcd__tip flag__etcd__tip = 103; + + flag__zookeeper__r3_4_9 flag__zookeeper__r3_4_9 = 200; + flag__zookeeper__r3_5_2_alpha flag__zookeeper__r3_5_2_alpha = 201; + + flag__consul__v0_7_5 flag__consul__v0_7_5 = 300; + flag__consul__v0_8_0 flag__consul__v0_8_0 = 301; + + flag__cetcd__beta flag__cetcd__beta = 400; + flag__zetcd__beta flag__zetcd__beta = 500; } message Response { - bool success = 1; - + bool Success = 1; + // DiskSpaceUsageBytes is the data size of the database on disk in bytes. // It measures after database is requested to stop. - int64 diskSpaceUsageBytes = 2; + int64 DiskSpaceUsageBytes = 2; } diff --git a/dbtesterpb/util.go b/dbtesterpb/util.go new file mode 100644 index 00000000..f2ef8d28 --- /dev/null +++ b/dbtesterpb/util.go @@ -0,0 +1,93 @@ +// Copyright 2017 CoreOS, Inc. +// +// 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 dbtesterpb + +import ( + "image/color" + + "github.com/gonum/plot/plotutil" +) + +// IsValidDatabaseID returns false if the database id is not supported. +func IsValidDatabaseID(id string) bool { + _, ok := DatabaseID_value[id] + return ok +} + +func GetRGBI(databaseID string, i int) color.Color { + switch databaseID { + case "etcd__v2_3": + return color.RGBA{218, 97, 229, 255} // purple + case "etcd__v3_1": + return color.RGBA{24, 90, 169, 255} // blue + case "etcd__v3_2": + return color.RGBA{63, 81, 181, 255} // indigo + case "etcd__tip": + return color.RGBA{0, 229, 255, 255} // cyan + case "zookeeper__r3_5_2_alpha": + return color.RGBA{38, 169, 24, 255} // green + case "consul__v0_7_5": + return color.RGBA{198, 53, 53, 255} // red + case "zetcd__beta": + return color.RGBA{251, 206, 0, 255} // yellow + case "cetcd__beta": + return color.RGBA{205, 220, 57, 255} // lime + } + return plotutil.Color(i) +} + +func GetRGBII(databaseID string, i int) color.Color { + switch databaseID { + case "etcd__v2_3": + return color.RGBA{229, 212, 231, 255} // light-purple + case "etcd__v3_1": + return color.RGBA{129, 212, 247, 255} // light-blue + case "etcd__v3_2": + return color.RGBA{159, 168, 218, 255} // light-indigo + case "etcd__tip": + return color.RGBA{132, 255, 255, 255} // light-cyan + case "zookeeper__r3_5_2_alpha": + return color.RGBA{129, 247, 152, 255} // light-green + case "consul__v0_7_5": + return color.RGBA{247, 156, 156, 255} // light-red + case "zetcd__beta": + return color.RGBA{245, 247, 166, 255} // light-yellow + case "cetcd__beta": + return color.RGBA{238, 255, 65, 255} // light-lime + } + return plotutil.Color(i) +} + +func GetRGBIII(databaseID string, i int) color.Color { + switch databaseID { + case "etcd__v2_3": + return color.RGBA{165, 8, 180, 255} // deep-purple + case "etcd__v3_1": + return color.RGBA{37, 29, 191, 255} // deep-blue + case "etcd__v3_2": + return color.RGBA{26, 35, 126, 255} // deep-indigo + case "etcd__tip": + return color.RGBA{0, 96, 100, 255} // deep-cyan + case "zookeeper__r3_5_2_alpha": + return color.RGBA{7, 64, 35, 255} // deep-green + case "consul__v0_7_5": + return color.RGBA{212, 8, 46, 255} // deep-red + case "zetcd__beta": + return color.RGBA{229, 255, 0, 255} // deep-yellow + case "cetcd__beta": + return color.RGBA{205, 220, 57, 255} // deep-lime + } + return plotutil.Color(i) +} diff --git a/glide.lock b/glide.lock index 2401cebf..f31fd1b9 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: d814a9bd4d998e7b38f52abf3bf6284b4ce1b9e0d1bbb3aecfcedb9dcbf9de16 -updated: 2017-02-15T11:01:56.215783528-08:00 +hash: fd49652adb4ec58cdca302dab916ff1d3bb80ccdf078dff45579becd0e75d613 +updated: 2017-02-22T19:06:28.732861827-08:00 imports: - name: bitbucket.org/zombiezen/gopdf version: 1c63dc69751bc45441c2ce1f56b631c55294b4d5 @@ -21,7 +21,7 @@ imports: - name: github.com/cheggaaa/pb version: d7e6ca3010b6f084d8056847f55d7f572f180678 - name: github.com/coreos/etcd - version: 2510a1488c51eb503c396c7e4e44ee910e4857a6 + version: 86c9bf5c3f68707048e2cea63101e0d8d156331d subpackages: - auth/authpb - client @@ -76,7 +76,7 @@ imports: subpackages: - asm/f64 - name: github.com/gonum/plot - version: 0a603a9b2d3cc81f4736b30c5155495fb900700d + version: e6157b766208b18c1fdb8ba52f1c6eb75b650314 subpackages: - palette - plotter @@ -103,13 +103,13 @@ imports: subpackages: - schema - name: github.com/hashicorp/consul - version: 3da73be55c82a7f88f1dfd3ec16d267970ac8ff0 + version: 65b7ed462cc574d57dc6dcc9bca74676089f7fee subpackages: - api - name: github.com/hashicorp/go-cleanhttp version: 3573b8b52aa7b37b9358d966a898feb387f62437 - name: github.com/hashicorp/serf - version: cb45b412ee4f9d6cc2eeb2b2b7dd0f6cfd7545c1 + version: 050c56d31a1ff2ebc50e3f4810fdff7e7563f6c8 subpackages: - coordinate - name: github.com/inconshreveable/mousetrap @@ -138,7 +138,7 @@ imports: subpackages: - codec - name: golang.org/x/image - version: 306b8294319cca33073246c5f75e5142f54f4cca + version: b952c941a68f1a00c1f8d855a12a8282d2f1b4f0 subpackages: - draw - font @@ -180,7 +180,7 @@ imports: - storage/v1 - transport - name: google.golang.org/appengine - version: 2e4a801b39fc199db615bfca7d0b9f8cd9580599 + version: 3a452f9e00122ead39586d68ffdb9c6e1326af3c subpackages: - internal - internal/app_identity diff --git a/glide.yaml b/glide.yaml index 635836e5..1b266ed5 100644 --- a/glide.yaml +++ b/glide.yaml @@ -9,7 +9,7 @@ import: - package: github.com/cheggaaa/pb version: d7e6ca3010b6f084d8056847f55d7f572f180678 - package: github.com/coreos/etcd - version: 2510a1488c51eb503c396c7e4e44ee910e4857a6 + version: 86c9bf5c3f68707048e2cea63101e0d8d156331d subpackages: - auth/authpb - client @@ -41,7 +41,7 @@ import: - jsonpb - proto - package: github.com/gonum/plot - version: 0a603a9b2d3cc81f4736b30c5155495fb900700d + version: e6157b766208b18c1fdb8ba52f1c6eb75b650314 subpackages: - palette - plotter @@ -58,7 +58,7 @@ import: - package: github.com/gyuho/psn version: 0a50f90209cfd81ef2a20cbf01679f118f31f0ad - package: github.com/hashicorp/consul - version: 3da73be55c82a7f88f1dfd3ec16d267970ac8ff0 + version: 65b7ed462cc574d57dc6dcc9bca74676089f7fee subpackages: - api - package: github.com/samuel/go-zookeeper diff --git a/readme.go b/readme.go index 811c1e48..1168d069 100644 --- a/readme.go +++ b/readme.go @@ -1,3 +1,17 @@ +// Copyright 2017 CoreOS, Inc. +// +// 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 dbtester import ( @@ -8,7 +22,7 @@ import ( // WriteREADME writes README. func (cfg *Config) WriteREADME(summary string) error { - plog.Printf("writing README at %q", cfg.README.OutputPath) + plog.Printf("writing README at %q", cfg.ConfigAnalyzeMachineREADME.OutputPath) buf := new(bytes.Buffer) buf.WriteString("\n\n") @@ -33,5 +47,5 @@ func (cfg *Config) WriteREADME(summary string) error { buf.WriteString("\n\n") } - return toFile(buf.String(), cfg.README.OutputPath) + return toFile(buf.String(), cfg.ConfigAnalyzeMachineREADME.OutputPath) } diff --git a/report.go b/report.go index 83b2773f..0a656161 100644 --- a/report.go +++ b/report.go @@ -20,6 +20,7 @@ import ( "time" "github.com/cheggaaa/pb" + "github.com/coreos/dbtester/dbtesterpb" "github.com/coreos/etcd/pkg/report" "golang.org/x/net/context" ) @@ -135,8 +136,8 @@ func printStats(st report.Stats) { } } -func (cfg *Config) generateReport(gcfg TestGroup, h []ReqHandler, reqDone func(), reqGen func(chan<- request)) { - b := newBenchmark(gcfg.RequestNumber, gcfg.ClientNumber, h, reqDone, reqGen) +func (cfg *Config) generateReport(gcfg dbtesterpb.ConfigClientMachineAgentControl, h []ReqHandler, reqDone func(), reqGen func(chan<- request)) { + b := newBenchmark(gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber, gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber, h, reqDone, reqGen) b.startRequests() b.waitAll() diff --git a/report_save_upload.go b/report_save_upload.go index 81fdd4f7..18165144 100644 --- a/report_save_upload.go +++ b/report_save_upload.go @@ -38,7 +38,7 @@ var DiskSpaceUsageSummaryColumns = []string{ // SaveDiskSpaceUsageSummary saves data size summary. func (cfg *Config) SaveDiskSpaceUsageSummary(databaseID string, idxToResponse map[int]dbtesterpb.Response) error { - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { return fmt.Errorf("%q does not exist", databaseID) } @@ -68,7 +68,7 @@ func (cfg *Config) SaveDiskSpaceUsageSummary(databaseID string, idxToResponse ma return err } - return fr.CSV(cfg.Control.ServerDiskSpaceUsageSummaryPath) + return fr.CSV(cfg.ConfigClientMachineInitial.ServerDiskSpaceUsageSummaryPath) } func (cfg *Config) saveDataLatencyDistributionSummary(st report.Stats) { @@ -126,7 +126,7 @@ func (cfg *Config) saveDataLatencyDistributionSummary(st report.Stats) { } } - if err := fr.CSVHorizontal(cfg.Control.ClientLatencyDistributionSummaryPath); err != nil { + if err := fr.CSVHorizontal(cfg.ConfigClientMachineInitial.ClientLatencyDistributionSummaryPath); err != nil { plog.Fatal(err) } } @@ -152,7 +152,7 @@ func (cfg *Config) saveDataLatencyDistributionPercentile(st report.Stats) { if err := fr.AddColumn(c2); err != nil { plog.Fatal(err) } - if err := fr.CSV(cfg.Control.ClientLatencyDistributionPercentilePath); err != nil { + if err := fr.CSV(cfg.ConfigClientMachineInitial.ClientLatencyDistributionPercentilePath); err != nil { plog.Fatal(err) } } @@ -205,16 +205,16 @@ func (cfg *Config) saveDataLatencyDistributionAll(st report.Stats) { if err := fr.AddColumn(c2); err != nil { plog.Fatal(err) } - if err := fr.CSV(cfg.Control.ClientLatencyDistributionAllPath); err != nil { + if err := fr.CSV(cfg.ConfigClientMachineInitial.ClientLatencyDistributionAllPath); err != nil { plog.Fatal(err) } } -func (cfg *Config) saveDataLatencyThroughputTimeseries(gcfg TestGroup, st report.Stats, clientNs []int64) { - if len(clientNs) == 0 && len(gcfg.ConnectionClientNumbers) == 0 { +func (cfg *Config) saveDataLatencyThroughputTimeseries(gcfg dbtesterpb.ConfigClientMachineAgentControl, st report.Stats, clientNs []int64) { + if len(clientNs) == 0 && len(gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers) == 0 { clientNs = make([]int64, len(st.TimeSeries)) for i := range clientNs { - clientNs[i] = gcfg.BenchmarkOptions.ClientNumber + clientNs[i] = gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber } } c1 := dataframe.NewColumn("UNIX-SECOND") @@ -253,12 +253,12 @@ func (cfg *Config) saveDataLatencyThroughputTimeseries(gcfg TestGroup, st report plog.Fatal(err) } - if err := fr.CSV(cfg.Control.ClientLatencyThroughputTimeseriesPath); err != nil { + if err := fr.CSV(cfg.ConfigClientMachineInitial.ClientLatencyThroughputTimeseriesPath); err != nil { plog.Fatal(err) } // aggregate latency by the number of keys - tss := FindRangesLatency(st.TimeSeries, 1000, gcfg.RequestNumber) + tss := FindRangesLatency(st.TimeSeries, 1000, gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber) ctt1 := dataframe.NewColumn("KEYS") ctt2 := dataframe.NewColumn("MIN-LATENCY-MS") ctt3 := dataframe.NewColumn("AVG-LATENCY-MS") @@ -284,12 +284,12 @@ func (cfg *Config) saveDataLatencyThroughputTimeseries(gcfg TestGroup, st report plog.Fatal(err) } - if err := frr.CSV(cfg.Control.ClientLatencyByKeyNumberPath); err != nil { + if err := frr.CSV(cfg.ConfigClientMachineInitial.ClientLatencyByKeyNumberPath); err != nil { plog.Fatal(err) } } -func (cfg *Config) saveAllStats(gcfg TestGroup, stats report.Stats, clientNs []int64) { +func (cfg *Config) saveAllStats(gcfg dbtesterpb.ConfigClientMachineAgentControl, stats report.Stats, clientNs []int64) { cfg.saveDataLatencyDistributionSummary(stats) cfg.saveDataLatencyDistributionPercentile(stats) cfg.saveDataLatencyDistributionAll(stats) @@ -298,14 +298,14 @@ func (cfg *Config) saveAllStats(gcfg TestGroup, stats report.Stats, clientNs []i // UploadToGoogle uploads target file to Google Cloud Storage. func (cfg *Config) UploadToGoogle(databaseID string, targetPath string) error { - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { return fmt.Errorf("%q does not exist", databaseID) } if !exist(targetPath) { return fmt.Errorf("%q does not exist", targetPath) } - u, err := remotestorage.NewGoogleCloudStorage([]byte(cfg.Control.GoogleCloudStorageKey), cfg.Control.GoogleCloudProjectName) + u, err := remotestorage.NewGoogleCloudStorage([]byte(cfg.ConfigClientMachineInitial.GoogleCloudStorageKey), cfg.ConfigClientMachineInitial.GoogleCloudProjectName) if err != nil { return err } @@ -315,11 +315,11 @@ func (cfg *Config) UploadToGoogle(databaseID string, targetPath string) error { if !strings.HasPrefix(dstPath, gcfg.DatabaseTag) { dstPath = fmt.Sprintf("%s-%s", gcfg.DatabaseTag, dstPath) } - dstPath = filepath.Join(cfg.Control.GoogleCloudStorageSubDirectory, dstPath) + dstPath = filepath.Join(cfg.ConfigClientMachineInitial.GoogleCloudStorageSubDirectory, dstPath) var uerr error for k := 0; k < 30; k++ { - if uerr = u.UploadFile(cfg.Control.GoogleCloudStorageBucketName, srcPath, dstPath); uerr != nil { + if uerr = u.UploadFile(cfg.ConfigClientMachineInitial.GoogleCloudStorageBucketName, srcPath, dstPath); uerr != nil { plog.Printf("#%d: error %v while uploading %q", k, uerr, targetPath) time.Sleep(2 * time.Second) continue diff --git a/stress.go b/stress.go index 0f248fdc..0405b7f9 100644 --- a/stress.go +++ b/stress.go @@ -36,8 +36,8 @@ type values struct { sampleSize int } -func newValues(gcfg TestGroup) (v values, rerr error) { - v.bytes = [][]byte{randBytes(gcfg.BenchmarkOptions.ValueSizeBytes)} +func newValues(gcfg dbtesterpb.ConfigClientMachineAgentControl) (v values, rerr error) { + v.bytes = [][]byte{randBytes(gcfg.ConfigClientMachineBenchmarkOptions.ValueSizeBytes)} v.strings = []string{string(v.bytes[0])} v.sampleSize = 1 return @@ -45,7 +45,7 @@ func newValues(gcfg TestGroup) (v values, rerr error) { // Stress stresses the database. func (cfg *Config) Stress(databaseID string) error { - gcfg, ok := cfg.DatabaseIDToTestGroup[databaseID] + gcfg, ok := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] if !ok { return fmt.Errorf("%q does not exist", databaseID) } @@ -55,40 +55,40 @@ func (cfg *Config) Stress(databaseID string) error { return err } - switch gcfg.BenchmarkOptions.Type { + switch gcfg.ConfigClientMachineBenchmarkOptions.Type { case "write": plog.Println("write generateReport is started...") // fixed number of client numbers - if len(gcfg.BenchmarkOptions.ConnectionClientNumbers) == 0 { + if len(gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers) == 0 { h, done := newWriteHandlers(gcfg) reqGen := func(inflightReqs chan<- request) { generateWrites(gcfg, 0, vals, inflightReqs) } cfg.generateReport(gcfg, h, done, reqGen) } else { // variable client numbers - rs := assignRequest(gcfg.BenchmarkOptions.ConnectionClientNumbers, gcfg.BenchmarkOptions.RequestNumber) + rs := assignRequest(gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers, gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber) var stats []report.Stats reqCompleted := int64(0) for i := 0; i < len(rs); i++ { copied := gcfg - copied.BenchmarkOptions.ConnectionNumber = gcfg.BenchmarkOptions.ConnectionClientNumbers[i] - copied.BenchmarkOptions.ClientNumber = gcfg.BenchmarkOptions.ConnectionClientNumbers[i] - copied.BenchmarkOptions.RequestNumber = rs[i] + copied.ConfigClientMachineBenchmarkOptions.ConnectionNumber = gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers[i] + copied.ConfigClientMachineBenchmarkOptions.ClientNumber = gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers[i] + copied.ConfigClientMachineBenchmarkOptions.RequestNumber = rs[i] ncfg := *cfg - ncfg.DatabaseIDToTestGroup[databaseID] = copied + ncfg.DatabaseIDToConfigClientMachineAgentControl[databaseID] = copied go func() { - plog.Infof("signaling agent with client number %d", copied.BenchmarkOptions.ClientNumber) - if _, err := (&ncfg).BroadcaseRequest(databaseID, dbtesterpb.Request_Heartbeat); err != nil { + plog.Infof("signaling agent with client number %d", copied.ConfigClientMachineBenchmarkOptions.ClientNumber) + if _, err := (&ncfg).BroadcaseRequest(databaseID, dbtesterpb.Operation_Heartbeat); err != nil { plog.Panic(err) } }() h, done := newWriteHandlers(copied) reqGen := func(inflightReqs chan<- request) { generateWrites(copied, reqCompleted, vals, inflightReqs) } - b := newBenchmark(copied.BenchmarkOptions.RequestNumber, copied.BenchmarkOptions.ClientNumber, h, done, reqGen) + b := newBenchmark(copied.ConfigClientMachineBenchmarkOptions.RequestNumber, copied.ConfigClientMachineBenchmarkOptions.ClientNumber, h, done, reqGen) // wait until rs[i] requests are finished // do not end reports yet @@ -106,7 +106,7 @@ func (cfg *Config) Stress(databaseID string) error { plog.Info("combining all reports") combined := report.Stats{ErrorDist: make(map[string]int)} - combinedClientNumber := make([]int64, 0, gcfg.BenchmarkOptions.RequestNumber) + combinedClientNumber := make([]int64, 0, gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber) for i, st := range stats { combined.AvgTotal += st.AvgTotal combined.Total += st.Total @@ -128,7 +128,7 @@ func (cfg *Config) Stress(databaseID string) error { // So now we have two duplicate unix time seconds. // This will be handled in aggregating by keys. // - clientN := gcfg.BenchmarkOptions.ConnectionClientNumbers[i] + clientN := gcfg.ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers[i] clientNs := make([]int64, len(st.TimeSeries)) for i := range st.TimeSeries { clientNs[i] = clientN @@ -184,18 +184,18 @@ func (cfg *Config) Stress(databaseID string) error { } for k, v := range totalKeysFunc(gcfg.DatabaseEndpoints) { plog.Infof("expected write total results [expected_total: %d | database: %q | endpoint: %q | number_of_keys: %d]", - gcfg.BenchmarkOptions.RequestNumber, gcfg.DatabaseID, k, v) + gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber, gcfg.DatabaseID, k, v) } case "read": - key, value := sameKey(gcfg.BenchmarkOptions.KeySizeBytes), vals.strings[0] + key, value := sameKey(gcfg.ConfigClientMachineBenchmarkOptions.KeySizeBytes), vals.strings[0] switch gcfg.DatabaseID { case "etcdv2": plog.Infof("write started [request: PUT | key: %q | database: %q]", key, gcfg.DatabaseID) var err error for i := 0; i < 7; i++ { - clients := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + clients := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) _, err = clients[0].Set(context.Background(), key, value, nil) if err != nil { continue @@ -232,7 +232,7 @@ func (cfg *Config) Stress(databaseID string) error { plog.Infof("write started [request: PUT | key: %q | database: %q]", key, gcfg.DatabaseID) var err error for i := 0; i < 7; i++ { - conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) _, err = conns[0].Create("/"+key, vals.bytes[0], zkCreateFlags, zkCreateACL) if err != nil { continue @@ -252,7 +252,7 @@ func (cfg *Config) Stress(databaseID string) error { plog.Infof("write started [request: PUT | key: %q | database: %q]", key, gcfg.DatabaseID) var err error for i := 0; i < 7; i++ { - clients := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + clients := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) _, err = clients[0].Put(&consulapi.KVPair{Key: key, Value: vals.bytes[0]}, nil) if err != nil { continue @@ -272,7 +272,7 @@ func (cfg *Config) Stress(databaseID string) error { plog.Println("read generateReport is finished...") case "read-oneshot": - key, value := sameKey(gcfg.BenchmarkOptions.KeySizeBytes), vals.strings[0] + key, value := sameKey(gcfg.ConfigClientMachineBenchmarkOptions.KeySizeBytes), vals.strings[0] plog.Infof("writing key for read-oneshot [key: %q | database: %q]", key, gcfg.DatabaseID) var err error switch gcfg.DatabaseID { @@ -311,18 +311,18 @@ func (cfg *Config) Stress(databaseID string) error { return nil } -func newReadHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { - rhs = make([]ReqHandler, gcfg.BenchmarkOptions.ClientNumber) +func newReadHandlers(gcfg dbtesterpb.ConfigClientMachineAgentControl) (rhs []ReqHandler, done func()) { + rhs = make([]ReqHandler, gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber) switch gcfg.DatabaseID { case "etcdv2": - conns := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { rhs[i] = newGetEtcd2(conns[i]) } case "etcdv3", "etcdtip": clients := mustCreateClientsEtcdv3(gcfg.DatabaseEndpoints, etcdv3ClientCfg{ - totalConns: gcfg.BenchmarkOptions.ConnectionNumber, - totalClients: gcfg.BenchmarkOptions.ClientNumber, + totalConns: gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber, + totalClients: gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber, }) for i := range clients { rhs[i] = newGetEtcd3(clients[i].KV) @@ -333,7 +333,7 @@ func newReadHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { } } case "zookeeper", "zetcd": - conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { rhs[i] = newGetZK(conns[i]) } @@ -343,7 +343,7 @@ func newReadHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { } } case "consul", "cetcd": - conns := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { rhs[i] = newGetConsul(conns[i]) } @@ -351,18 +351,18 @@ func newReadHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { return rhs, done } -func newWriteHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { - rhs = make([]ReqHandler, gcfg.BenchmarkOptions.ClientNumber) +func newWriteHandlers(gcfg dbtesterpb.ConfigClientMachineAgentControl) (rhs []ReqHandler, done func()) { + rhs = make([]ReqHandler, gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber) switch gcfg.DatabaseID { case "etcdv2": - conns := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateClientsEtcdv2(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { rhs[i] = newPutEtcd2(conns[i]) } case "etcdv3", "etcdtip": etcdClients := mustCreateClientsEtcdv3(gcfg.DatabaseEndpoints, etcdv3ClientCfg{ - totalConns: gcfg.BenchmarkOptions.ConnectionNumber, - totalClients: gcfg.BenchmarkOptions.ClientNumber, + totalConns: gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber, + totalClients: gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber, }) for i := range etcdClients { rhs[i] = newPutEtcd3(etcdClients[i]) @@ -373,13 +373,13 @@ func newWriteHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { } } case "zookeeper", "zetcd": - if gcfg.BenchmarkOptions.SameKey { - key := sameKey(gcfg.BenchmarkOptions.KeySizeBytes) - valueBts := randBytes(gcfg.BenchmarkOptions.ValueSizeBytes) + if gcfg.ConfigClientMachineBenchmarkOptions.SameKey { + key := sameKey(gcfg.ConfigClientMachineBenchmarkOptions.KeySizeBytes) + valueBts := randBytes(gcfg.ConfigClientMachineBenchmarkOptions.ValueSizeBytes) plog.Infof("write started [request: PUT | key: %q | database: %q]", key, gcfg.DatabaseID) var err error for i := 0; i < 7; i++ { - conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) _, err = conns[0].Create("/"+key, valueBts, zkCreateFlags, zkCreateACL) if err != nil { continue @@ -396,9 +396,9 @@ func newWriteHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { } } - conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { - if gcfg.BenchmarkOptions.SameKey { + if gcfg.ConfigClientMachineBenchmarkOptions.SameKey { rhs[i] = newPutOverwriteZK(conns[i]) } else { rhs[i] = newPutCreateZK(conns[i]) @@ -410,7 +410,7 @@ func newWriteHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { } } case "consul", "cetcd": - conns := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsConsul(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) for i := range conns { rhs[i] = newPutConsul(conns[i]) } @@ -424,8 +424,8 @@ func newWriteHandlers(gcfg TestGroup) (rhs []ReqHandler, done func()) { return } -func newReadOneshotHandlers(gcfg TestGroup) []ReqHandler { - rhs := make([]ReqHandler, gcfg.BenchmarkOptions.ClientNumber) +func newReadOneshotHandlers(gcfg dbtesterpb.ConfigClientMachineAgentControl) []ReqHandler { + rhs := make([]ReqHandler, gcfg.ConfigClientMachineBenchmarkOptions.ClientNumber) switch gcfg.DatabaseID { case "etcdv2": for i := range rhs { @@ -448,7 +448,7 @@ func newReadOneshotHandlers(gcfg TestGroup) []ReqHandler { case "zookeeper", "zetcd": for i := range rhs { rhs[i] = func(ctx context.Context, req *request) error { - conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.BenchmarkOptions.ConnectionNumber) + conns := mustCreateConnsZk(gcfg.DatabaseEndpoints, gcfg.ConfigClientMachineBenchmarkOptions.ConnectionNumber) defer conns[0].Close() return newGetZK(conns[0])(ctx, req) } @@ -464,18 +464,18 @@ func newReadOneshotHandlers(gcfg TestGroup) []ReqHandler { return rhs } -func generateReads(gcfg TestGroup, key string, inflightReqs chan<- request) { +func generateReads(gcfg dbtesterpb.ConfigClientMachineAgentControl, key string, inflightReqs chan<- request) { defer close(inflightReqs) var rateLimiter *rate.Limiter - if gcfg.BenchmarkOptions.RateLimitRequestsPerSecond > 0 { + if gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond > 0 { rateLimiter = rate.NewLimiter( - rate.Limit(gcfg.BenchmarkOptions.RateLimitRequestsPerSecond), - int(gcfg.BenchmarkOptions.RateLimitRequestsPerSecond), + rate.Limit(gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond), + int(gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond), ) } - for i := int64(0); i < gcfg.BenchmarkOptions.RequestNumber; i++ { + for i := int64(0); i < gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber; i++ { if rateLimiter != nil { rateLimiter.Wait(context.TODO()) } @@ -487,21 +487,21 @@ func generateReads(gcfg TestGroup, key string, inflightReqs chan<- request) { case "etcdv3", "etcdtip": opts := []clientv3.OpOption{clientv3.WithRange("")} - if gcfg.BenchmarkOptions.StaleRead { + if gcfg.ConfigClientMachineBenchmarkOptions.StaleRead { opts = append(opts, clientv3.WithSerializable()) } inflightReqs <- request{etcdv3Op: clientv3.OpGet(key, opts...)} case "zookeeper", "zetcd": op := zkOp{key: key} - if gcfg.BenchmarkOptions.StaleRead { + if gcfg.ConfigClientMachineBenchmarkOptions.StaleRead { op.staleRead = true } inflightReqs <- request{zkOp: op} case "consul", "cetcd": op := consulOp{key: key} - if gcfg.BenchmarkOptions.StaleRead { + if gcfg.ConfigClientMachineBenchmarkOptions.StaleRead { op.staleRead = true } inflightReqs <- request{consulOp: op} @@ -509,12 +509,12 @@ func generateReads(gcfg TestGroup, key string, inflightReqs chan<- request) { } } -func generateWrites(gcfg TestGroup, startIdx int64, vals values, inflightReqs chan<- request) { +func generateWrites(gcfg dbtesterpb.ConfigClientMachineAgentControl, startIdx int64, vals values, inflightReqs chan<- request) { var rateLimiter *rate.Limiter - if gcfg.BenchmarkOptions.RateLimitRequestsPerSecond > 0 { + if gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond > 0 { rateLimiter = rate.NewLimiter( - rate.Limit(gcfg.BenchmarkOptions.RateLimitRequestsPerSecond), - int(gcfg.BenchmarkOptions.RateLimitRequestsPerSecond), + rate.Limit(gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond), + int(gcfg.ConfigClientMachineBenchmarkOptions.RateLimitRequestsPerSecond), ) } @@ -524,10 +524,10 @@ func generateWrites(gcfg TestGroup, startIdx int64, vals values, inflightReqs ch wg.Wait() }() - for i := int64(0); i < gcfg.BenchmarkOptions.RequestNumber; i++ { - k := sequentialKey(gcfg.BenchmarkOptions.KeySizeBytes, i+startIdx) - if gcfg.BenchmarkOptions.SameKey { - k = sameKey(gcfg.BenchmarkOptions.KeySizeBytes) + for i := int64(0); i < gcfg.ConfigClientMachineBenchmarkOptions.RequestNumber; i++ { + k := sequentialKey(gcfg.ConfigClientMachineBenchmarkOptions.KeySizeBytes, i+startIdx) + if gcfg.ConfigClientMachineBenchmarkOptions.SameKey { + k = sameKey(gcfg.ConfigClientMachineBenchmarkOptions.KeySizeBytes) } v := vals.bytes[i%int64(vals.sampleSize)] diff --git a/test-configs/01-write-1M-keys-client-variable.yaml b/test-configs/01-write-1M-keys-client-variable.yaml index 225cd929..efd2dec9 100644 --- a/test-configs/01-write-1M-keys-client-variable.yaml +++ b/test-configs/01-write-1M-keys-client-variable.yaml @@ -1,18 +1,19 @@ test_title: Write 1M keys, 256-byte key, 1KB value value, clients 1 to 1,000 test_description: | - Google Cloud Compute Engine - - 4 machines of 16 vCPUs + 30 GB Memory + 300 GB SSD (1 for client) + - 4 machines of 16 vCPUs + 60 GB Memory + 300 GB SSD (1 for client) - Ubuntu 16.10 - - etcd v3.1 (Go 1.7.5) - - Zookeeper r3.4.9 + - etcd tip (Go 1.8.0) + - Zookeeper r3.5.2-alpha - Java 8 - javac 1.8.0_121 - Java(TM) SE Runtime Environment (build 1.8.0_121-b13) - Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) - - Consul v0.7.4 (Go 1.7.5) + - `/usr/bin/java -Djute.maxbuffer=33554432 -Xms50G -Xmx50G` + - Consul v0.7.5 (Go 1.8.0) # common control options for all client machines -control: +config_client_machine_initial: # if not empty, all test data paths are prefixed path_prefix: /home/gyuho log_path: client-control.log @@ -30,21 +31,21 @@ control: # set this in 'control' machine, to automate log uploading in remote 'agent' machines google_cloud_storage_key_path: /home/gyuho/gcloud-key.json google_cloud_storage_bucket_name: dbtester-results - google_cloud_storage_sub_directory: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable + google_cloud_storage_sub_directory: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable -all_database_id_list: [etcdv3, zookeeper, consul] +all_database_id_list: [etcd__tip, zookeeper__r3_5_2_alpha, consul__v0_7_5] -datatbase_id_to_test_group: - etcdv3: - database_description: etcd v3.1 (Go 1.7.5) +datatbase_id_to_config_client_machine_agent_control: + etcd__tip: + database_description: etcd tip (Go 1.8.0) peer_ips: - - 10.240.0.20 - - 10.240.0.21 - - 10.240.0.22 + - 10.240.0.7 + - 10.240.0.8 + - 10.240.0.12 database_port_to_connect: 2379 agent_port_to_connect: 3500 - etcdv3: + etcd__tip: # --snapshot-count snap_count: 100000 # --quota-backend-bytes; 8 GB @@ -74,17 +75,25 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - zookeeper: - database_description: Zookeeper r3.4.9 (Java 8) + zookeeper__r3_5_2_alpha: + database_description: Zookeeper r3.5.2-alpha (Java 8) peer_ips: - - 10.240.0.25 - - 10.240.0.27 - - 10.240.0.28 + - 10.240.0.21 + - 10.240.0.22 + - 10.240.0.23 database_port_to_connect: 2181 agent_port_to_connect: 3500 # http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html - zookeeper: + zookeeper__r3_5_2_alpha: + # maximum size, in bytes, of a request or response + # set it to 33 MB + java_d_jute_max_buffer: 33554432 + + # JVM min,max heap size + java_xms: 50G + java_xmx: 50G + # tickTime; the length of a single tick, which is the basic time unit used by ZooKeeper, # as measured in milliseconds. tick_time: 2000 @@ -130,12 +139,12 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - consul: - database_description: Consul v0.7.4 (Go 1.7.5) + consul__v0_7_5: + database_description: Consul v0.7.5 (Go 1.8.0) peer_ips: - - 10.240.0.30 - - 10.240.0.31 - - 10.240.0.33 + - 10.240.0.27 + - 10.240.0.28 + - 10.240.0.29 database_port_to_connect: 8500 agent_port_to_connect: 3500 @@ -164,10 +173,10 @@ datatbase_id_to_test_group: step4_upload_logs: true -datatbase_id_to_test_data: - etcdv3: +datatbase_id_to_config_analyze_machine_initial: + etcd__tip: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-v3.1-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/etcd-tip-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -184,9 +193,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - zookeeper: + zookeeper__r3_5_2_alpha: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.4.9-java8 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/zookeeper-r3.5.2-alpha-java8 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -203,9 +212,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - consul: + consul__v0_7_5: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.4-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/consul-v0.7.5-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -222,12 +231,12 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv -analyze: - all_aggregated_output_path_csv: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv - all_aggregated_output_path_txt: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt +analyze_all_aggregated_output: + all_aggregated_output_path_csv: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.csv + all_aggregated_output_path_txt: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/all-aggregated.txt -plot_path_prefix: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable -plot_list: +analyze_plot_path_prefix: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable +analyze_plot_list: - column: AVG-LATENCY-MS x_axis: Second y_axis: Latency(millisecond) @@ -288,82 +297,82 @@ plot_list: x_axis: Second y_axis: Network Transmit(bytes) (Delta per Second) -readme: - output_path: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md +analyze_readme: + output_path: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/README.md images: - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-THROUGHPUT.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/MAX-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READS-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-READ-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITES-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-SECTORS-WRITTEN-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-READ-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-WRITE-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-RECEIVE-BYTES-NUM-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/01-write-1M-keys-client-variable/AVG-TRANSMIT-BYTES-NUM-DELTA.svg type: remote diff --git a/test-configs/02-write-1M-keys-best-throughput.yaml b/test-configs/02-write-1M-keys-best-throughput.yaml index 4c30303d..6b3c8aef 100644 --- a/test-configs/02-write-1M-keys-best-throughput.yaml +++ b/test-configs/02-write-1M-keys-best-throughput.yaml @@ -1,18 +1,19 @@ test_title: Write 1M keys, 256-byte key, 1KB value, Best Throughput (etcd 1,000, Zookeeper 500, Consul 500 clients) test_description: | - Google Cloud Compute Engine - - 4 machines of 16 vCPUs + 30 GB Memory + 300 GB SSD (1 for client) + - 4 machines of 16 vCPUs + 60 GB Memory + 300 GB SSD (1 for client) - Ubuntu 16.10 - - etcd v3.1 (Go 1.7.5) - - Zookeeper r3.4.9 + - etcd tip (Go 1.8.0) + - Zookeeper r3.5.2-alpha - Java 8 - javac 1.8.0_121 - Java(TM) SE Runtime Environment (build 1.8.0_121-b13) - Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) - - Consul v0.7.4 (Go 1.7.5) + - `/usr/bin/java -Djute.maxbuffer=33554432 -Xms50G -Xmx50G` + - Consul v0.7.5 (Go 1.8.0) # common control options for all client machines -control: +config_client_machine_initial: # if not empty, all test data paths are prefixed path_prefix: /home/gyuho log_path: client-control.log @@ -30,21 +31,21 @@ control: # set this in 'control' machine, to automate log uploading in remote 'agent' machines google_cloud_storage_key_path: /home/gyuho/gcloud-key.json google_cloud_storage_bucket_name: dbtester-results - google_cloud_storage_sub_directory: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput + google_cloud_storage_sub_directory: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput -all_database_id_list: [etcdv3, zookeeper, consul] +all_database_id_list: [etcd__tip, zookeeper__r3_5_2_alpha, consul__v0_7_5] -datatbase_id_to_test_group: - etcdv3: - database_description: etcd v3.1 (Go 1.7.5) +datatbase_id_to_config_client_machine_agent_control: + etcd__tip: + database_description: etcd tip (Go 1.8.0) peer_ips: - - 10.240.0.20 - - 10.240.0.21 - - 10.240.0.22 + - 10.240.0.7 + - 10.240.0.8 + - 10.240.0.12 database_port_to_connect: 2379 agent_port_to_connect: 3500 - etcdv3: + etcd__tip: # --snapshot-count snap_count: 100000 # --quota-backend-bytes; 8 GB @@ -74,17 +75,25 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - zookeeper: - database_description: Zookeeper r3.4.9 (Java 8) + zookeeper__r3_5_2_alpha: + database_description: Zookeeper r3.5.2-alpha (Java 8) peer_ips: - - 10.240.0.25 - - 10.240.0.27 - - 10.240.0.28 + - 10.240.0.21 + - 10.240.0.22 + - 10.240.0.23 database_port_to_connect: 2181 agent_port_to_connect: 3500 # http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html - zookeeper: + zookeeper__r3_5_2_alpha: + # maximum size, in bytes, of a request or response + # set it to 33 MB + java_d_jute_max_buffer: 33554432 + + # JVM min,max heap size + java_xms: 50G + java_xmx: 50G + # tickTime; the length of a single tick, which is the basic time unit used by ZooKeeper, # as measured in milliseconds. tick_time: 2000 @@ -130,12 +139,12 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - consul: - database_description: Consul v0.7.4 (Go 1.7.5) + consul__v0_7_5: + database_description: Consul v0.7.5 (Go 1.8.0) peer_ips: - - 10.240.0.30 - - 10.240.0.31 - - 10.240.0.33 + - 10.240.0.27 + - 10.240.0.28 + - 10.240.0.29 database_port_to_connect: 8500 agent_port_to_connect: 3500 @@ -164,10 +173,10 @@ datatbase_id_to_test_group: step4_upload_logs: true -datatbase_id_to_test_data: - etcdv3: +datatbase_id_to_config_analyze_machine_initial: + etcd__tip: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/etcd-v3.1-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/etcd-tip-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -182,9 +191,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - zookeeper: + zookeeper__r3_5_2_alpha: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/zookeeper-r3.4.9-java8 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/zookeeper-r3.5.2-alpha-java8 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -199,9 +208,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - consul: + consul__v0_7_5: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/consul-v0.7.4-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/consul-v0.7.5-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -216,12 +225,12 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv -analyze: - all_aggregated_output_path_csv: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/all-aggregated.csv - all_aggregated_output_path_txt: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/all-aggregated.txt +analyze_all_aggregated_output: + all_aggregated_output_path_csv: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/all-aggregated.csv + all_aggregated_output_path_txt: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/all-aggregated.txt -plot_path_prefix: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput -plot_list: +analyze_plot_path_prefix: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput +analyze_plot_list: - column: AVG-LATENCY-MS x_axis: Second y_axis: Latency(millisecond) @@ -282,82 +291,82 @@ plot_list: x_axis: Second y_axis: Network Transmit(bytes) (Delta per Second) -readme: - output_path: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/README.md +analyze_readme: + output_path: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/README.md images: - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-THROUGHPUT - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-THROUGHPUT.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-THROUGHPUT + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-THROUGHPUT.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-NON-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-NON-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/MAX-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/MAX-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/MAX-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/MAX-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READS-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READS-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READS-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READS-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-READ-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-READ-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-READ-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-READ-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITES-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITES-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITES-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITES-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-WRITTEN-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-WRITTEN-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-WRITTEN-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-SECTORS-WRITTEN-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READ-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READ-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READ-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-READ-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITE-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITE-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITE-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-WRITE-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-RECEIVE-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-RECEIVE-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-RECEIVE-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-RECEIVE-BYTES-NUM-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-TRANSMIT-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-TRANSMIT-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-TRANSMIT-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/02-write-1M-keys-best-throughput/AVG-TRANSMIT-BYTES-NUM-DELTA.svg type: remote diff --git a/test-configs/03-write-too-many-keys.yaml b/test-configs/03-write-too-many-keys.yaml index ea3818bc..3702c775 100644 --- a/test-configs/03-write-too-many-keys.yaml +++ b/test-configs/03-write-too-many-keys.yaml @@ -1,18 +1,19 @@ test_title: Write 3-million keys, 256-byte key, 1KB value, Best Throughput (etcd 1,000, Zookeeper 500, Consul 500 clients) test_description: | - Google Cloud Compute Engine - - 4 machines of 16 vCPUs + 30 GB Memory + 300 GB SSD (1 for client) + - 4 machines of 16 vCPUs + 60 GB Memory + 300 GB SSD (1 for client) - Ubuntu 16.10 - - etcd v3.1 (Go 1.7.5) - - Zookeeper r3.4.9 + - etcd tip (Go 1.8.0) + - Zookeeper r3.5.2-alpha - Java 8 - javac 1.8.0_121 - Java(TM) SE Runtime Environment (build 1.8.0_121-b13) - Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) - - Consul v0.7.4 (Go 1.7.5) + - `/usr/bin/java -Djute.maxbuffer=33554432 -Xms50G -Xmx50G` + - Consul v0.7.5 (Go 1.8.0) # common control options for all client machines -control: +config_client_machine_initial: # if not empty, all test data paths are prefixed path_prefix: /home/gyuho log_path: client-control.log @@ -30,21 +31,21 @@ control: # set this in 'control' machine, to automate log uploading in remote 'agent' machines google_cloud_storage_key_path: /home/gyuho/gcloud-key.json google_cloud_storage_bucket_name: dbtester-results - google_cloud_storage_sub_directory: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys + google_cloud_storage_sub_directory: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys -all_database_id_list: [etcdv3, zookeeper, consul] +all_database_id_list: [etcd__tip, zookeeper__r3_5_2_alpha, consul__v0_7_5] -datatbase_id_to_test_group: - etcdv3: - database_description: etcd v3.1 (Go 1.7.5) +datatbase_id_to_config_client_machine_agent_control: + etcd__tip: + database_description: etcd tip (Go 1.8.0) peer_ips: - - 10.240.0.20 - - 10.240.0.21 - - 10.240.0.22 + - 10.240.0.7 + - 10.240.0.8 + - 10.240.0.12 database_port_to_connect: 2379 agent_port_to_connect: 3500 - etcdv3: + etcd__tip: # --snapshot-count snap_count: 100000 # --quota-backend-bytes; 8 GB @@ -74,17 +75,25 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - zookeeper: - database_description: Zookeeper r3.4.9 (Java 8) + zookeeper__r3_5_2_alpha: + database_description: Zookeeper r3.5.2-alpha (Java 8) peer_ips: - - 10.240.0.25 - - 10.240.0.27 - - 10.240.0.28 + - 10.240.0.21 + - 10.240.0.22 + - 10.240.0.23 database_port_to_connect: 2181 agent_port_to_connect: 3500 # http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html - zookeeper: + zookeeper__r3_5_2_alpha: + # maximum size, in bytes, of a request or response + # set it to 33 MB + java_d_jute_max_buffer: 33554432 + + # JVM min,max heap size + java_xms: 50G + java_xmx: 50G + # tickTime; the length of a single tick, which is the basic time unit used by ZooKeeper, # as measured in milliseconds. tick_time: 2000 @@ -130,12 +139,12 @@ datatbase_id_to_test_group: step3_stop_database: true step4_upload_logs: true - consul: - database_description: Consul v0.7.4 (Go 1.7.5) + consul__v0_7_5: + database_description: Consul v0.7.5 (Go 1.8.0) peer_ips: - - 10.240.0.30 - - 10.240.0.31 - - 10.240.0.33 + - 10.240.0.27 + - 10.240.0.28 + - 10.240.0.29 database_port_to_connect: 8500 agent_port_to_connect: 3500 @@ -164,10 +173,10 @@ datatbase_id_to_test_group: step4_upload_logs: true -datatbase_id_to_test_data: - etcdv3: +datatbase_id_to_config_analyze_machine_initial: + etcd__tip: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/etcd-v3.1-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/etcd-tip-go1.8.0 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -182,9 +191,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - zookeeper: + zookeeper__r3_5_2_alpha: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/zookeeper-r3.4.9-java8 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/zookeeper-r3.5.2-alpha-java8 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -199,9 +208,9 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv - consul: + consul__v0_7_5: # if not empty, all test data paths are prefixed - path_prefix: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/consul-v0.7.4-go1.7.5 + path_prefix: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/consul-v0.7.5-go1.8 client_system_metrics_interpolated_path: client-system-metrics-interpolated.csv client_latency_throughput_timeseries_path: client-latency-throughput-timeseries.csv client_latency_distribution_all_path: client-latency-distribution-all.csv @@ -216,12 +225,12 @@ datatbase_id_to_test_data: - 3-server-system-metrics-interpolated.csv all_aggregated_output_path: all-aggregated.csv -analyze: - all_aggregated_output_path_csv: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/all-aggregated.csv - all_aggregated_output_path_txt: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/all-aggregated.txt +analyze_all_aggregated_output: + all_aggregated_output_path_csv: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/all-aggregated.csv + all_aggregated_output_path_txt: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/all-aggregated.txt -plot_path_prefix: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys -plot_list: +analyze_plot_path_prefix: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys +analyze_plot_list: - column: AVG-LATENCY-MS x_axis: Second y_axis: Latency(millisecond) @@ -282,82 +291,82 @@ plot_list: x_axis: Second y_axis: Network Transmit(bytes) (Delta per Second) -readme: - output_path: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/README.md +analyze_readme: + output_path: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/README.md images: - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-THROUGHPUT - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-THROUGHPUT.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-THROUGHPUT + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-THROUGHPUT.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-NON-VOLUNTARY-CTXT-SWITCHES - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-NON-VOLUNTARY-CTXT-SWITCHES + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-NON-VOLUNTARY-CTXT-SWITCHES.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/MAX-CPU - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/MAX-CPU.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/MAX-CPU + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/MAX-CPU.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READS-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READS-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READS-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READS-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-READ-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-READ-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-READ-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-READ-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITES-COMPLETED-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITES-COMPLETED-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITES-COMPLETED-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITES-COMPLETED-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-WRITTEN-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-WRITTEN-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-WRITTEN-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-SECTORS-WRITTEN-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READ-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READ-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READ-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-READ-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITE-BYTES-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITE-BYTES-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITE-BYTES-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-WRITE-BYTES-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-RECEIVE-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-RECEIVE-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-RECEIVE-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-RECEIVE-BYTES-NUM-DELTA.svg type: remote - - title: 2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-TRANSMIT-BYTES-NUM-DELTA - path: https://storage.googleapis.com/dbtester-results/2017Q1-00-etcd-zookeeper-consul/03-write-too-many-keys/AVG-TRANSMIT-BYTES-NUM-DELTA.svg + - title: 2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-TRANSMIT-BYTES-NUM-DELTA + path: https://storage.googleapis.com/dbtester-results/2017Q1-01-etcd-zookeeper-consul/03-write-too-many-keys/AVG-TRANSMIT-BYTES-NUM-DELTA.svg type: remote diff --git a/test-configs/install-consul.sh b/test-configs/install-consul.sh index 8c30688b..d7afe774 100755 --- a/test-configs/install-consul.sh +++ b/test-configs/install-consul.sh @@ -2,7 +2,7 @@ set -e rm -f /tmp/consul.zip -curl -sf -o /tmp/consul.zip https://releases.hashicorp.com/consul/0.7.4/consul_0.7.4_linux_amd64.zip +curl -sf -o /tmp/consul.zip https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip rm -f ${GOPATH}/bin/consul unzip /tmp/consul.zip -d ${GOPATH}/bin diff --git a/test-configs/install-etcd.sh b/test-configs/install-etcd.sh index df476b17..3b3a7431 100755 --- a/test-configs/install-etcd.sh +++ b/test-configs/install-etcd.sh @@ -33,7 +33,7 @@ cp ${GOPATH}/src/${GIT_PATH}/bin/etcdctl ${GOPATH}/bin/etcdctl sudo cp ${GOPATH}/src/${GIT_PATH}/bin/etcdctl /etcdctl COMMENT -ETCD_VER=v3.1.0 +ETCD_VER=v3.1.1 GOOGLE_URL=https://storage.googleapis.com/etcd GITHUB_URL=https://github.com/coreos/etcd/releases/download diff --git a/test-configs/install-zookeeper-ubuntu.sh b/test-configs/install-zookeeper-ubuntu.sh index 95b287c7..65880644 100755 --- a/test-configs/install-zookeeper-ubuntu.sh +++ b/test-configs/install-zookeeper-ubuntu.sh @@ -59,12 +59,24 @@ ansible-playbook /tmp/install-java.yml java -version javac -version -echo "Installing Zookeeper..." -ZOOKEEPER_VERSION=3.4.9 +< $HOME/control.log 2>&1 & -nohup dbtester control --database-id zookeeper --config config.yaml > $HOME/control.log 2>&1 & -nohup dbtester control --database-id consul --config config.yaml > $HOME/control.log 2>&1 & +nohup dbtester control --database-id etcd__tip --config config.yaml > $HOME/control.log 2>&1 & +nohup dbtester control --database-id zookeeper__r3_5_2_alpha --config config.yaml > $HOME/control.log 2>&1 & +nohup dbtester control --database-id consul__v0_7_5 --config config.yaml > $HOME/control.log 2>&1 & # analyze; get all data from remote machines # and specify 'analyze' configuration file, diff --git a/vendor/github.com/coreos/etcd/clientv3/client.go b/vendor/github.com/coreos/etcd/clientv3/client.go index 3d36c3ab..7cfb0b0e 100644 --- a/vendor/github.com/coreos/etcd/clientv3/client.go +++ b/vendor/github.com/coreos/etcd/clientv3/client.go @@ -20,6 +20,7 @@ import ( "fmt" "net" "net/url" + "strconv" "strings" "sync" "time" @@ -35,6 +36,7 @@ import ( var ( ErrNoAvailableEndpoints = errors.New("etcdclient: no available endpoints") + ErrOldCluster = errors.New("etcdclient: old cluster version") ) // Client provides and manages an etcd v3 client session. @@ -272,7 +274,7 @@ func (c *Client) dial(endpoint string, dopts ...grpc.DialOption) (*grpc.ClientCo tokenMu: &sync.RWMutex{}, } - err := c.getToken(context.TODO()) + err := c.getToken(c.ctx) if err != nil { return nil, err } @@ -307,7 +309,12 @@ func newClient(cfg *Config) (*Client, error) { } // use a temporary skeleton client to bootstrap first connection - ctx, cancel := context.WithCancel(context.TODO()) + baseCtx := context.TODO() + if cfg.Context != nil { + baseCtx = cfg.Context + } + + ctx, cancel := context.WithCancel(baseCtx) client := &Client{ conn: nil, cfg: *cfg, @@ -353,10 +360,57 @@ func newClient(cfg *Config) (*Client, error) { client.Auth = NewAuth(client) client.Maintenance = NewMaintenance(client) + if cfg.RejectOldCluster { + if err := client.checkVersion(); err != nil { + client.Close() + return nil, err + } + } + go client.autoSync() return client, nil } +func (c *Client) checkVersion() (err error) { + var wg sync.WaitGroup + errc := make(chan error, len(c.cfg.Endpoints)) + ctx, cancel := context.WithCancel(c.ctx) + if c.cfg.DialTimeout > 0 { + ctx, _ = context.WithTimeout(ctx, c.cfg.DialTimeout) + } + wg.Add(len(c.cfg.Endpoints)) + for _, ep := range c.cfg.Endpoints { + // if cluster is current, any endpoint gives a recent version + go func(e string) { + defer wg.Done() + resp, rerr := c.Status(ctx, e) + if rerr != nil { + errc <- rerr + return + } + vs := strings.Split(resp.Version, ".") + maj, min := 0, 0 + if len(vs) >= 2 { + maj, rerr = strconv.Atoi(vs[0]) + min, rerr = strconv.Atoi(vs[1]) + } + if maj < 3 || (maj == 3 && min < 2) { + rerr = ErrOldCluster + } + errc <- rerr + }(ep) + } + // wait for success + for i := 0; i < len(c.cfg.Endpoints); i++ { + if err = <-errc; err == nil { + break + } + } + cancel() + wg.Wait() + return err +} + // ActiveConnection returns the current in-use connection func (c *Client) ActiveConnection() *grpc.ClientConn { return c.conn } diff --git a/vendor/github.com/coreos/etcd/clientv3/config.go b/vendor/github.com/coreos/etcd/clientv3/config.go index 2082f7b9..dda72a74 100644 --- a/vendor/github.com/coreos/etcd/clientv3/config.go +++ b/vendor/github.com/coreos/etcd/clientv3/config.go @@ -18,6 +18,7 @@ import ( "crypto/tls" "time" + "golang.org/x/net/context" "google.golang.org/grpc" ) @@ -41,6 +42,13 @@ type Config struct { // Password is a password for authentication. Password string `json:"password"` + // RejectOldCluster when set will refuse to create a client against an outdated cluster. + RejectOldCluster bool `json:"reject-old-cluster"` + // DialOptions is a list of dial options for the grpc client (e.g., for interceptors). DialOptions []grpc.DialOption + + // Context is the default client context; it can be used to cancel grpc dial out and + // other operations that do not have an explicit context. + Context context.Context } diff --git a/vendor/github.com/coreos/etcd/clientv3/lease.go b/vendor/github.com/coreos/etcd/clientv3/lease.go index 2ef5df38..90076938 100644 --- a/vendor/github.com/coreos/etcd/clientv3/lease.go +++ b/vendor/github.com/coreos/etcd/clientv3/lease.go @@ -144,16 +144,19 @@ type keepAlive struct { } func NewLease(c *Client) Lease { + return NewLeaseFromLeaseClient(RetryLeaseClient(c), c.cfg.DialTimeout+time.Second) +} + +func NewLeaseFromLeaseClient(remote pb.LeaseClient, keepAliveTimeout time.Duration) Lease { l := &lessor{ donec: make(chan struct{}), keepAlives: make(map[LeaseID]*keepAlive), - remote: RetryLeaseClient(c), - firstKeepAliveTimeout: c.cfg.DialTimeout + time.Second, + remote: remote, + firstKeepAliveTimeout: keepAliveTimeout, } if l.firstKeepAliveTimeout == time.Second { l.firstKeepAliveTimeout = defaultTTL } - l.stopCtx, l.stopCancel = context.WithCancel(context.Background()) return l } @@ -407,7 +410,7 @@ func (l *lessor) recvKeepAlive(resp *pb.LeaseKeepAliveResponse) { } // send update to all channels - nextKeepAlive := time.Now().Add(1 + time.Duration(karesp.TTL/3)*time.Second) + nextKeepAlive := time.Now().Add((time.Duration(karesp.TTL) * time.Second) / 3.0) ka.deadline = time.Now().Add(time.Duration(karesp.TTL) * time.Second) for _, ch := range ka.chs { select { diff --git a/vendor/github.com/coreos/etcd/pkg/netutil/routes_linux.go b/vendor/github.com/coreos/etcd/pkg/netutil/routes_linux.go index c90bb334..5d234d46 100644 --- a/vendor/github.com/coreos/etcd/pkg/netutil/routes_linux.go +++ b/vendor/github.com/coreos/etcd/pkg/netutil/routes_linux.go @@ -21,6 +21,7 @@ import ( "encoding/binary" "fmt" "net" + "sort" "syscall" "github.com/coreos/etcd/pkg/cpuutil" @@ -38,37 +39,58 @@ func GetDefaultHost() (string, error) { return "", rerr } - for family, rmsg := range rmsgs { - host, oif, err := parsePREFSRC(rmsg) - if err != nil { - return "", err - } - if host != "" { - return host, nil + // prioritize IPv4 + if rmsg, ok := rmsgs[syscall.AF_INET]; ok { + if host, err := chooseHost(syscall.AF_INET, rmsg); host != "" || err != nil { + return host, err } + delete(rmsgs, syscall.AF_INET) + } - // prefsrc not detected, fall back to getting address from iface - ifmsg, ierr := getIfaceAddr(oif, family) - if ierr != nil { - return "", ierr - } + // sort so choice is deterministic + var families []int + for family := range rmsgs { + families = append(families, int(family)) + } + sort.Ints(families) - attrs, aerr := syscall.ParseNetlinkRouteAttr(ifmsg) - if aerr != nil { - return "", aerr - } - - for _, attr := range attrs { - // search for RTA_DST because ipv6 doesn't have RTA_SRC - if attr.Attr.Type == syscall.RTA_DST { - return net.IP(attr.Value).String(), nil - } + for _, f := range families { + family := uint8(f) + if host, err := chooseHost(family, rmsgs[family]); host != "" || err != nil { + return host, err } } return "", errNoDefaultHost } +func chooseHost(family uint8, rmsg *syscall.NetlinkMessage) (string, error) { + host, oif, err := parsePREFSRC(rmsg) + if host != "" || err != nil { + return host, err + } + + // prefsrc not detected, fall back to getting address from iface + ifmsg, ierr := getIfaceAddr(oif, family) + if ierr != nil { + return "", ierr + } + + attrs, aerr := syscall.ParseNetlinkRouteAttr(ifmsg) + if aerr != nil { + return "", aerr + } + + for _, attr := range attrs { + // search for RTA_DST because ipv6 doesn't have RTA_SRC + if attr.Attr.Type == syscall.RTA_DST { + return net.IP(attr.Value).String(), nil + } + } + + return "", nil +} + func getDefaultRoutes() (map[uint8]*syscall.NetlinkMessage, error) { dat, err := syscall.NetlinkRIB(syscall.RTM_GETROUTE, syscall.AF_UNSPEC) if err != nil { diff --git a/vendor/github.com/gonum/plot/axis.go b/vendor/github.com/gonum/plot/axis.go index f01927d2..d1f13743 100644 --- a/vendor/github.com/gonum/plot/axis.go +++ b/vendor/github.com/gonum/plot/axis.go @@ -196,7 +196,7 @@ type horizontalAxis struct { // size returns the height of the axis. func (a *horizontalAxis) size() (h vg.Length) { - if a.Label.Text != "" { + if a.Label.Text != "" { // We assume that the label isn't rotated. h -= a.Label.Font.Extents().Descent h += a.Label.Height(a.Label.Text) } @@ -258,13 +258,9 @@ func (a *horizontalAxis) GlyphBoxes(*Plot) (boxes []GlyphBox) { if t.IsMinor() { continue } - w := a.Tick.Label.Width(t.Label) box := GlyphBox{ - X: a.Norm(t.Value), - Rectangle: vg.Rectangle{ - Min: vg.Point{X: -w / 2}, - Max: vg.Point{X: w / 2}, - }, + X: a.Norm(t.Value), + Rectangle: a.Tick.Label.Rectangle(t.Label), } boxes = append(boxes, box) } @@ -278,7 +274,7 @@ type verticalAxis struct { // size returns the width of the axis. func (a *verticalAxis) size() (w vg.Length) { - if a.Label.Text != "" { + if a.Label.Text != "" { // We assume that the label isn't rotated. w -= a.Label.Font.Extents().Descent w += a.Label.Height(a.Label.Text) } @@ -343,13 +339,9 @@ func (a *verticalAxis) GlyphBoxes(*Plot) (boxes []GlyphBox) { if t.IsMinor() { continue } - h := a.Tick.Label.Height(t.Label) box := GlyphBox{ - Y: a.Norm(t.Value), - Rectangle: vg.Rectangle{ - Min: vg.Point{Y: -h / 2}, - Max: vg.Point{Y: h / 2}, - }, + Y: a.Norm(t.Value), + Rectangle: a.Tick.Label.Rectangle(t.Label), } boxes = append(boxes, box) } diff --git a/vendor/github.com/hashicorp/consul/api/api.go b/vendor/github.com/hashicorp/consul/api/api.go index 9a59b724..f6fe5a1b 100644 --- a/vendor/github.com/hashicorp/consul/api/api.go +++ b/vendor/github.com/hashicorp/consul/api/api.go @@ -2,6 +2,7 @@ package api import ( "bytes" + "context" "crypto/tls" "crypto/x509" "encoding/json" @@ -79,6 +80,11 @@ type QueryOptions struct { // metadata key/value pairs. Currently, only one key/value pair can // be provided for filtering. NodeMeta map[string]string + + // RelayFactor is used in keyring operations to cause reponses to be + // relayed back to the sender through N other random nodes. Must be + // a value from 0 to 5 (inclusive). + RelayFactor uint8 } // WriteOptions are used to parameterize a write @@ -90,6 +96,11 @@ type WriteOptions struct { // Token is used to provide a per-request ACL token // which overrides the agent's default token. Token string + + // RelayFactor is used in keyring operations to cause reponses to be + // relayed back to the sender through N other random nodes. Must be + // a value from 0 to 5 (inclusive). + RelayFactor uint8 } // QueryMeta is used to return meta data about a query @@ -336,13 +347,22 @@ func NewClient(config *Config) (*Client, error) { config.HttpClient = defConfig.HttpClient } - if parts := strings.SplitN(config.Address, "unix://", 2); len(parts) == 2 { - trans := cleanhttp.DefaultTransport() - trans.Dial = func(_, _ string) (net.Conn, error) { - return net.Dial("unix", parts[1]) - } - config.HttpClient = &http.Client{ - Transport: trans, + parts := strings.SplitN(config.Address, "://", 2) + if len(parts) == 2 { + switch parts[0] { + case "http": + case "https": + config.Scheme = "https" + case "unix": + trans := cleanhttp.DefaultTransport() + trans.DialContext = func(_ context.Context, _, _ string) (net.Conn, error) { + return net.Dial("unix", parts[1]) + } + config.HttpClient = &http.Client{ + Transport: trans, + } + default: + return nil, fmt.Errorf("Unknown protocol scheme: %s", parts[0]) } config.Address = parts[1] } @@ -396,6 +416,9 @@ func (r *request) setQueryOptions(q *QueryOptions) { r.params.Add("node-meta", key+":"+value) } } + if q.RelayFactor != 0 { + r.params.Set("relay-factor", strconv.Itoa(int(q.RelayFactor))) + } } // durToMsec converts a duration to a millisecond specified string. If the @@ -437,6 +460,9 @@ func (r *request) setWriteOptions(q *WriteOptions) { if q.Token != "" { r.header.Set("X-Consul-Token", q.Token) } + if q.RelayFactor != 0 { + r.params.Set("relay-factor", strconv.Itoa(int(q.RelayFactor))) + } } // toHTTP converts the request to an HTTP request