@@ -148,6 +148,7 @@ func verifyIterateReplicaKeySpans(
148148 desc * roachpb.RangeDescriptor ,
149149 eng storage.Engine ,
150150 replicatedOnly bool ,
151+ replicatedSpansFilter ReplicatedSpansFilter ,
151152) {
152153 readWriter := eng .NewSnapshot ()
153154 defer readWriter .Close ()
@@ -161,7 +162,7 @@ func verifyIterateReplicaKeySpans(
161162 "pretty" ,
162163 })
163164
164- require .NoError (t , IterateReplicaKeySpans (desc , readWriter , replicatedOnly ,
165+ require .NoError (t , IterateReplicaKeySpans (desc , readWriter , replicatedOnly , replicatedSpansFilter ,
165166 func (iter storage.EngineIterator , span roachpb.Span , keyType storage.IterKeyType ) error {
166167 var err error
167168 for ok := true ; ok && err == nil ; ok , err = iter .NextEngineKey () {
@@ -180,12 +181,18 @@ func verifyIterateReplicaKeySpans(
180181 var err error
181182 mvccKey , err = key .ToMVCCKey ()
182183 require .NoError (t , err )
184+ if replicatedSpansFilter == ReplicatedSpansExcludeUser && desc .KeySpan ().AsRawSpanWithNoLocals ().ContainsKey (key .Key ) {
185+ t .Fatalf ("unexpected user key when user key are expected to be skipped: %s" , mvccKey )
186+ }
183187 } else { // lock key
184188 ltk , err := key .ToLockTableKey ()
185189 require .NoError (t , err )
186190 mvccKey = storage.MVCCKey {
187191 Key : ltk .Key ,
188192 }
193+ if replicatedSpansFilter == ReplicatedSpansUserOnly {
194+ t .Fatalf ("unexpected lock table key when only table keys requested: %s" , ltk .Key )
195+ }
189196 }
190197 tbl .Append ([]string {
191198 span .String (),
@@ -271,21 +278,33 @@ func TestReplicaDataIterator(t *testing.T) {
271278 parName := fmt .Sprintf ("r%d" , tc .desc .RangeID )
272279 t .Run (parName , func (t * testing.T ) {
273280 testutils .RunTrueAndFalse (t , "replicatedOnly" , func (t * testing.T , replicatedOnly bool ) {
274- name := "all"
275- if replicatedOnly {
276- name = "replicatedOnly"
277- }
278- w := echotest .NewWalker (t , filepath .Join (path , parName , name ))
281+ replicatedSpans := []ReplicatedSpansFilter {ReplicatedSpansAll , ReplicatedSpansExcludeUser , ReplicatedSpansUserOnly }
282+ for i := range replicatedSpans {
283+ replicatedKeysName := "all"
284+ switch replicatedSpans [i ] {
285+ case ReplicatedSpansExcludeUser :
286+ replicatedKeysName = "exclude-user"
287+ case ReplicatedSpansUserOnly :
288+ replicatedKeysName = "user-only"
289+ }
290+ t .Run (fmt .Sprintf ("replicatedSpans=%v" , replicatedKeysName ), func (t * testing.T ) {
291+ name := "all"
292+ if replicatedOnly {
293+ name = "replicatedOnly"
294+ }
295+ w := echotest .NewWalker (t , filepath .Join (path , parName , name , replicatedKeysName ))
279296
280- w .Run (t , "output" , func (t * testing.T ) string {
281- var innerBuf strings.Builder
282- tbl := tablewriter .NewWriter (& innerBuf )
283- // Print contents of the Replica according to the iterator.
284- verifyIterateReplicaKeySpans (t , tbl , & tc .desc , eng , replicatedOnly )
297+ w .Run (t , "output" , func (t * testing.T ) string {
298+ var innerBuf strings.Builder
299+ tbl := tablewriter .NewWriter (& innerBuf )
300+ // Print contents of the Replica according to the iterator.
301+ verifyIterateReplicaKeySpans (t , tbl , & tc .desc , eng , replicatedOnly , replicatedSpans [ i ] )
285302
286- tbl .Render ()
287- return innerBuf .String ()
288- })(t )
303+ tbl .Render ()
304+ return innerBuf .String ()
305+ })(t )
306+ })
307+ }
289308 })
290309 })
291310 }
@@ -449,7 +468,7 @@ func TestReplicaDataIteratorGlobalRangeKey(t *testing.T) {
449468 }
450469
451470 var actualSpans []roachpb.Span
452- require .NoError (t , IterateReplicaKeySpans (& desc , snapshot , replicatedOnly ,
471+ require .NoError (t , IterateReplicaKeySpans (& desc , snapshot , replicatedOnly , ReplicatedSpansAll ,
453472 func (iter storage.EngineIterator , span roachpb.Span , keyType storage.IterKeyType ) error {
454473 // We should never see any point keys.
455474 require .Equal (t , storage .IterKeyTypeRangesOnly , keyType )
@@ -556,7 +575,7 @@ func benchReplicaEngineDataIterator(b *testing.B, numRanges, numKeysPerRange, va
556575
557576 for i := 0 ; i < b .N ; i ++ {
558577 for _ , desc := range descs {
559- err := IterateReplicaKeySpans (& desc , snapshot , false , /* replicatedOnly */
578+ err := IterateReplicaKeySpans (& desc , snapshot , false /* replicatedOnly */ , ReplicatedSpansAll ,
560579 func (iter storage.EngineIterator , _ roachpb.Span , _ storage.IterKeyType ) error {
561580 var err error
562581 for ok := true ; ok && err == nil ; ok , err = iter .NextEngineKey () {
0 commit comments