Skip to content

Commit de909f7

Browse files
committed
loqrecovery: squash datadriven command parsing
Epic: none Release note: none
1 parent 5895c8b commit de909f7

File tree

2 files changed

+12
-55
lines changed

2 files changed

+12
-55
lines changed

pkg/kv/kvserver/loqrecovery/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ go_test(
105105
"//pkg/storage/fs",
106106
"//pkg/testutils",
107107
"//pkg/testutils/datapathutils",
108+
"//pkg/testutils/dd",
108109
"//pkg/testutils/listenerutil",
109110
"//pkg/testutils/serverutils",
110111
"//pkg/testutils/skip",

pkg/kv/kvserver/loqrecovery/recovery_env_test.go

Lines changed: 11 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
"context"
1010
"encoding/binary"
1111
"fmt"
12+
"maps"
1213
"slices"
13-
"strconv"
1414
"strings"
1515
"testing"
1616
"time"
@@ -28,6 +28,7 @@ import (
2828
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
2929
"github.com/cockroachdb/cockroach/pkg/storage"
3030
"github.com/cockroachdb/cockroach/pkg/storage/enginepb"
31+
"github.com/cockroachdb/cockroach/pkg/testutils/dd"
3132
"github.com/cockroachdb/cockroach/pkg/util/hlc"
3233
"github.com/cockroachdb/cockroach/pkg/util/keysutil"
3334
"github.com/cockroachdb/cockroach/pkg/util/protoutil"
@@ -572,10 +573,7 @@ func (e *quorumRecoveryEnv) handleMakePlan(t *testing.T, d datadriven.TestData)
572573
return "", err
573574
}
574575
err = report.Error()
575-
var force bool
576-
if d.HasArg("force") {
577-
d.ScanArgs(t, "force", &force)
578-
}
576+
force := dd.ScanArgOr(t, &d, "force", false)
579577
if err != nil && !force {
580578
return "", err
581579
}
@@ -712,27 +710,9 @@ func (e *quorumRecoveryEnv) parseStoresArg(
712710
t *testing.T, d datadriven.TestData, defaultToAll bool,
713711
) []roachpb.StoreID {
714712
// Prepare replica info
715-
var stores []roachpb.StoreID
716-
if d.HasArg("stores") {
717-
for _, arg := range d.CmdArgs {
718-
if arg.Key == "stores" {
719-
for _, id := range arg.Vals {
720-
id, err := strconv.ParseInt(id, 10, 32)
721-
if err != nil {
722-
t.Fatalf("failed to parse store id: %v", err)
723-
}
724-
stores = append(stores, roachpb.StoreID(id))
725-
}
726-
}
727-
}
728-
} else {
729-
if defaultToAll {
730-
for id := range e.stores {
731-
stores = append(stores, id)
732-
}
733-
} else {
734-
stores = []roachpb.StoreID{}
735-
}
713+
stores, ok := dd.ScanArgOpt[[]roachpb.StoreID](t, &d, "stores")
714+
if !ok && defaultToAll {
715+
stores = slices.AppendSeq(stores, maps.Keys(e.stores))
736716
}
737717
slices.Sort(stores)
738718
return stores
@@ -741,23 +721,8 @@ func (e *quorumRecoveryEnv) parseStoresArg(
741721
// parseNodesArg parses NodeIDs from nodes arg if available.
742722
// Results are returned in sorted order to allow consistent output.
743723
func (e *quorumRecoveryEnv) parseNodesArg(t *testing.T, d datadriven.TestData) []roachpb.NodeID {
744-
var nodes []roachpb.NodeID
745-
if d.HasArg("nodes") {
746-
for _, arg := range d.CmdArgs {
747-
if arg.Key == "nodes" {
748-
for _, id := range arg.Vals {
749-
id, err := strconv.ParseInt(id, 10, 32)
750-
if err != nil {
751-
t.Fatalf("failed to parse node id: %v", err)
752-
}
753-
nodes = append(nodes, roachpb.NodeID(id))
754-
}
755-
}
756-
}
757-
}
758-
if len(nodes) > 0 {
759-
slices.Sort(nodes)
760-
}
724+
nodes, _ := dd.ScanArgOpt[[]roachpb.NodeID](t, &d, "nodes")
725+
slices.Sort(nodes)
761726
return nodes
762727
}
763728

@@ -804,10 +769,7 @@ func (e *quorumRecoveryEnv) handleDumpStore(t *testing.T, d datadriven.TestData)
804769
func (e *quorumRecoveryEnv) handleApplyPlan(t *testing.T, d datadriven.TestData) (string, error) {
805770
ctx := context.Background()
806771
stores := e.parseStoresArg(t, d, true /* defaultToAll */)
807-
var restart bool
808-
if d.HasArg("restart") {
809-
d.ScanArgs(t, "restart", &restart)
810-
}
772+
restart := dd.ScanArgOr(t, &d, "restart", false)
811773

812774
if !restart {
813775
nodes := e.groupStoresByNodeStore(t, stores)
@@ -863,14 +825,8 @@ func (e *quorumRecoveryEnv) dumpRecoveryEvents(
863825
) (string, error) {
864826
ctx := context.Background()
865827

866-
removeEvents := false
867-
if d.HasArg("remove") {
868-
d.ScanArgs(t, "remove", &removeEvents)
869-
}
870-
dumpStatus := false
871-
if d.HasArg("status") {
872-
d.ScanArgs(t, "status", &dumpStatus)
873-
}
828+
removeEvents := dd.ScanArgOr(t, &d, "remove", false)
829+
dumpStatus := dd.ScanArgOr(t, &d, "status", false)
874830

875831
var events []string
876832
logEvents := func(ctx context.Context, record loqrecoverypb.ReplicaRecoveryRecord) (bool, error) {

0 commit comments

Comments
 (0)