diff --git a/tests/e2e/ctl_v3_grpc_test.go b/tests/e2e/ctl_v3_grpc_test.go index 39211e7dc..d3cc101a6 100644 --- a/tests/e2e/ctl_v3_grpc_test.go +++ b/tests/e2e/ctl_v3_grpc_test.go @@ -98,7 +98,7 @@ func TestAuthority(t *testing.T) { defer epc.Close() endpoints := templateEndpoints(t, tc.clientURLPattern, epc) - client := clusterEtcdctlV3(cfg, endpoints) + client := e2e.NewEtcdctl(cfg, endpoints) err = client.Put("foo", "bar") if err != nil { t.Fatal(err) @@ -152,48 +152,3 @@ func firstMatch(t *testing.T, expectLine string, logs ...e2e.LogsExpect) string } return <-match } - -type etcdctlV3 struct { - cfg *e2e.EtcdProcessClusterConfig - endpoints []string -} - -func clusterEtcdctlV3(cfg *e2e.EtcdProcessClusterConfig, endpoints []string) *etcdctlV3 { - return &etcdctlV3{ - cfg: cfg, - endpoints: endpoints, - } -} - -func (ctl *etcdctlV3) Put(key, value string) error { - return ctl.runCmd("put", key, value) -} - -func (ctl *etcdctlV3) runCmd(args ...string) error { - cmdArgs := []string{e2e.CtlBinPath + "3"} - for k, v := range ctl.flags() { - cmdArgs = append(cmdArgs, fmt.Sprintf("--%s=%s", k, v)) - } - cmdArgs = append(cmdArgs, args...) - return e2e.SpawnWithExpect(cmdArgs, "OK") -} - -func (ctl *etcdctlV3) flags() map[string]string { - fmap := make(map[string]string) - if ctl.cfg.ClientTLS == e2e.ClientTLS { - if ctl.cfg.IsClientAutoTLS { - fmap["insecure-transport"] = "false" - fmap["insecure-skip-tls-verify"] = "true" - } else if ctl.cfg.IsClientCRL { - fmap["cacert"] = e2e.CaPath - fmap["cert"] = e2e.RevokedCertPath - fmap["key"] = e2e.RevokedPrivateKeyPath - } else { - fmap["cacert"] = e2e.CaPath - fmap["cert"] = e2e.CertPath - fmap["key"] = e2e.PrivateKeyPath - } - } - fmap["endpoints"] = strings.Join(ctl.endpoints, ",") - return fmap -} diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go new file mode 100644 index 000000000..fb24e635c --- /dev/null +++ b/tests/framework/e2e/etcdctl.go @@ -0,0 +1,65 @@ +// Copyright 2022 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "fmt" + "strings" +) + +type etcdctlV3 struct { + cfg *EtcdProcessClusterConfig + endpoints []string +} + +func NewEtcdctl(cfg *EtcdProcessClusterConfig, endpoints []string) *etcdctlV3 { + return &etcdctlV3{ + cfg: cfg, + endpoints: endpoints, + } +} + +func (ctl *etcdctlV3) Put(key, value string) error { + return ctl.runCmd("put", key, value) +} + +func (ctl *etcdctlV3) runCmd(args ...string) error { + cmdArgs := []string{CtlBinPath + "3"} + for k, v := range ctl.flags() { + cmdArgs = append(cmdArgs, fmt.Sprintf("--%s=%s", k, v)) + } + cmdArgs = append(cmdArgs, args...) + return SpawnWithExpect(cmdArgs, "OK") +} + +func (ctl *etcdctlV3) flags() map[string]string { + fmap := make(map[string]string) + if ctl.cfg.ClientTLS == ClientTLS { + if ctl.cfg.IsClientAutoTLS { + fmap["insecure-transport"] = "false" + fmap["insecure-skip-tls-verify"] = "true" + } else if ctl.cfg.IsClientCRL { + fmap["cacert"] = CaPath + fmap["cert"] = RevokedCertPath + fmap["key"] = RevokedPrivateKeyPath + } else { + fmap["cacert"] = CaPath + fmap["cert"] = CertPath + fmap["key"] = PrivateKeyPath + } + } + fmap["endpoints"] = strings.Join(ctl.endpoints, ",") + return fmap +}