@@ -30,6 +30,7 @@ import (
3030 "github.com/cockroachdb/cockroach/pkg/roachpb"
3131 "github.com/cockroachdb/cockroach/pkg/settings/cluster"
3232 "github.com/cockroachdb/cockroach/pkg/testutils/datapathutils"
33+ "github.com/cockroachdb/cockroach/pkg/testutils/dd"
3334 "github.com/cockroachdb/cockroach/pkg/util/admission/admissionpb"
3435 "github.com/cockroachdb/cockroach/pkg/util/hlc"
3536 "github.com/cockroachdb/cockroach/pkg/util/humanizeutil"
@@ -1122,42 +1123,32 @@ func TestRangeController(t *testing.T) {
11221123 datadriven .RunTest (t , path , func (t * testing.T , d * datadriven.TestData ) string {
11231124 switch d .Cmd {
11241125 case "init" :
1125- var (
1126- regularInitString , elasticInitString string
1127- regularLimitString , elasticLimitString string
1128- )
1129- d .MaybeScanArgs (t , "regular_init" , & regularInitString )
1130- d .MaybeScanArgs (t , "elastic_init" , & elasticInitString )
1131- d .MaybeScanArgs (t , "regular_limit" , & regularLimitString )
1132- d .MaybeScanArgs (t , "elastic_limit" , & elasticLimitString )
11331126 // If the test specifies different token limits or initial token counts
11341127 // (default is the limit), then we override the default limit and also
11351128 // store the initial token count. tokenCounters are created
11361129 // dynamically, so we update them on the fly as well.
1137- if regularLimitString != "" {
1138- regularLimit , err := humanizeutil .ParseBytes (regularLimitString )
1130+ if str , ok := dd . ScanArgOpt [ string ]( t , d , "regular_init" ); ok {
1131+ regularInit , err := humanizeutil .ParseBytes (str )
11391132 require .NoError (t , err )
1140- kvflowcontrol . RegularTokensPerStream . Override ( ctx , & state .settings . SV , regularLimit )
1133+ state .initialRegularTokens = kvflowcontrol . Tokens ( regularInit )
11411134 }
1142- if elasticLimitString != "" {
1143- elasticLimit , err := humanizeutil .ParseBytes (elasticLimitString )
1135+ if str , ok := dd . ScanArgOpt [ string ]( t , d , "elastic_init" ); ok {
1136+ elasticInit , err := humanizeutil .ParseBytes (str )
11441137 require .NoError (t , err )
1145- kvflowcontrol . ElasticTokensPerStream . Override ( ctx , & state .settings . SV , elasticLimit )
1138+ state .initialElasticTokens = kvflowcontrol . Tokens ( elasticInit )
11461139 }
1147- if regularInitString != "" {
1148- regularInit , err := humanizeutil .ParseBytes (regularInitString )
1140+ if str , ok := dd . ScanArgOpt [ string ]( t , d , "regular_limit" ); ok {
1141+ regularLimit , err := humanizeutil .ParseBytes (str )
11491142 require .NoError (t , err )
1150- state . initialRegularTokens = kvflowcontrol .Tokens ( regularInit )
1143+ kvflowcontrol .RegularTokensPerStream . Override ( ctx , & state . settings . SV , regularLimit )
11511144 }
1152- if elasticInitString != "" {
1153- elasticInit , err := humanizeutil .ParseBytes (elasticInitString )
1145+ if str , ok := dd . ScanArgOpt [ string ]( t , d , "elastic_limit" ); ok {
1146+ elasticLimit , err := humanizeutil .ParseBytes (str )
11541147 require .NoError (t , err )
1155- state . initialElasticTokens = kvflowcontrol .Tokens ( elasticInit )
1148+ kvflowcontrol .ElasticTokensPerStream . Override ( ctx , & state . settings . SV , elasticLimit )
11561149 }
1157- var maxInflightBytesString string
1158- d .MaybeScanArgs (t , "max_inflight_bytes" , & maxInflightBytesString )
1159- if maxInflightBytesString != "" {
1160- maxInflightBytes , err := humanizeutil .ParseBytes (maxInflightBytesString )
1150+ if str , ok := dd .ScanArgOpt [string ](t , d , "max_inflight_bytes" ); ok {
1151+ maxInflightBytes , err := humanizeutil .ParseBytes (str )
11611152 require .NoError (t , err )
11621153 state .maxInflightBytes = uint64 (maxInflightBytes )
11631154 }
@@ -1168,34 +1159,26 @@ func TestRangeController(t *testing.T) {
11681159 return state .rangeStateString () + state .tokenCountsString ()
11691160
11701161 case "tick" :
1171- var durationStr string
1172- d .ScanArgs (t , "duration" , & durationStr )
1173- duration , err := time .ParseDuration (durationStr )
1174- require .NoError (t , err )
1162+ duration := dd .ScanArg [time.Duration ](t , d , "duration" )
11751163 state .ts .Advance (duration )
11761164 // Sleep for a bit to allow any timers to fire.
11771165 time .Sleep (20 * time .Millisecond )
11781166 return fmt .Sprintf ("now=%v" , humanizeutil .Duration (
11791167 state .ts .Now ().Sub (timeutil .UnixEpoch )))
11801168
11811169 case "wait_for_eval" :
1182- var rangeID int
1183- var name , priString string
1184- d .ScanArgs (t , "range_id" , & rangeID )
1185- d .ScanArgs (t , "name" , & name )
1186- d .ScanArgs (t , "pri" , & priString )
1187- testRC := state .ranges [roachpb .RangeID (rangeID )]
1188- testRC .startWaitForEval (name , parsePriority (t , priString ))
1170+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1171+ name := dd .ScanArg [string ](t , d , "name" )
1172+ pri := parsePriority (t , dd .ScanArg [string ](t , d , "pri" ))
1173+
1174+ state .ranges [rangeID ].startWaitForEval (name , pri )
11891175 return state .evalStateString ()
11901176
11911177 case "check_state" :
11921178 return state .evalStateString ()
11931179
11941180 case "adjust_tokens" :
1195- eval := true
1196- if d .HasArg ("send" ) {
1197- eval = false
1198- }
1181+ eval := ! d .HasArg ("send" )
11991182 for _ , line := range strings .Split (d .Input , "\n " ) {
12001183 parts := strings .Fields (line )
12011184 parts [0 ] = strings .TrimSpace (parts [0 ])
@@ -1237,11 +1220,9 @@ func TestRangeController(t *testing.T) {
12371220 return state .tokenCountsString ()
12381221
12391222 case "cancel_context" :
1240- var rangeID int
1241- var name string
1242- d .ScanArgs (t , "range_id" , & rangeID )
1243- d .ScanArgs (t , "name" , & name )
1244- testRC := state .ranges [roachpb .RangeID (rangeID )]
1223+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1224+ name := dd .ScanArg [string ](t , d , "name" )
1225+ testRC := state .ranges [rangeID ]
12451226 func () {
12461227 testRC .mu .Lock ()
12471228 defer testRC .mu .Unlock ()
@@ -1278,27 +1259,25 @@ func TestRangeController(t *testing.T) {
12781259 return state .rangeStateString ()
12791260
12801261 case "set_leaseholder" :
1281- var rangeID , replicaID int
1282- d .ScanArgs (t , "range_id" , & rangeID )
1283- d .ScanArgs (t , "replica_id" , & replicaID )
1284- testRC := state .ranges [roachpb .RangeID (rangeID )]
1262+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1263+ replicaID := dd .ScanArg [roachpb.ReplicaID ](t , d , "replica_id" )
1264+ testRC := state .ranges [rangeID ]
12851265 func () {
12861266 testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
12871267 defer testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Unlock ()
1288- testRC .rc .SetLeaseholderRaftMuLocked (ctx , roachpb . ReplicaID ( replicaID ) )
1268+ testRC .rc .SetLeaseholderRaftMuLocked (ctx , replicaID )
12891269 }()
12901270 return state .rangeStateString ()
12911271
12921272 case "set_force_flush_index" :
1293- var rangeID int
1294- d .ScanArgs (t , "range_id" , & rangeID )
1295- var index int
1296- d .ScanArgs (t , "index" , & index )
1273+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1274+ index := dd .ScanArg [int ](t , d , "index" )
12971275 mode := MsgAppPull
12981276 if d .HasArg ("push-mode" ) {
12991277 mode = MsgAppPush
13001278 }
1301- testRC := state .ranges [roachpb .RangeID (rangeID )]
1279+
1280+ testRC := state .ranges [rangeID ]
13021281 func () {
13031282 testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
13041283 defer testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Unlock ()
@@ -1316,7 +1295,7 @@ func TestRangeController(t *testing.T) {
13161295 }()
13171296 // Sleep for a bit to allow any timers to fire.
13181297 time .Sleep (20 * time .Millisecond )
1319- return state .sendStreamString (roachpb . RangeID ( rangeID ) )
1298+ return state .sendStreamString (rangeID )
13201299
13211300 case "close_rcs" :
13221301 for _ , r := range state .ranges {
@@ -1474,44 +1453,40 @@ func TestRangeController(t *testing.T) {
14741453 case "internal_schedule_replica" :
14751454 // scheduleReplica is called internally by replicaSendStream. Calling
14761455 // this here is artificial.
1477- var rangeID , replicaID int
1478- d .ScanArgs (t , "range_id" , & rangeID )
1479- d .ScanArgs (t , "replica_id" , & replicaID )
1480- testRC := state .ranges [roachpb .RangeID (rangeID )]
1456+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1457+ replicaID := dd .ScanArg [roachpb.ReplicaID ](t , d , "replica_id" )
1458+ testRC := state .ranges [rangeID ]
14811459 func () {
14821460 testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
14831461 defer testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Unlock ()
1484- testRC .rc .scheduleReplica (roachpb . ReplicaID ( replicaID ) )
1462+ testRC .rc .scheduleReplica (replicaID )
14851463 }()
1486- return state .sendStreamString (roachpb . RangeID ( rangeID ) )
1464+ return state .sendStreamString (rangeID )
14871465
14881466 case "handle_scheduler_event" :
1489- var rangeID int
1490- d .ScanArgs (t , "range_id" , & rangeID )
1491- testRC := state .ranges [roachpb .RangeID (rangeID )]
1467+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
14921468 mode := MsgAppPull
14931469 if d .HasArg ("push-mode" ) {
14941470 mode = MsgAppPush
14951471 }
1472+ testRC := state .ranges [rangeID ]
14961473 func () {
14971474 testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
14981475 defer testRC .rc .opts .ReplicaMutexAsserter .RaftMu .Unlock ()
14991476 testRC .rc .HandleSchedulerEventRaftMuLocked (ctx , mode , testRC .logSnapshot ())
15001477 }()
15011478 // Sleep for a bit to allow any timers to fire.
15021479 time .Sleep (20 * time .Millisecond )
1503- return state .sendStreamString (roachpb . RangeID ( rangeID ) )
1480+ return state .sendStreamString (rangeID )
15041481
15051482 case "stream_state" :
1506- var rangeID int
1507- d .ScanArgs (t , "range_id" , & rangeID )
1483+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
15081484 // Sleep for a bit to allow any timers to fire.
15091485 time .Sleep (20 * time .Millisecond )
1510- return state .sendStreamString (roachpb . RangeID ( rangeID ) )
1486+ return state .sendStreamString (rangeID )
15111487
15121488 case "metrics" :
1513- typ := "eval"
1514- d .MaybeScanArgs (t , "type" , & typ )
1489+ typ := dd .ScanArgOr (t , d , "type" , "eval" )
15151490 var buf strings.Builder
15161491
15171492 switch typ {
@@ -1574,11 +1549,10 @@ func TestRangeController(t *testing.T) {
15741549 return buf .String ()
15751550
15761551 case "inspect" :
1577- var rangeID int
1578- d .ScanArgs (t , "range_id" , & rangeID )
1552+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
15791553 var handle kvflowinspectpb.Handle
15801554 func () {
1581- rc := state .ranges [roachpb . RangeID ( rangeID ) ].rc
1555+ rc := state .ranges [rangeID ].rc
15821556 rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
15831557 defer rc .opts .ReplicaMutexAsserter .RaftMu .Unlock ()
15841558 handle = rc .InspectRaftMuLocked (ctx )
@@ -1588,14 +1562,10 @@ func TestRangeController(t *testing.T) {
15881562 return fmt .Sprintf ("%v" , marshaled )
15891563
15901564 case "send_stream_stats" :
1591- var (
1592- rangeID int
1593- refresh = true
1594- )
1595- d .ScanArgs (t , "range_id" , & rangeID )
1596- d .MaybeScanArgs (t , "refresh" , & refresh )
1565+ rangeID := dd .ScanArg [roachpb.RangeID ](t , d , "range_id" )
1566+ refresh := dd .ScanArgOr (t , d , "refresh" , false )
15971567
1598- r := state .ranges [roachpb . RangeID ( rangeID ) ]
1568+ r := state .ranges [rangeID ]
15991569 if refresh {
16001570 func () {
16011571 r .rc .opts .ReplicaMutexAsserter .RaftMu .Lock ()
@@ -1622,14 +1592,10 @@ func TestRangeController(t *testing.T) {
16221592 return buf .String ()
16231593
16241594 case "set_flow_control_config" :
1625- if d .HasArg ("enabled" ) {
1626- var enabled bool
1627- d .ScanArgs (t , "enabled" , & enabled )
1595+ if enabled , ok := dd .ScanArgOpt [bool ](t , d , "enabled" ); ok {
16281596 kvflowcontrol .Enabled .Override (ctx , & state .settings .SV , enabled )
16291597 }
1630- if d .HasArg ("mode" ) {
1631- var mode string
1632- d .ScanArgs (t , "mode" , & mode )
1598+ if mode , ok := dd .ScanArgOpt [string ](t , d , "mode" ); ok {
16331599 var m kvflowcontrol.ModeT
16341600 switch mode {
16351601 case "apply_to_all" :
0 commit comments