mfs: add test case for MFS repeated truncation failure
License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>
Lucas Molas committed
Jul 11, 2018 at 12:36 UTC
508af1e12c72ef5ad8d3f8757a0db4667e9197b0
1 file changed
+40
mfs/mfs_test.go
+40
@@ -1136,3 +1136,43 @@ func TestTruncateAtSize(t *testing.T) {
1136
}
1137
fd.Truncate(4)
1138
}
1139
+
1140
+func TestTruncateAndWrite(t *testing.T) {
1141
+ ctx, cancel := context.WithCancel(context.Background())
1142
+ defer cancel()
1143
+ ds, rt := setupRoot(ctx, t)
1144
+
1145
+ dir := rt.GetDirectory()
1146
+
1147
+ nd := dag.NodeWithData(ft.FilePBData(nil, 0))
1148
+ fi, err := NewFile("test", nd, dir, ds)
1149
+ if err != nil {
1150
+ t.Fatal(err)
1151
+ }
1152
+
1153
+ fd, err := fi.Open(OpenReadWrite, true)
1154
+ defer fd.Close()
1155
+ if err != nil {
1156
+ t.Fatal(err)
1157
+ }
1158
+ for i := 0; i < 200; i++ {
1159
+ err = fd.Truncate(0)
1160
+ if err != nil {
1161
+ t.Fatal(err)
1162
+ }
1163
+ l, err := fd.Write([]byte("test"))
1164
+ if err != nil {
1165
+ t.Fatal(err)
1166
+ }
1167
+ if l != len("test") {
1168
+ t.Fatal("incorrect write length")
1169
+ }
1170
+ data, err := ioutil.ReadAll(fd)
1171
+ if err != nil {
1172
+ t.Fatal(err)
1173
+ }
1174
+ if string(data) != "test" {
1175
+ t.Errorf("read error at read %d, read: %v", i, data)
1176
+ }
1177
+ }
1178
+}