test dag reader context cancellation
License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Jun 27, 2018 at 17:51 UTC
5c0dc6a968b21dbc8975b4f0e0d797c76be22fa6
1 file changed
+35
unixfs/io/dagreader_test.go
+35
@@ -122,6 +122,41 @@ func TestSeekAndReadLarge(t *testing.T) {
122
}
123
}
124
125
+func TestReadAndCancel(t *testing.T) {
126
+ dserv := testu.GetDAGServ()
127
+ inbuf := make([]byte, 20000)
128
+ rand.Read(inbuf)
129
+
130
+ node := testu.GetNode(t, dserv, inbuf, testu.UseProtoBufLeaves)
131
+ ctx, closer := context.WithCancel(context.Background())
132
+ defer closer()
133
+
134
+ reader, err := NewDagReader(ctx, node, dserv)
135
+ if err != nil {
136
+ t.Fatal(err)
137
+ }
138
+
139
+ ctx, cancel := context.WithCancel(context.Background())
140
+ buf := make([]byte, 100)
141
+ _, err = reader.CtxReadFull(ctx, buf)
142
+ if err != nil {
143
+ t.Fatal(err)
144
+ }
145
+ if !bytes.Equal(buf, inbuf[0:100]) {
146
+ t.Fatal("read failed")
147
+ }
148
+ cancel()
149
+
150
+ b, err := ioutil.ReadAll(reader)
151
+ if err != nil {
152
+ t.Fatal(err)
153
+ }
154
+
155
+ if !bytes.Equal(inbuf[100:], b) {
156
+ t.Fatal("buffers not equal")
157
+ }
158
+}
159
+
160
func TestRelativeSeek(t *testing.T) {
161
dserv := testu.GetDAGServ()
162
ctx, closer := context.WithCancel(context.Background())