@@ -33,6 +33,7 @@ import (
3333 "github.com/cockroachdb/cockroach/pkg/storage/mvccencoding"
3434 "github.com/cockroachdb/cockroach/pkg/testutils/datapathutils"
3535 "github.com/cockroachdb/cockroach/pkg/testutils/skip"
36+ "github.com/cockroachdb/cockroach/pkg/testutils/storageutils"
3637 "github.com/cockroachdb/cockroach/pkg/util/hlc"
3738 "github.com/cockroachdb/cockroach/pkg/util/leaktest"
3839 "github.com/cockroachdb/cockroach/pkg/util/log"
@@ -42,9 +43,6 @@ import (
4243 "github.com/cockroachdb/cockroach/pkg/util/uuid"
4344 "github.com/cockroachdb/datadriven"
4445 "github.com/cockroachdb/errors"
45- "github.com/cockroachdb/pebble"
46- "github.com/cockroachdb/pebble/sstable"
47- "github.com/cockroachdb/pebble/sstable/block"
4846 "github.com/cockroachdb/pebble/vfs"
4947 "github.com/cockroachdb/redact"
5048 "github.com/stretchr/testify/require"
@@ -260,111 +258,6 @@ func TestMVCCHistories(t *testing.T) {
260258 return err
261259 }
262260
263- // reportSSTEntries outputs entries from a raw SSTable. It uses a raw
264- // SST iterator in order to accurately represent the raw SST data.
265- reportSSTEntries := func (buf * redact.StringBuilder , name string , sst []byte ) error {
266- r , err := sstable .NewMemReader (sst , sstable.ReaderOptions {
267- Comparer : & storage .EngineComparer ,
268- KeySchemas : sstable .MakeKeySchemas (storage .KeySchemas ... ),
269- })
270- if err != nil {
271- return err
272- }
273- defer func () { _ = r .Close () }()
274- buf .Printf (">> %s:\n " , name )
275-
276- // Dump point keys.
277- iter , err := r .NewIter (sstable .NoTransforms , nil , nil , sstable .AssertNoBlobHandles )
278- if err != nil {
279- return err
280- }
281- defer func () { _ = iter .Close () }()
282- for kv := iter .First (); kv != nil ; kv = iter .Next () {
283- if err := iter .Error (); err != nil {
284- return err
285- }
286- key , err := storage .DecodeMVCCKey (kv .K .UserKey )
287- if err != nil {
288- return err
289- }
290- v , _ , err := kv .Value (nil )
291- if err != nil {
292- return err
293- }
294- value , err := storage .DecodeMVCCValue (v )
295- if err != nil {
296- return err
297- }
298- buf .Printf ("%s: %s -> %s\n " , strings .ToLower (kv .Kind ().String ()), key , value )
299- }
300-
301- // Dump rangedels.
302- if rdIter , err := r .NewRawRangeDelIter (context .Background (), block .NoFragmentTransforms , block .NoReadEnv ); err != nil {
303- return err
304- } else if rdIter != nil {
305- defer rdIter .Close ()
306- s , err := rdIter .First ()
307- for ; s != nil ; s , err = rdIter .Next () {
308- start , err := storage .DecodeMVCCKey (s .Start )
309- if err != nil {
310- return err
311- }
312- end , err := storage .DecodeMVCCKey (s .End )
313- if err != nil {
314- return err
315- }
316- for _ , k := range s .Keys {
317- buf .Printf ("%s: %s\n " , strings .ToLower (k .Kind ().String ()),
318- roachpb.Span {Key : start .Key , EndKey : end .Key })
319- }
320- }
321- if err != nil {
322- return err
323- }
324- }
325-
326- // Dump range keys.
327- if rkIter , err := r .NewRawRangeKeyIter (context .Background (), block .NoFragmentTransforms , block .NoReadEnv ); err != nil {
328- return err
329- } else if rkIter != nil {
330- defer rkIter .Close ()
331- s , err := rkIter .First ()
332- for ; s != nil ; s , err = rkIter .Next () {
333- start , err := storage .DecodeMVCCKey (s .Start )
334- if err != nil {
335- return err
336- }
337- end , err := storage .DecodeMVCCKey (s .End )
338- if err != nil {
339- return err
340- }
341- for _ , k := range s .Keys {
342- buf .Printf ("%s: %s" , strings .ToLower (k .Kind ().String ()),
343- roachpb.Span {Key : start .Key , EndKey : end .Key })
344- if len (k .Suffix ) > 0 {
345- ts , err := mvccencoding .DecodeMVCCTimestampSuffix (k .Suffix )
346- if err != nil {
347- return err
348- }
349- buf .Printf ("/%s" , ts )
350- }
351- if k .Kind () == pebble .InternalKeyKindRangeKeySet {
352- value , err := storage .DecodeMVCCValue (k .Value )
353- if err != nil {
354- return err
355- }
356- buf .Printf (" -> %s" , value )
357- }
358- buf .Printf ("\n " )
359- }
360- }
361- if err != nil {
362- return err
363- }
364- }
365- return nil
366- }
367-
368261 // reportLockTable outputs the contents of the lock table.
369262 reportLockTable := func (e * evalCtx , buf * redact.StringBuilder ) error {
370263 // Replicated locks.
@@ -542,7 +435,7 @@ func TestMVCCHistories(t *testing.T) {
542435 }
543436 }
544437 for i , sst := range e .ssts {
545- err = reportSSTEntries (& buf , fmt .Sprintf ("sst-%d" , i ), sst )
438+ err = storageutils . ReportSSTEntries (& buf , fmt .Sprintf ("sst-%d" , i ), sst )
546439 if err != nil {
547440 if foundErr == nil {
548441 // Handle the error below.
0 commit comments