diff --git a/rawnode_test.go b/rawnode_test.go index 24b92a36f..cd47bb22a 100644 --- a/rawnode_test.go +++ b/rawnode_test.go @@ -988,12 +988,9 @@ func BenchmarkRawNode(b *testing.B) { } func benchmarkRawNodeImpl(b *testing.B, peers ...uint64) { - - const debug = false - s := newTestMemoryStorage(withPeers(peers...)) cfg := newTestConfig(1, 10, 1, s) - if !debug { + if !*benchDebug { cfg.Logger = discardLogger // avoid distorting benchmark output } rn, err := NewRawNode(cfg) @@ -1009,7 +1006,7 @@ func benchmarkRawNodeImpl(b *testing.B, peers ...uint64) { for rn.HasReady() { numReady++ rd := rn.Ready() - if debug { + if *benchDebug { b.Log(DescribeReady(rd, nil)) } if n := len(rd.CommittedEntries); n > 0 { @@ -1019,7 +1016,7 @@ func benchmarkRawNodeImpl(b *testing.B, peers ...uint64) { for _, m := range rd.Messages { if m.GetType() == pb.MsgVote { resp := &pb.Message{To: m.From, From: m.To, Term: m.Term, Type: pb.MsgVoteResp.Enum()} - if debug { + if *benchDebug { b.Log(DescribeMessage(resp, nil)) } rn.Step(resp) @@ -1030,7 +1027,7 @@ func benchmarkRawNodeImpl(b *testing.B, peers ...uint64) { idx = m.GetEntries()[n-1].GetIndex() } resp := &pb.Message{To: m.From, From: m.To, Type: pb.MsgAppResp.Enum(), Term: m.Term, Index: new(idx)} - if debug { + if *benchDebug { b.Log(DescribeMessage(resp, nil)) } rn.Step(resp) @@ -1044,11 +1041,6 @@ func benchmarkRawNodeImpl(b *testing.B, peers ...uint64) { rn.Campaign() stabilize() - if debug { - // nolint:staticcheck - b.N = 1 - } - var applied uint64 for i := 0; i < b.N; i++ { if err := rn.Propose([]byte("foo")); err != nil { diff --git a/util_test.go b/util_test.go index ce0971e88..878c079d0 100644 --- a/util_test.go +++ b/util_test.go @@ -15,6 +15,7 @@ package raft import ( + "flag" "fmt" "math" "strings" @@ -27,6 +28,8 @@ import ( pb "go.etcd.io/raft/v3/raftpb" ) +var benchDebug = flag.Bool("bench.debug", false, "Debug logging in benchmarks.") + var testFormatter EntryFormatter = func(data []byte) string { return strings.ToUpper(string(data)) }