Bläddra i källkod

tools/etcd-tester: stress cluster using 50MB snapshot

Yicheng Qin 10 år sedan
förälder
incheckning
d920c5b801

+ 4 - 1
tools/functional-tester/etcd-tester/cluster.go

@@ -108,7 +108,10 @@ func (c *cluster) Bootstrap() error {
 	for i, u := range clientURLs {
 		s := &stresser{
 			Endpoint: u,
-			N:        200,
+			// 500000 100B key (50MB)
+			KeySize:        100,
+			KeySuffixRange: 500000,
+			N:              200,
 		}
 		go s.Stress()
 		stressers[i] = s

+ 15 - 3
tools/functional-tester/etcd-tester/stresser.go

@@ -1,6 +1,8 @@
 package main
 
 import (
+	"fmt"
+	"math/rand"
 	"net"
 	"net/http"
 	"sync"
@@ -21,8 +23,9 @@ type Stresser interface {
 
 type stresser struct {
 	Endpoint string
-	// TODO: not implemented
-	SuffixRange int
+
+	KeySize        int
+	KeySuffixRange int
 
 	N int
 	// TODO: not implemented
@@ -58,7 +61,8 @@ func (s *stresser) Stress() error {
 	for i := 0; i < s.N; i++ {
 		go func() {
 			for {
-				_, err := kv.Set(ctx, "foo", "bar", nil)
+				key := fmt.Sprintf("foo%d", rand.Intn(s.KeySuffixRange))
+				_, err := kv.Set(ctx, key, randStr(s.KeySize), nil)
 				if err == context.Canceled {
 					return
 				}
@@ -86,3 +90,11 @@ func (s *stresser) Report() (success int, failure int) {
 	defer s.mu.Unlock()
 	return s.success, s.failure
 }
+
+func randStr(size int) string {
+	data := make([]byte, size)
+	for i := 0; i < size; i++ {
+		data[i] = byte(int('a') + rand.Intn(26))
+	}
+	return string(data)
+}