From c603b5e6a155642fd5eda89aa893b6bcd7ae5fdd Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 21 Jul 2016 16:01:54 -0700 Subject: [PATCH] e2e: add gateway test --- e2e/ctl_v2_test.go | 2 +- e2e/ctl_v3_test.go | 2 +- e2e/etcd_test.go | 4 ++- e2e/gateway_test.go | 60 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 e2e/gateway_test.go diff --git a/e2e/ctl_v2_test.go b/e2e/ctl_v2_test.go index 5e7b8f790..8844f9adb 100644 --- a/e2e/ctl_v2_test.go +++ b/e2e/ctl_v2_test.go @@ -323,7 +323,7 @@ func etcdctlPrefixArgs(clus *etcdProcessCluster) []string { } endpoints = strings.Join(es, ",") } - cmdArgs := []string{"../bin/etcdctl", "--endpoints", endpoints} + cmdArgs := []string{defaultCtlBinPath, "--endpoints", endpoints} if clus.cfg.clientTLS == clientTLS { cmdArgs = append(cmdArgs, "--ca-file", caPath, "--cert-file", certPath, "--key-file", privateKeyPath) } diff --git a/e2e/ctl_v3_test.go b/e2e/ctl_v3_test.go index 93d1c868b..e2c3985df 100644 --- a/e2e/ctl_v3_test.go +++ b/e2e/ctl_v3_test.go @@ -148,7 +148,7 @@ func (cx *ctlCtx) PrefixArgs() []string { } endpoints = strings.Join(es, ",") } - cmdArgs := []string{"../bin/etcdctl", "--endpoints", endpoints, "--dial-timeout", cx.dialTimeout.String()} + cmdArgs := []string{defaultCtlBinPath, "--endpoints", endpoints, "--dial-timeout", cx.dialTimeout.String()} if cx.epc.cfg.clientTLS == clientTLS { if cx.epc.cfg.isClientAutoTLS { cmdArgs = append(cmdArgs, "--insecure-transport=false", "--insecure-skip-tls-verify") diff --git a/e2e/etcd_test.go b/e2e/etcd_test.go index d96e3e45f..9c5cb9f54 100644 --- a/e2e/etcd_test.go +++ b/e2e/etcd_test.go @@ -31,6 +31,8 @@ const ( certPath = "../integration/fixtures/server.crt" privateKeyPath = "../integration/fixtures/server.key.insecure" caPath = "../integration/fixtures/ca.crt" + defaultBinPath = "../bin/etcd" + defaultCtlBinPath = "../bin/etcdctl" ) type clientConnType int @@ -205,7 +207,7 @@ func (cfg *etcdProcessClusterConfig) etcdProcessConfigs() []*etcdProcessConfig { } if cfg.execPath == "" { - cfg.execPath = "../bin/etcd" + cfg.execPath = defaultBinPath } if cfg.snapCount == 0 { cfg.snapCount = etcdserver.DefaultSnapCount diff --git a/e2e/gateway_test.go b/e2e/gateway_test.go new file mode 100644 index 000000000..7bd00221f --- /dev/null +++ b/e2e/gateway_test.go @@ -0,0 +1,60 @@ +// Copyright 2016 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 ( + "os" + "strings" + "testing" + + "github.com/coreos/etcd/pkg/expect" +) + +var ( + defaultGatewayEndpoint = "127.0.0.1:23790" +) + +func TestGateway(t *testing.T) { + ec, err := newEtcdProcessCluster(&configNoTLS) + if err != nil { + t.Fatal(err) + } + defer ec.StopAll() + + eps := strings.Join(ec.grpcEndpoints(), ",") + + p := startGateway(t, eps) + defer p.Stop() + + os.Setenv("ETCDCTL_API", "3") + defer os.Unsetenv("ETCDCTL_API") + + err = spawnWithExpect([]string{defaultCtlBinPath, "--endpoints=" + defaultGatewayEndpoint, "put", "foo", "bar"}, "OK\r\n") + if err != nil { + t.Errorf("failed to finish put request through gateway: %v", err) + } +} + +func startGateway(t *testing.T, endpoints string) *expect.ExpectProcess { + p, err := expect.NewExpect(defaultBinPath, "gateway", "--endpoints="+endpoints, "start") + if err != nil { + t.Fatal(err) + } + _, err = p.Expect("tcpproxy: ready to proxy client requests to") + if err != nil { + t.Fatal(err) + } + return p +}