MCPcopy Create free account
hub / github.com/cph6/zsync / MakeZsyncControl

Function MakeZsyncControl

syncer_test.go:38–64  ·  view source on GitHub ↗
(data [][]byte)

Source from the content-addressed store, hash-verified

36}
37
38func MakeZsyncControl(data [][]byte) bytes.Buffer {
39 blocksize := len(data[0])
40
41 // Build control file: headers then binary checksums
42 var buf bytes.Buffer
43 buf.WriteString("zsync: 0.7.0\n")
44 fmt.Fprintf(&buf, "Length: %d\n", (len(data)-1)*blocksize+len(data[len(data)-1]))
45 fmt.Fprintf(&buf, "Blocksize: %d\n", blocksize)
46 buf.WriteString("Hash-Lengths: 1,4,16\n")
47 buf.WriteString("Filename: testfile\n")
48 buf.WriteString("URL: http://example.com/foo\n")
49 buf.WriteString("\n")
50
51 for _, d := range data {
52 // compute rsum and md4
53 rsum := rcksum.CalcRsumBlock(d)
54 md4sum := rcksum.CalcChecksum(d)
55
56 // write rsum as big-endian two uint16
57 var rsumBuf [4]byte
58 binary.Encode(rsumBuf[:4], binary.BigEndian, rsum)
59 buf.Write(rsumBuf[:4])
60 // write md4
61 buf.Write(md4sum[:])
62 }
63 return buf
64}
65
66// TestNewAndEnd verifies that zsync.New can parse a minimal control file
67// and that End closes the temporary file.

Callers 2

TestNewAndEndFunction · 0.85
TestFetchRemainingBlocksFunction · 0.85

Calls 2

CalcRsumBlockFunction · 0.92
CalcChecksumFunction · 0.92

Tested by

no test coverage detected