Skip to content

Commit

Permalink
rafttest: add log-level argument for stabilize
Browse files Browse the repository at this point in the history
Signed-off-by: Erik Grinaker <[email protected]>
  • Loading branch information
erikgrinaker committed Jun 23, 2023
1 parent 30e2fa4 commit 26ce926
Show file tree
Hide file tree
Showing 15 changed files with 107 additions and 61 deletions.
15 changes: 6 additions & 9 deletions rafttest/interaction_env_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,20 +182,17 @@ func (env *InteractionEnv) Handle(t *testing.T, d datadriven.TestData) string {
default:
err = fmt.Errorf("unknown command")
}
if err != nil {
env.Output.WriteString(err.Error())
}
// NB: the highest log level suppresses all output, including that of the
// handlers. This comes in useful during setup which can be chatty.
// However, errors are always logged.
if env.Output.Len() == 0 {
return "ok"
}
if env.Output.Lvl == len(lvlNames)-1 {
if err != nil {
if err != nil {
if env.Output.Quiet() {
return err.Error()
}
return "ok (quiet)"
env.Output.WriteString(err.Error())
}
if env.Output.Len() == 0 {
return "ok"
}
return env.Output.String()
}
Expand Down
17 changes: 16 additions & 1 deletion rafttest/interaction_env_handler_stabilize.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,22 @@ import (
)

func (env *InteractionEnv) handleStabilize(t *testing.T, d datadriven.TestData) error {
idxs := nodeIdxs(t, d)
idxs := nodeIdxs(t, d) // skips key=value args
for _, arg := range d.CmdArgs {
for i := range arg.Vals {
switch arg.Key {
case "log-level":
defer func(old int) {
env.Output.Lvl = old
}(env.Output.Lvl)
var level string
arg.Scan(t, i, &level)
if err := env.LogLevel(level); err != nil {
return err
}
}
}
}
return env.Stabilize(idxs...)
}

Expand Down
34 changes: 34 additions & 0 deletions rafttest/interaction_env_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,37 @@ func (l *RedirectLogger) Panicf(format string, v ...interface{}) {
// and testing the cases when panic is expected.
panic(fmt.Sprintf(format, v...))
}

// Override StringBuilder write methods to silence them under NONE.

func (l *RedirectLogger) Quiet() bool {
return l.Lvl == len(lvlNames)-1
}

func (l *RedirectLogger) Write(p []byte) (int, error) {
if l.Quiet() {
return 0, nil
}
return l.Builder.Write(p)
}

func (l *RedirectLogger) WriteByte(c byte) error {
if l.Quiet() {
return nil
}
return l.Builder.WriteByte(c)
}

func (l *RedirectLogger) WriteRune(r rune) (int, error) {
if l.Quiet() {
return 0, nil
}
return l.Builder.WriteRune(r)
}

func (l *RedirectLogger) WriteString(s string) (int, error) {
if l.Quiet() {
return 0, nil
}
return l.Builder.WriteString(s)
}
2 changes: 1 addition & 1 deletion testdata/async_storage_writes_append_aba_race.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level info
----
Expand Down
6 changes: 3 additions & 3 deletions testdata/campaign_learner_must_vote.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ ok

stabilize
----
ok (quiet)
ok

# Propose a conf change on n1 that promotes n3 to voter.
propose-conf-change 1
Expand All @@ -36,13 +36,13 @@ ok
# Commit and fully apply said conf change. n1 and n2 now consider n3 a voter.
stabilize 1 2
----
ok (quiet)
ok

# Drop all inflight messages to 3. We don't want it to be caught up when it is
# asked to vote.
deliver-msgs drop=(3)
----
ok (quiet)
ok

# We now pretend that n1 is dead, and n2 is trying to become leader.

Expand Down
2 changes: 1 addition & 1 deletion testdata/checkquorum.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level debug
----
Expand Down
2 changes: 1 addition & 1 deletion testdata/confchange_v1_remove_leader.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level debug
----
Expand Down
2 changes: 1 addition & 1 deletion testdata/confchange_v2_replace_leader.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level info
----
Expand Down
2 changes: 1 addition & 1 deletion testdata/heartbeat_resp_recovers_from_probing.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level debug
----
Expand Down
2 changes: 1 addition & 1 deletion testdata/prevote.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level debug
----
Expand Down
2 changes: 1 addition & 1 deletion testdata/prevote_checkquorum.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ok

stabilize
----
ok (quiet)
ok

log-level debug
----
Expand Down
58 changes: 29 additions & 29 deletions testdata/probe_and_replicate.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ ok

stabilize
----
ok (quiet)
ok

propose 1 prop_1_12
----
Expand All @@ -56,7 +56,7 @@ ok

stabilize
----
ok (quiet)
ok

## Create term 2 entries.
campaign 2
Expand All @@ -65,15 +65,15 @@ ok

stabilize 2
----
ok (quiet)
ok

stabilize 6
----
ok (quiet)
ok

stabilize 2 5 7
----
ok (quiet)
ok

propose 2 prop_2_15
----
Expand All @@ -85,11 +85,11 @@ ok

stabilize 2 7
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok

## Create term 3 entries.
campaign 7
Expand All @@ -98,15 +98,15 @@ ok

stabilize 7
----
ok (quiet)
ok

stabilize 1 2 3 4 5 6
----
ok (quiet)
ok

stabilize 7
----
ok (quiet)
ok

propose 7 prop_3_18
----
Expand All @@ -126,11 +126,11 @@ ok

stabilize 7
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok

## Create term 4 entries.
campaign 6
Expand All @@ -139,15 +139,15 @@ ok

stabilize 1 2 3 4 5 6
----
ok (quiet)
ok

propose 6 prop_4_15
----
ok

stabilize 1 2 4 5 6
----
ok (quiet)
ok

propose 6 prop_4_16
----
Expand All @@ -159,11 +159,11 @@ ok

stabilize 6
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok

## Create term 5 entries.
campaign 5
Expand All @@ -172,19 +172,19 @@ ok

stabilize 1 2 4 5
----
ok (quiet)
ok

propose 5 prop_5_17
----
ok

stabilize 1 2 4 5
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok

## Create term 6 entries.
campaign 4
Expand All @@ -193,35 +193,35 @@ ok

stabilize 1 2 4 5
----
ok (quiet)
ok

propose 4 prop_6_19
----
ok

stabilize 1 2 4
----
ok (quiet)
ok

propose 4 prop_6_20
----
ok

stabilize 1 4
----
ok (quiet)
ok

propose 4 prop_6_21
----
ok

stabilize 4
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok

## Create term 7 entries.
campaign 5
Expand All @@ -230,15 +230,15 @@ ok

stabilize 5
----
ok (quiet)
ok

stabilize 1 3 6 7
----
ok (quiet)
ok

stabilize 5
----
ok (quiet)
ok

propose 5 prop_7_20
----
Expand All @@ -254,11 +254,11 @@ ok

stabilize 5
----
ok (quiet)
ok

deliver-msgs drop=(1,2,3,4,5,6,7)
----
ok (quiet)
ok


# Show the Raft log from each node.
Expand Down
Loading

0 comments on commit 26ce926

Please sign in to comment.