@cryptotaxi247 / kubo / commits / dea8c4d70

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())