From 7fa88fb8f77778ea679959f3020d9c77e51b2624 Mon Sep 17 00:00:00 2001 From: Clark Date: Wed, 3 Aug 2022 03:10:45 +0800 Subject: [PATCH] tests: fix status responses size and nil Signed-off-by: Clark --- tests/common/status_test.go | 58 ++++++++++++++++++++++++++++++++++ tests/framework/e2e/etcdctl.go | 6 ++-- 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 tests/common/status_test.go diff --git a/tests/common/status_test.go b/tests/common/status_test.go new file mode 100644 index 000000000..deb058030 --- /dev/null +++ b/tests/common/status_test.go @@ -0,0 +1,58 @@ +// 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 common + +import ( + "context" + "testing" + "time" + + "go.etcd.io/etcd/tests/v3/framework/testutils" +) + +func TestStatus(t *testing.T) { + + testRunner.BeforeTest(t) + + for _, tc := range clusterTestCases { + t.Run(tc.name, func(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + clus := testRunner.NewCluster(ctx, t, tc.config) + defer clus.Close() + cc := clus.Client() + + testutils.ExecuteUntil(ctx, t, func() { + rs, err := cc.Status() + if err != nil { + t.Fatalf("could not get status, err: %s", err) + } + if len(rs) != tc.config.ClusterSize { + t.Fatalf("wrong number of status responses. expected:%d, got:%d ", tc.config.ClusterSize, len(rs)) + } + memberIds := make(map[uint64]struct{}) + for _, r := range rs { + if r == nil { + t.Fatalf("status response is nil") + } + memberIds[r.Header.MemberId] = struct{}{} + } + if len(rs) != len(memberIds) { + t.Fatalf("found duplicated members") + } + }) + }) + } +} diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 97de1f21f..f97cc27e2 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -292,13 +292,13 @@ func (ctl *EtcdctlV3) Status() ([]*clientv3.StatusResponse, error) { Endpoint string Status *clientv3.StatusResponse } - err := ctl.spawnJsonCmd(&epStatus, "endpoint", "status", "--endpoints", strings.Join(ctl.endpoints, ",")) + err := ctl.spawnJsonCmd(&epStatus, "endpoint", "status") if err != nil { return nil, err } resp := make([]*clientv3.StatusResponse, len(epStatus)) - for _, e := range epStatus { - resp = append(resp, e.Status) + for i, e := range epStatus { + resp[i] = e.Status } return resp, err }