From 2ca87f6c03d69f9958856c636d9853fca9a45a6e Mon Sep 17 00:00:00 2001 From: Yiqiao Pu Date: Thu, 4 Aug 2016 23:51:20 +0800 Subject: [PATCH] e2e: Make it can run with exist binary Add the bin-dir option to the command line, so the e2e tests can run with an exist binary. For example(run the command under e2e directory): go test -v -timeout 10m -bin-dir /usr/bin -cpu 1,2,4 Signed-off-by: Yiqiao Pu --- e2e/ctl_v2_test.go | 2 +- e2e/ctl_v3_test.go | 2 +- e2e/etcd_test.go | 12 +++++++++--- e2e/gateway_test.go | 4 ++-- e2e/main_test.go | 7 +++++++ 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/e2e/ctl_v2_test.go b/e2e/ctl_v2_test.go index 8844f9adb..355c6d82c 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{defaultCtlBinPath, "--endpoints", endpoints} + cmdArgs := []string{ctlBinPath, "--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 e2c3985df..1b4f79e02 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{defaultCtlBinPath, "--endpoints", endpoints, "--dial-timeout", cx.dialTimeout.String()} + cmdArgs := []string{ctlBinPath, "--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 9c5cb9f54..ede1cdcdb 100644 --- a/e2e/etcd_test.go +++ b/e2e/etcd_test.go @@ -31,8 +31,11 @@ const ( certPath = "../integration/fixtures/server.crt" privateKeyPath = "../integration/fixtures/server.key.insecure" caPath = "../integration/fixtures/ca.crt" - defaultBinPath = "../bin/etcd" - defaultCtlBinPath = "../bin/etcdctl" +) + +var ( + binPath string + ctlBinPath string ) type clientConnType int @@ -202,12 +205,15 @@ func newEtcdProcess(cfg *etcdProcessConfig) (*etcdProcess, error) { } func (cfg *etcdProcessClusterConfig) etcdProcessConfigs() []*etcdProcessConfig { + binPath = binDir + "/etcd" + ctlBinPath = binDir + "/etcdctl" + if cfg.basePort == 0 { cfg.basePort = etcdProcessBasePort } if cfg.execPath == "" { - cfg.execPath = defaultBinPath + cfg.execPath = binPath } if cfg.snapCount == 0 { cfg.snapCount = etcdserver.DefaultSnapCount diff --git a/e2e/gateway_test.go b/e2e/gateway_test.go index 7bd00221f..9eee0170e 100644 --- a/e2e/gateway_test.go +++ b/e2e/gateway_test.go @@ -41,14 +41,14 @@ func TestGateway(t *testing.T) { os.Setenv("ETCDCTL_API", "3") defer os.Unsetenv("ETCDCTL_API") - err = spawnWithExpect([]string{defaultCtlBinPath, "--endpoints=" + defaultGatewayEndpoint, "put", "foo", "bar"}, "OK\r\n") + err = spawnWithExpect([]string{ctlBinPath, "--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") + p, err := expect.NewExpect(binPath, "gateway", "--endpoints="+endpoints, "start") if err != nil { t.Fatal(err) } diff --git a/e2e/main_test.go b/e2e/main_test.go index e1098db43..4df4fd1d7 100644 --- a/e2e/main_test.go +++ b/e2e/main_test.go @@ -5,6 +5,7 @@ package e2e import ( + "flag" "os" "runtime" "testing" @@ -12,8 +13,14 @@ import ( "github.com/coreos/etcd/pkg/testutil" ) +var binDir string + func TestMain(m *testing.M) { os.Setenv("ETCD_UNSUPPORTED_ARCH", runtime.GOARCH) + + flag.StringVar(&binDir, "bin-dir", "../bin", "The directory for store etcd and etcdctl binaries.") + flag.Parse() + v := m.Run() if v == 0 && testutil.CheckLeakedGoroutine() { os.Exit(1)