@@ -392,7 +392,8 @@ next:
392
392
panic ("fail" )
393
393
394
394
completeWriteFile:
395
- // meet the file size limit exactly (2048 bytes)
395
+ // meet the file size limit exactly (2048 bytes) when writeFileNum
396
+ // equals readFileNum
396
397
totalBytes := 2 * (msgSize + 4 )
397
398
bytesRemaining := 2048 - (totalBytes + 8 )
398
399
oneByteMsgSizeIncrease := 5
@@ -401,6 +402,7 @@ completeWriteFile:
401
402
402
403
for i := 0 ; i < 10 ; i ++ {
403
404
// test that write position and messages reset when a new file is created
405
+ // test the writeFileNum correctly increments
404
406
d := readMetaDataFile (dq .(* diskQueue ).metaDataFileName (), 0 , true )
405
407
if d .depth == 3 &&
406
408
d .readFileNum == 0 &&
@@ -425,8 +427,8 @@ completeReadFile:
425
427
426
428
for i := 0 ; i < 10 ; i ++ {
427
429
// test that read position and messages reset when a file is completely read
430
+ // test the readFileNum correctly increments
428
431
d := readMetaDataFile (dq .(* diskQueue ).metaDataFileName (), 0 , true )
429
- t .Log (d .depth , d .readFileNum , d .writeFileNum , d .readPos , d .writePos , d .readMessages , d .writeMessages )
430
432
if d .depth == 1 &&
431
433
d .readFileNum == 1 &&
432
434
d .writeFileNum == 1 &&
@@ -435,6 +437,64 @@ completeReadFile:
435
437
d .readMessages == 0 &&
436
438
d .writeMessages == 1 {
437
439
// success
440
+ goto completeWriteFileAgain
441
+ }
442
+ time .Sleep (100 * time .Millisecond )
443
+ }
444
+ panic ("fail" )
445
+
446
+ completeWriteFileAgain:
447
+ // make writeFileNum ahead of readFileNum
448
+ dq .Put (msg )
449
+ dq .Put (msg )
450
+
451
+ // meet the file size limit exactly (2048 bytes) when writeFileNum
452
+ // is ahead of readFileNum
453
+ dq .Put (msg )
454
+ dq .Put (msg )
455
+ dq .Put (make ([]byte , bytesRemaining - 4 - oneByteMsgSizeIncrease ))
456
+ dq .Put (make ([]byte , 1 ))
457
+
458
+ for i := 0 ; i < 10 ; i ++ {
459
+ // test that write position and messages reset when a file is completely read
460
+ // test the writeFileNum correctly increments
461
+ d := readMetaDataFile (dq .(* diskQueue ).metaDataFileName (), 0 , true )
462
+ if d .depth == 7 &&
463
+ d .readFileNum == 1 &&
464
+ d .writeFileNum == 3 &&
465
+ d .readPos == 0 &&
466
+ d .writePos == 0 &&
467
+ d .readMessages == 0 &&
468
+ d .writeMessages == 0 {
469
+ // success
470
+ goto completeReadFileAgain
471
+ }
472
+ time .Sleep (100 * time .Millisecond )
473
+ }
474
+ panic ("fail" )
475
+
476
+ completeReadFileAgain:
477
+ <- dq .ReadChan ()
478
+ <- dq .ReadChan ()
479
+ <- dq .ReadChan ()
480
+
481
+ <- dq .ReadChan ()
482
+ <- dq .ReadChan ()
483
+ <- dq .ReadChan ()
484
+ <- dq .ReadChan ()
485
+
486
+ for i := 0 ; i < 10 ; i ++ {
487
+ // test that read position and messages reset when a file is completely read
488
+ // test the readFileNum correctly increments
489
+ d := readMetaDataFile (dq .(* diskQueue ).metaDataFileName (), 0 , true )
490
+ if d .depth == 0 &&
491
+ d .readFileNum == 3 &&
492
+ d .writeFileNum == 3 &&
493
+ d .readPos == 0 &&
494
+ d .writePos == 0 &&
495
+ d .readMessages == 0 &&
496
+ d .writeMessages == 0 {
497
+ // success
438
498
goto done
439
499
}
440
500
time .Sleep (100 * time .Millisecond )
0 commit comments