Browse Source

functional-tester/tester: pass "*rpcpb.Member" to stresser

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
Gyuho Lee 7 years ago
parent
commit
3510e9b94c
2 changed files with 12 additions and 13 deletions
  1. 2 2
      tools/functional-tester/tester/cluster.go
  2. 10 11
      tools/functional-tester/tester/stress.go

+ 2 - 2
tools/functional-tester/tester/cluster.go

@@ -360,8 +360,8 @@ func (clus *Cluster) updateStresserChecker() {
 	)
 	)
 
 
 	cs := &compositeStresser{}
 	cs := &compositeStresser{}
-	for idx := range clus.Members {
-		cs.stressers = append(cs.stressers, newStresser(clus, idx))
+	for _, m := range clus.Members {
+		cs.stressers = append(cs.stressers, newStresser(clus, m))
 	}
 	}
 	clus.stresser = cs
 	clus.stresser = cs
 
 

+ 10 - 11
tools/functional-tester/tester/stress.go

@@ -18,6 +18,8 @@ import (
 	"fmt"
 	"fmt"
 	"time"
 	"time"
 
 
+	"github.com/coreos/etcd/tools/functional-tester/rpcpb"
+
 	"go.uber.org/zap"
 	"go.uber.org/zap"
 )
 )
 
 
@@ -36,34 +38,31 @@ type Stresser interface {
 }
 }
 
 
 // newStresser creates stresser from a comma separated list of stresser types.
 // newStresser creates stresser from a comma separated list of stresser types.
-func newStresser(clus *Cluster, idx int) Stresser {
+func newStresser(clus *Cluster, m *rpcpb.Member) Stresser {
 	stressers := make([]Stresser, len(clus.Tester.StressTypes))
 	stressers := make([]Stresser, len(clus.Tester.StressTypes))
 	for i, stype := range clus.Tester.StressTypes {
 	for i, stype := range clus.Tester.StressTypes {
 		clus.lg.Info("creating stresser", zap.String("type", stype))
 		clus.lg.Info("creating stresser", zap.String("type", stype))
 
 
 		switch stype {
 		switch stype {
-		case "NO_STRESS":
-			stressers[i] = &nopStresser{start: time.Now(), qps: int(clus.rateLimiter.Limit())}
-
 		case "KV":
 		case "KV":
 			// TODO: Too intensive stressing clients can panic etcd member with
 			// TODO: Too intensive stressing clients can panic etcd member with
 			// 'out of memory' error. Put rate limits in server side.
 			// 'out of memory' error. Put rate limits in server side.
 			stressers[i] = &keyStresser{
 			stressers[i] = &keyStresser{
 				lg:                clus.lg,
 				lg:                clus.lg,
-				m:                 clus.Members[idx],
+				m:                 m,
 				keySize:           int(clus.Tester.StressKeySize),
 				keySize:           int(clus.Tester.StressKeySize),
 				keyLargeSize:      int(clus.Tester.StressKeySizeLarge),
 				keyLargeSize:      int(clus.Tester.StressKeySizeLarge),
 				keySuffixRange:    int(clus.Tester.StressKeySuffixRange),
 				keySuffixRange:    int(clus.Tester.StressKeySuffixRange),
 				keyTxnSuffixRange: int(clus.Tester.StressKeySuffixRangeTxn),
 				keyTxnSuffixRange: int(clus.Tester.StressKeySuffixRangeTxn),
 				keyTxnOps:         int(clus.Tester.StressKeyTxnOps),
 				keyTxnOps:         int(clus.Tester.StressKeyTxnOps),
-				N:                 100,
+				clientsN:          int(clus.Tester.StressClients),
 				rateLimiter:       clus.rateLimiter,
 				rateLimiter:       clus.rateLimiter,
 			}
 			}
 
 
 		case "LEASE":
 		case "LEASE":
 			stressers[i] = &leaseStresser{
 			stressers[i] = &leaseStresser{
 				lg:           clus.lg,
 				lg:           clus.lg,
-				m:            clus.Members[idx],
+				m:            m,
 				numLeases:    10, // TODO: configurable
 				numLeases:    10, // TODO: configurable
 				keysPerLease: 10, // TODO: configurable
 				keysPerLease: 10, // TODO: configurable
 				rateLimiter:  clus.rateLimiter,
 				rateLimiter:  clus.rateLimiter,
@@ -75,7 +74,7 @@ func newStresser(clus *Cluster, idx int) Stresser {
 				"election",
 				"election",
 				fmt.Sprintf("%v", time.Now().UnixNano()), // election name as current nano time
 				fmt.Sprintf("%v", time.Now().UnixNano()), // election name as current nano time
 				"--dial-timeout=10s",
 				"--dial-timeout=10s",
-				"--endpoints", clus.Members[idx].EtcdClientEndpoint,
+				"--endpoints", m.EtcdClientEndpoint,
 				"--total-client-connections=10",
 				"--total-client-connections=10",
 				"--rounds=0", // runs forever
 				"--rounds=0", // runs forever
 				"--req-rate", fmt.Sprintf("%v", reqRate),
 				"--req-rate", fmt.Sprintf("%v", reqRate),
@@ -95,7 +94,7 @@ func newStresser(clus *Cluster, idx int) Stresser {
 				"--total-keys=1",
 				"--total-keys=1",
 				"--total-prefixes=1",
 				"--total-prefixes=1",
 				"--watch-per-prefix=1",
 				"--watch-per-prefix=1",
-				"--endpoints", clus.Members[idx].EtcdClientEndpoint,
+				"--endpoints", m.EtcdClientEndpoint,
 				"--rounds=0", // runs forever
 				"--rounds=0", // runs forever
 				"--req-rate", fmt.Sprintf("%v", reqRate),
 				"--req-rate", fmt.Sprintf("%v", reqRate),
 			}
 			}
@@ -106,7 +105,7 @@ func newStresser(clus *Cluster, idx int) Stresser {
 			args := []string{
 			args := []string{
 				"lock-racer",
 				"lock-racer",
 				fmt.Sprintf("%v", time.Now().UnixNano()), // locker name as current nano time
 				fmt.Sprintf("%v", time.Now().UnixNano()), // locker name as current nano time
-				"--endpoints", clus.Members[idx].EtcdClientEndpoint,
+				"--endpoints", m.EtcdClientEndpoint,
 				"--total-client-connections=10",
 				"--total-client-connections=10",
 				"--rounds=0", // runs forever
 				"--rounds=0", // runs forever
 				"--req-rate", fmt.Sprintf("%v", reqRate),
 				"--req-rate", fmt.Sprintf("%v", reqRate),
@@ -117,7 +116,7 @@ func newStresser(clus *Cluster, idx int) Stresser {
 			args := []string{
 			args := []string{
 				"lease-renewer",
 				"lease-renewer",
 				"--ttl=30",
 				"--ttl=30",
-				"--endpoints", clus.Members[idx].EtcdClientEndpoint,
+				"--endpoints", m.EtcdClientEndpoint,
 			}
 			}
 			stressers[i] = newRunnerStresser(clus.Tester.RunnerExecPath, args, clus.rateLimiter, 0)
 			stressers[i] = newRunnerStresser(clus.Tester.RunnerExecPath, args, clus.rateLimiter, 0)
 		}
 		}