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

This commit is contained in:
Yicheng Qin 2015-03-18 14:15:52 -07:00
parent 7e7bc76038
commit d920c5b801
2 changed files with 19 additions and 4 deletions

View File

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

View File

@ -1,6 +1,8 @@
package main package main
import ( import (
"fmt"
"math/rand"
"net" "net"
"net/http" "net/http"
"sync" "sync"
@ -21,8 +23,9 @@ type Stresser interface {
type stresser struct { type stresser struct {
Endpoint string Endpoint string
// TODO: not implemented
SuffixRange int KeySize int
KeySuffixRange int
N int N int
// TODO: not implemented // TODO: not implemented
@ -58,7 +61,8 @@ func (s *stresser) Stress() error {
for i := 0; i < s.N; i++ { for i := 0; i < s.N; i++ {
go func() { go func() {
for { 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 { if err == context.Canceled {
return return
} }
@ -86,3 +90,11 @@ func (s *stresser) Report() (success int, failure int) {
defer s.mu.Unlock() defer s.mu.Unlock()
return s.success, s.failure 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)
}