github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/testutil/checksum.go (about) 1 package testutil 2 3 import ( 4 "hash/crc64" 5 "io" 6 ) 7 8 const bufSize = 4 << 16 9 10 var table *crc64.Table = crc64.MakeTable(crc64.ECMA) 11 12 // ChecksumReader returns the checksum (CRC-64) of the contents of reader. 13 func ChecksumReader(reader io.Reader) (uint64, error) { 14 buf := make([]byte, bufSize) 15 var val uint64 16 for { 17 n, err := reader.Read(buf) 18 if err != nil { 19 if err == io.EOF { 20 return val, nil 21 } 22 return val, err 23 } 24 if n == 0 { 25 return val, nil 26 } 27 val = crc64.Update(val, table, buf[:n]) 28 } 29 }