Selaa lähdekoodia

e2e: test 'endpoint hashkv' command

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
Gyu-Ho Lee 8 vuotta sitten
vanhempi
commit
43ccc549fb
1 muutettua tiedostoa jossa 38 lisäystä ja 0 poistoa
  1. 38 0
      e2e/ctl_v3_endpoint_test.go

+ 38 - 0
e2e/ctl_v3_endpoint_test.go

@@ -15,12 +15,18 @@
 package e2e
 
 import (
+	"context"
+	"fmt"
 	"net/url"
 	"testing"
+	"time"
+
+	"github.com/coreos/etcd/clientv3"
 )
 
 func TestCtlV3EndpointHealth(t *testing.T) { testCtl(t, endpointHealthTest, withQuorum()) }
 func TestCtlV3EndpointStatus(t *testing.T) { testCtl(t, endpointStatusTest, withQuorum()) }
+func TestCtlV3EndpointHashKV(t *testing.T) { testCtl(t, endpointHashKVTest, withQuorum()) }
 
 func endpointHealthTest(cx ctlCtx) {
 	if err := ctlV3EndpointHealth(cx); err != nil {
@@ -52,3 +58,35 @@ func ctlV3EndpointStatus(cx ctlCtx) error {
 	}
 	return spawnWithExpects(cmdArgs, eps...)
 }
+
+func endpointHashKVTest(cx ctlCtx) {
+	if err := ctlV3EndpointHashKV(cx); err != nil {
+		cx.t.Fatalf("endpointHashKVTest ctlV3EndpointHashKV error (%v)", err)
+	}
+}
+
+func ctlV3EndpointHashKV(cx ctlCtx) error {
+	eps := cx.epc.EndpointsV3()
+
+	// get latest hash to compare
+	cli, err := clientv3.New(clientv3.Config{
+		Endpoints:   eps,
+		DialTimeout: 3 * time.Second,
+	})
+	if err != nil {
+		cx.t.Fatal(err)
+	}
+	defer cli.Close()
+	hresp, err := cli.HashKV(context.TODO(), eps[0], 0)
+	if err != nil {
+		cx.t.Fatal(err)
+	}
+
+	cmdArgs := append(cx.PrefixArgs(), "endpoint", "hashkv")
+	var ss []string
+	for _, ep := range cx.epc.EndpointsV3() {
+		u, _ := url.Parse(ep)
+		ss = append(ss, fmt.Sprintf("%s, %d", u.Host, hresp.Hash))
+	}
+	return spawnWithExpects(cmdArgs, ss...)
+}