test promised don't get allocated where not wanted
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Dec 31, 2017 at 15:15 UTC
dea8c4d70bc6cb1bae8e7faff5e675e828af5bd2
1 file changed
+50
unixfs/io/dagreader_test.go
+50
@@ -4,6 +4,7 @@ import (
4
"bytes"
5
"io"
6
"io/ioutil"
7
+ "math/rand"
8
"strings"
9
"testing"
10
@@ -72,6 +73,55 @@ func TestSeekAndRead(t *testing.T) {
73
}
74
}
75
76
+func TestSeekAndReadLarge(t *testing.T) {
77
+ dserv := testu.GetDAGServ()
78
+ inbuf := make([]byte, 20000)
79
+ rand.Read(inbuf)
80
+
81
+ node := testu.GetNode(t, dserv, inbuf, testu.UseProtoBufLeaves)
82
+ ctx, closer := context.WithCancel(context.Background())
83
+ defer closer()
84
+
85
+ reader, err := NewDagReader(ctx, node, dserv)
86
+ if err != nil {
87
+ t.Fatal(err)
88
+ }
89
+
90
+ _, err = reader.Seek(10000, io.SeekStart)
91
+ if err != nil {
92
+ t.Fatal(err)
93
+ }
94
+
95
+ buf := make([]byte, 100)
96
+ _, err = io.ReadFull(reader, buf)
97
+ if err != nil {
98
+ t.Fatal(err)
99
+ }
100
+
101
+ if !bytes.Equal(buf, inbuf[10000:10100]) {
102
+ t.Fatal("seeked read failed")
103
+ }
104
+
105
+ pbdr := reader.(*pbDagReader)
106
+ var count int
107
+ for i, p := range pbdr.promises {
108
+ if i > 20 && i < 30 {
109
+ if p == nil {
110
+ t.Fatal("expected index to be not nil: ", i)
111
+ }
112
+ count++
113
+ } else {
114
+ if p != nil {
115
+ t.Fatal("expected index to be nil: ", i)
116
+ }
117
+ }
118
+ }
119
+ // -1 because we read some and it cleared one
120
+ if count != preloadSize-1 {
121
+ t.Fatalf("expected %d preloaded promises, got %d", preloadSize-1, count)
122
+ }
123
+}
124
+
125
func TestRelativeSeek(t *testing.T) {
126
dserv := testu.GetDAGServ()
127
ctx, closer := context.WithCancel(context.Background())