MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / TestReadWriteBlocks

Function TestReadWriteBlocks

cmd/cql-fuse/block_test.go:460–568  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

458}
459
460func TestReadWriteBlocks(t *testing.T) {
461
462 id := uint64(10)
463 rng, _ := NewPseudoRand()
464 length := BlockSize*3 + 500
465 part1 := RandBytes(rng, length)
466
467 if err := write(db, id, 0, 0, part1); err != nil {
468 log.Fatal(err)
469 }
470
471 readData, err := read(db, id, 0, uint64(length))
472 if err != nil {
473 log.Fatal(err)
474 }
475 if !bytes.Equal(part1, readData) {
476 t.Errorf("bytes differ. lengths: %d, expected %d", len(readData), len(part1))
477 }
478
479 verboseData, err := getAllBlocks(db, id)
480 if err != nil {
481 log.Fatal(err)
482 }
483 if !bytes.Equal(verboseData, part1) {
484 t.Errorf("bytes differ. lengths: %d, expected %d", len(verboseData), len(part1))
485 }
486
487 // Write with hole in the middle.
488 part2 := make([]byte, BlockSize*2+250, BlockSize*2+250)
489 fullData := append(part1, part2...)
490 part3 := RandBytes(rng, BlockSize+123)
491 if err := write(db, id, uint64(len(part1)), uint64(len(fullData)), part3); err != nil {
492 log.Fatal(err)
493 }
494 fullData = append(fullData, part3...)
495 readData, err = read(db, id, 0, uint64(len(fullData)))
496 if err != nil {
497 log.Fatal(err)
498 }
499 if !bytes.Equal(fullData, readData) {
500 t.Errorf("bytes differ. lengths: %d, expected %d", len(readData), len(fullData))
501 }
502
503 verboseData, err = getAllBlocks(db, id)
504 if err != nil {
505 log.Fatal(err)
506 }
507 if !bytes.Equal(verboseData, fullData) {
508 t.Errorf("bytes differ. lengths: %d, expected %d", len(verboseData), len(fullData))
509 }
510
511 // Now write into the middle of the file.
512 part2 = RandBytes(rng, len(part2))
513 if err := write(db, id, uint64(len(fullData)), uint64(len(part1)), part2); err != nil {
514 log.Fatal(err)
515 }
516 fullData = append(part1, part2...)
517 fullData = append(fullData, part3...)

Callers

nothing calls this directly

Calls 8

FatalFunction · 0.92
FatalfFunction · 0.92
NewPseudoRandFunction · 0.85
RandBytesFunction · 0.85
writeFunction · 0.85
readFunction · 0.85
getAllBlocksFunction · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected