@@ -2,7 +2,6 @@ package chunk
2
2
3
3
import (
4
4
"bytes"
5
- "fmt"
6
5
"io"
7
6
"testing"
8
7
@@ -11,33 +10,48 @@ import (
11
10
12
11
func TestBuzhashChunking (t * testing.T ) {
13
12
data := make ([]byte , 1024 * 1024 * 16 )
14
- util .NewTimeSeededRand ().Read (data )
15
13
16
- r := NewBuzhash (bytes .NewReader (data ))
14
+ chunkCount := 0
15
+ rounds := 100
17
16
18
- var chunks [][]byte
17
+ for i := 0 ; i < rounds ; i ++ {
18
+ util .NewTimeSeededRand ().Read (data )
19
19
20
- for {
21
- chunk , err := r .NextBytes ()
22
- if err != nil {
23
- if err == io .EOF {
24
- break
20
+ r := NewBuzhash (bytes .NewReader (data ))
21
+
22
+ var chunks [][]byte
23
+
24
+ for {
25
+ chunk , err := r .NextBytes ()
26
+ if err != nil {
27
+ if err == io .EOF {
28
+ break
29
+ }
30
+ t .Fatal (err )
25
31
}
26
- t .Fatal (err )
32
+
33
+ chunks = append (chunks , chunk )
27
34
}
35
+ chunkCount += len (chunks )
28
36
29
- chunks = append (chunks , chunk )
30
- }
37
+ for i , chunk := range chunks {
38
+ if len (chunk ) == 0 {
39
+ t .Fatalf ("chunk %d/%d is empty" , i + 1 , len (chunks ))
40
+ }
41
+ }
31
42
32
- t .Logf ("average block size: %d\n " , len (data )/ len (chunks ))
43
+ for i , chunk := range chunks [:len (chunks )- 1 ] {
44
+ if len (chunk ) < buzMin {
45
+ t .Fatalf ("chunk %d/%d is less than the minimum size" , i + 1 , len (chunks ))
46
+ }
47
+ }
33
48
34
- unchunked := bytes .Join (chunks , nil )
35
- if ! bytes .Equal (unchunked , data ) {
36
- fmt .Printf ("%d %d\n " , len (unchunked ), len (data ))
37
- //ioutil.WriteFile("./incorrect", unchunked, 0777)
38
- //ioutil.WriteFile("./correct", data, 0777)
39
- t .Fatal ("data was chunked incorrectly" )
49
+ unchunked := bytes .Join (chunks , nil )
50
+ if ! bytes .Equal (unchunked , data ) {
51
+ t .Fatal ("data was chunked incorrectly" )
52
+ }
40
53
}
54
+ t .Logf ("average block size: %d\n " , len (data )* rounds / chunkCount )
41
55
}
42
56
43
57
func TestBuzhashChunkReuse (t * testing.T ) {
0 commit comments