add test for deletes
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Jan 25, 2017 at 12:20 UTC
c18ec9824eadbc6ea8ad4e9804868430fb644710
1 file changed
+60
filestore/filestore_test.go
+60
@@ -102,3 +102,63 @@ func TestBasicFilestore(t *testing.T) {
102
}
103
}
104
}
105
+
106
+func randomFileAdd(t *testing.T, fs *Filestore, dir string, size int) (string, []*cid.Cid) {
107
+ buf := make([]byte, size)
108
+ rand.Read(buf)
109
+
110
+ fname, err := makeFile(dir, buf)
111
+ if err != nil {
112
+ t.Fatal(err)
113
+ }
114
+
115
+ var out []*cid.Cid
116
+ for i := 0; i < size/10; i++ {
117
+ n := &posinfo.FilestoreNode{
118
+ PosInfo: &posinfo.PosInfo{
119
+ FullPath: fname,
120
+ Offset: uint64(i * 10),
121
+ },
122
+ Node: dag.NewRawNode(buf[i*10 : (i+1)*10]),
123
+ }
124
+ err := fs.Put(n)
125
+ if err != nil {
126
+ t.Fatal(err)
127
+ }
128
+ out = append(out, n.Cid())
129
+ }
130
+
131
+ return fname, out
132
+}
133
+
134
+func TestDeletes(t *testing.T) {
135
+ dir, fs := newTestFilestore(t)
136
+ _, cids := randomFileAdd(t, fs, dir, 100)
137
+ todelete := cids[:4]
138
+ for _, c := range todelete {
139
+ err := fs.DeleteBlock(c)
140
+ if err != nil {
141
+ t.Fatal(err)
142
+ }
143
+ }
144
+
145
+ deleted := make(map[string]bool)
146
+ for _, c := range todelete {
147
+ _, err := fs.Get(c)
148
+ if err != blockstore.ErrNotFound {
149
+ t.Fatal("expected blockstore not found error")
150
+ }
151
+ deleted[c.KeyString()] = true
152
+ }
153
+
154
+ keys, err := fs.AllKeysChan(context.Background())
155
+ if err != nil {
156
+ t.Fatal(err)
157
+ }
158
+
159
+ for c := range keys {
160
+ if deleted[c.KeyString()] {
161
+ t.Fatal("shouldnt have reference to this key anymore")
162
+ }
163
+ }
164
+}