add another test to try and reproduce data loss issue
Jeromy committed
Oct 8, 2014 at 22:38 UTC
38177b489d1139a4f7ad7d5694b58584f031d650
1 file changed
+41
unixfs/io/dagmodifier_test.go
+41
@@ -146,6 +146,47 @@ func TestDagModifierBasic(t *testing.T) {
146
}
147
}
148
149
+func TestMultiWrite(t *testing.T) {
150
+ dserv := getMockDagServ(t)
151
+ _, n := getNode(t, dserv, 0)
152
+
153
+ dagmod, err := NewDagModifier(n, dserv, &chunk.SizeSplitter{512})
154
+ if err != nil {
155
+ t.Fatal(err)
156
+ }
157
+
158
+ data := make([]byte, 4000)
159
+ u.NewFastRand().Read(data)
160
+
161
+ for i := 0; i < len(data); i++ {
162
+ n, err := dagmod.WriteAt(data[i:i+1], uint64(i))
163
+ if err != nil {
164
+ t.Fatal(err)
165
+ }
166
+ if n != 1 {
167
+ t.Fatal("Somehow wrote the wrong number of bytes! (n != 1)")
168
+ }
169
+ }
170
+ nd, err := dagmod.GetNode()
171
+ if err != nil {
172
+ t.Fatal(err)
173
+ }
174
+
175
+ read, err := NewDagReader(nd, dserv)
176
+ if err != nil {
177
+ t.Fatal(err)
178
+ }
179
+ rbuf, err := ioutil.ReadAll(read)
180
+ if err != nil {
181
+ t.Fatal(err)
182
+ }
183
+
184
+ err = arrComp(rbuf, data)
185
+ if err != nil {
186
+ t.Fatal(err)
187
+ }
188
+}
189
+
190
func arrComp(a, b []byte) error {
191
if len(a) != len(b) {
192
return fmt.Errorf("Arrays differ in length. %d != %d", len(a), len(b))