Skip to content

Commit c7a3c2b

Browse files
committed
test promised don't get allocated where not wanted
License: MIT Signed-off-by: Jeromy <[email protected]>
1 parent 092df58 commit c7a3c2b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

unixfs/io/dagreader_test.go

+39
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"io"
66
"io/ioutil"
7+
"math/rand"
78
"strings"
89
"testing"
910

@@ -72,6 +73,44 @@ func TestSeekAndRead(t *testing.T) {
7273
}
7374
}
7475

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+
if pbdr.promises[0] != nil {
107+
t.Fatal("memory that was seeked past shouldnt get allocated")
108+
}
109+
if pbdr.promises[len(pbdr.promises)-1] != nil {
110+
t.Fatal("nodes past the buffering limit shouldnt be allocated")
111+
}
112+
}
113+
75114
func TestRelativeSeek(t *testing.T) {
76115
dserv := testu.GetDAGServ()
77116
ctx, closer := context.WithCancel(context.Background())

0 commit comments

Comments
 (0)