@@ -296,61 +296,65 @@ func TestVersionSetCheckpoint(t *testing.T) {
296296}
297297
298298func TestVersionSetSeqNums (t * testing.T ) {
299- mem := vfs .NewMem ()
300- require .NoError (t , mem .MkdirAll ("ext" , 0755 ))
299+ var buf bytes.Buffer
300+ fs := vfs .WithLogging (vfs .NewMem (), func (format string , args ... interface {}) {
301+ fmt .Fprintf (& buf , format , args ... )
302+ fmt .Fprintln (& buf )
303+ })
304+ defer func () {
305+ if t .Failed () {
306+ t .Logf ("fs log:\n %s" , buf .String ())
307+ }
308+ }()
309+ require .NoError (t , fs .MkdirAll ("ext" , 0755 ))
301310
302311 opts := & Options {
303- FS : mem ,
312+ FS : fs ,
304313 MaxManifestFileSize : 1 ,
305314 Logger : testutils.Logger {T : t },
306315 }
307316 d , err := Open ("" , opts )
308317 require .NoError (t , err )
309318
310319 // Snapshot has no files, so first edit will cause manifest rotation.
311- writeAndIngest (t , mem , d , base .MakeInternalKey ([]byte ("a" ), 0 , InternalKeyKindSet ), []byte ("b" ), "a" )
320+ writeAndIngest (t , fs , d , base .MakeInternalKey ([]byte ("a" ), 0 , InternalKeyKindSet ), []byte ("b" ), "a" )
312321 // Snapshot has no files, and manifest has an edit from the previous ingest,
313322 // so this second ingest will cause manifest rotation.
314- writeAndIngest (t , mem , d , base .MakeInternalKey ([]byte ("c" ), 0 , InternalKeyKindSet ), []byte ("d" ), "c" )
323+ writeAndIngest (t , fs , d , base .MakeInternalKey ([]byte ("c" ), 0 , InternalKeyKindSet ), []byte ("d" ), "c" )
315324 require .NoError (t , d .Close ())
316325 d , err = Open ("" , opts )
317326 require .NoError (t , err )
318327 defer d .Close ()
319328 d .TestOnlyWaitForCleaning ()
320329
321- // Check that the manifest has the correct LastSeqNum, equalling the highest
322- // observed SeqNum.
323- filenames , err := mem . List ("" )
330+ // Check that the current manifest has the correct LastSeqNum, equalling the
331+ // highest observed SeqNum.
332+ desc , err := Peek ("" , fs )
324333 require .NoError (t , err )
325- var manifestFile vfs.File
326- for _ , filename := range filenames {
327- fileType , _ , ok := base .ParseFilename (mem , filename )
328- if ok && fileType == base .FileTypeManifest {
329- manifestFile , err = mem .Open (filename )
330- require .NoError (t , err )
331- }
332- }
333- require .NotNil (t , manifestFile )
334- defer manifestFile .Close ()
335- rr := record .NewReader (manifestFile , 0 /* logNum */ )
336- var lastSeqNum base.SeqNum
337- for {
338- r , err := rr .Next ()
339- if err == io .EOF {
340- break
341- }
342- require .NoError (t , err )
343- var ve manifest.VersionEdit
344- err = ve .Decode (r )
334+ require .True (t , desc .Exists )
335+ func () {
336+ manifestFile , err := fs .Open (desc .ManifestFilename )
345337 require .NoError (t , err )
346- if ve .LastSeqNum != 0 {
347- lastSeqNum = ve .LastSeqNum
338+ defer manifestFile .Close ()
339+ rr := record .NewReader (manifestFile , 0 /* logNum */ )
340+ var lastSeqNum base.SeqNum
341+ for {
342+ r , err := rr .Next ()
343+ if err == io .EOF {
344+ break
345+ }
346+ require .NoError (t , err )
347+ var ve manifest.VersionEdit
348+ require .NoError (t , ve .Decode (r ))
349+ if ve .LastSeqNum != 0 {
350+ lastSeqNum = ve .LastSeqNum
351+ }
348352 }
349- }
350- // 2 ingestions happened, so LastSeqNum should equal base.SeqNumStart + 1.
351- require . Equal ( t , base . SeqNum ( 11 ), lastSeqNum )
352- // logSeqNum is always one greater than the last assigned sequence number.
353- require . Equal ( t , d . mu . versions . logSeqNum . Load (), lastSeqNum + 1 )
353+ // 2 ingestions happened, so LastSeqNum should equal base.SeqNumStart + 1.
354+ require . Equal ( t , base .SeqNum ( 11 ), lastSeqNum )
355+ // logSeqNum is always one greater than the last assigned sequence number.
356+ require . Equal ( t , d . mu . versions . logSeqNum . Load (), lastSeqNum + 1 )
357+ }( )
354358}
355359
356360// TestLargeKeys is a datadriven test that exercises large keys with shared
0 commit comments